MySQLをチューニング,そしてスケールアップ/スケールアウトへ

第10回(最終回) クラウド環境によるスケールアウト構成

この記事を読むのに必要な時間:およそ 3 分

クラウド環境におけるMySQL

Webシステムから業務システムなど様々な領域でいろいろなクラウド環境の利用が広がっています。クラウド環境でのMySQLは,データベースサービス型クラウドとして提供される形態をはじめ,クラウドサービスの構成情報や認証の管理に利用されるケースやクラウドサービス上でのアプリケーションで利用されるケースなど,多様な導入例が見られます。多くのクラウド関連技術はWebシステムで利用されている技術から発展しており,WebシステムでデファクトスタンダードとなっているMySQLをクラウドでも活用することは自然な流れと言えます。

クラウド環境でMySQLを導入することで,クラウドサービスが持っている構成拡張の機能を利用してスケーラビリティを確保できることもあります。ただしこの場合でも動的に追加されたMySQLサーバに対するアプリケーションからのアクセス方法の定義などが課題なり得ます。MySQL開発チームではMySQL Fabricを提供することで,データを分割して管理するシャーディング構成の動的な拡張とアプリケーションからのアクセス先の管理,さらにはOpenStackとの連携を実現しています。

パブリッククラウドのDBaaS

データベース機能を提供するクラウドサービスはDBaaS(DataBase as a Service)と呼ばれています。代表的な例はAmazon Web Services(AWS)のRelational Database Service(RDS)やGoogle Cloud SQL,HP Helion Public Cloud Relational Databaseなどがあります。MySQLをベースにしたデータベースサービスとしてそれぞれビジネスが開始され,現在のAmazon RDSでは他のデータベースも利用可能となっています。さらにAmazon RDS for AuroraなどもMySQLと互換性のあるサービスとして提供される模様です(2015年6月現在はプレビュー扱い)⁠

一般的にこれらのDBaaSはMySQLを元に構成されていてアプリケーションの観点では互換性が保たれていますが,データベース管理者として構成,運用や設定について全ての機能が利用できる訳ではありません。たとえばAmazon RDSではMySQL 5.6で導入されたグローバルトランザクションIDやトランスポータブルテーブルスペース,またセキュリティを強化するプラグインは利用できません。

PaaS上でのMySQLの利用

多くのDBaaSではデータベースファイアウォールのMySQL Enterprise Firewallに代表される,MySQL Enterprise Editionが提供するセキュリティや性能の拡張機能も利用できないことがあります。またMySQLサーバの全ての機能を活用することも制限されていることが多く,さらに基本的にMySQLサーバをベースにして構築されているため,MySQL Clusterによる高い性能拡張性と耐障害性を活用することもできません。これらの機能を利用してより柔軟性のある運用のためには,主に仮想サーバ機能を提供するPaaS(Platform as a Service)上にMySQLを導入することで可能となります。

たとえばオンライン決済サービスのPayPalは,PaaSの一つであるAmazon EC2上にMySQL Clusterを導入して不正取引のリアルタイム検出を行っています。

参考URL
2012年MySQL Connect ConferenceでのPayPal社による発表資料

OpenStackとMySQLの関係

オープンソースベースのクラウド環境実現のためのソフトウェアとしてOpenStackが採用される事例も出てきています。OpenStackの全体構成を司るコントローラのデータベースとしてMySQLが利用されています。このコントローラのデータベースとしては,Novaによるクラウド全体の構成情報やGlanceのイメージ管理情報,Neutronの仮想ネットワーク管理など,あらゆるOpenStackのコンポーネントのメタデータを格納していきます。コントローラのデータベースの高可用性の確保には,同期レプリケーション構成が可能なオープンソースのGalera Clusterを利用することが現時点では一般的です(2015年6月現在)⁠

アクセストークンを蓄積するTroveやリソースの利用状況に応じた課金の仕組みを構築ためのCeilometerを利用する場合などは,メタデータを格納するコントローラのデータベースへ大量の書き込みが行われることが想定されます。その場合,MySQL Clusterを利用することでスケーラビリティを確保することも考えられますが,現時点ではInnoDBストレージエンジンとNDBCLUSTERストレージエンジンの最大レコード長の違いなどによる課題が残っており,OpenStackの各コンポーネントのソースコードを修正するなどの回避策が必要とされています(2015年6月現在)⁠

参考URL
YouTube: 2015 OpenStack Vancouver - Vladislav Belogrudov - High Availability with MySQL Active:Active Cluster

MySQLのレプリケーション機能を応用して,複数のMySQLサーバが全てレプリケーションのマスタサーバとして稼働し,どのサーバで変更した内容も全体に反映されるGroup Replication機能を開発中です。この機能の利用先としてはコントローラのデータベースとしても想定されています。Group Replicationの仕様などはMySQLの高可用性機能開発チームのブログにてタグ付けされてまとめられていますのでご参照ください。

参考URL
MySQL High Availability: Tag Archives: MySQL Group Replication

DBaaSの構築

OpenStackの1コンポーネントであるTroveを利用するとオープンソースのDBaaSを構築可能です。TroveはMySQLのみではなく他のRDBMSやNoSQL製品なども管理でき,複数のノードをまとめて運用することが可能となります。Troveは2014年にリリースされたIcehouseから正式コンポーネントに追加されています。MySQLはTroveのデフォルトのデータベースのような扱いとなっており,インストールやセットアップの手順もまずはMySQLをDBaaSとして稼働する流れとなっています。すでにRackspace Cloud DatabasesやeBayのデータベースでMySQLを始めとした多種のデータ管理製品をTroveにてまとめて運用しています。あらかじめOpenStack Novaのコンピュートノードとデータストアインスタンスの構成を複製してテンプレートを用意しておき,アプリケーション側での用途や利用者の増加に応じて設定を調整して起動することで,システム全体を簡単にスケールさせることを狙いとしています。

著者プロフィール

梶山隆輔

MySQL Sales Consulting Senior Manager。

日本オラクル(株)において,MySQLのお客様環境への導入支援や製品の技術解説を担当するセールスコンサルタントチームのアジア太平洋地域リーダー。多国籍なMySQL部門にて,オーストラリア,インド,台湾などに在籍するチームメンバーを束ね,アジア太平洋地域の25以上の国や地域でのMySQL普及やビジネスの拡大をミッションとする。

コメント

コメントの記入