導入の経緯
Percona XtraDB Cluster導入以前、Yahoo! JAPANのMySQL運用における課題は大きく3つありました。
1. サーバ提供時間の短縮
Yahoo! JAPANではサービスの利用者(社内)からDBの利用希望を受け、私達DB専門のチームがDBインフラを提供するという体制をとっています。社内全体でOpenStackを使ったインフラの仮想化(基盤化)を推進される一方、DBについては手動でセットアップしてDBサーバ(構成はほぼ一律)を提供していたため、DBの提供に最長1週間かかっていました。そのため、サーバ提供時間を短縮したいという希望がありました。
2. DBの運用効率の改善
従来のMySQLを使用したActive-Standby構成では、脆弱性対応にメンテナンスとしてDBを停止させる必要があります。このため、利用者側への調整や準備も含めてメンテナンスに約1ヶ月の期間がかかっていました。サーバのリプレース作業においてもサーバごとにメンテナンスが必要であるため、最新状態での常時稼動が求められるDBの運用において高い作業稼動負荷がかかっていました。
3. 一部のDBに高負荷がかかった際のリソースの競合
以前のシステムでは、複数のDBが1台のサーバに同居する構成となっていました。この構成では、一部のDBに高い負荷がかかった場合、リソースが競合し、他のDBのパフォーマンスに影響を与えてしまっていました。
以上3点の課題を解決するため、Yahoo! JAPAN内で使用しているOpenStackと連携が可能なPercona XtraDB Clusterの導入を検討することになりました。
対象システム
今回は、MySQLを使用しているシステムを対象にPercona XtraDB Clusterへの移行を実施しました。例えば、乗換案内やショッピング関連サービスの一部、社内のデプロイツールが該当します。その他600を超えるデータベースに関して、移行が可能なものは随時MySQLからPercona XtraDB Clusterへの移行を進めています。
システム構成
Percona XtraDB Clusterの構成に関しては、3ノードのマルチマスタ構成(Active-Active)、Ver5.7を使用しています。ノードを増やしての処理分散も可能ですが、パフォーマンス低下の懸念があるため、パフォーマンスを上げたい場合は基本的にVMリソースを多めに割り当てる対応にしています。導入して間もないため、最大10GB程度のサービスのデータしか移行していませんが、今後移行を予定しているデータの中には2TBのものもあります。
また、一部システムでは物理的に距離が離れた3拠点で各ノードを分散配置しDR(ディザスタリカバリ)構成の利用も行っています。
導入メリット
提供時間
Percona XtraDB ClusterとOpenStackを連携させることによって、今まで手動で行っていた構築作業を、利用者がボタン1つクリックするだけでDBサーバを準備できるようになりました。これにより1週間ほどかかっていた提供時間が、約10分に短縮されました。
運用・監視
メンテナンスを行う際、従来のActive- Standby構成だとDBを停止させて行う必要があったため、利用者側への調整や準備も含めて約1ヶ月の期間を要していました。Percona XtraDB Cluster導入後はActive-Activeの構成に変更され、動的にノードの追加/削除が可能になったことにより、3台のうち1台を外してメンテナンスを行えるようになり、サーバを停止させることなく自由にメンテナンスができるようになりました。
既存サーバのリプレース作業に関しても、以前はサーバごとにメンテナンスを行っていましたが、現在では新サーバをClusterに追加しデータの自動同期が完了した段階で、旧サーバごと破棄する対応に変更しました。同じサーバを長期間使用していると、知らない間にデータの不整合などが発生することがありますが、サーバ全体をリプレースする運用に変更することよって、常に最新の「データ」「バージョン」を数百台のサーバで保つことが可能となります。
また、自由にサーバの入れ替えが出来るようになったため、問題が発生しても容易に切り戻しが可能になり、最新技術の検証・導入にも積極的に取り組むことが出来るようになりました。加えて、DBを取り巻く環境(WEBサーバやスイッチ等)のメンテナンスも楽になり、インフラ全体のライフサイクルが向上しました。
さらに、監視においてもレプリケーション遅延を気にする必要がなくなったため、運用効率が大幅に上がりました。
負荷分散
OpenStackとPercona XtraDB Clusterを連携させることでDBの仮想化を実現し、DBを1台のサーバに同居させることなく明確に分離させました。これにより、リソースの競合によるパフォーマンスの悪化を解決できました。全体的なパフォーマンスについても、現時点では満足しています。
可用性
今までは、サーバがダウンした際、フェイルオーバーで別のサーバに切り替えを行っていたため、数分のダウンタイムが発生していました。Percona XtraDB Clusterの導入でActive-Active構成に変更されたことにより、障害時にフェイルオーバーが起きなくなったため、ダウンタイムのない状態に近づけることができました。
コスト
運用コストという点においては、導入前と比べてサーバ増加に伴う費用曲線の傾きがとてもなだらかになりました。また、古いサーバをいつまでもリプレースできずデータセンターの効率を悪化させていた問題を解消できたことで、将来的にかかる管理コストも抑えることができました。
注意点・デメリット
導入時の注意点としては、Percona XtraDB Cluster独自の仕様やロックの挙動の確認、ロードバランサをどのようにActive-Standby/Active-Activeにするのかなどに注意して検証を行いました。
監視においても、利用者が従来のMySQLと同様に使えるよう、ロックの挙動やGalera Cluster特有のステータスなどの細かい挙動を注意して監視するようにしています。
また、Readのパフォーマンスは上がりましたが、Writeに関しては以前より少し下がりました。しかし、Percona XtraDB Clusterでカバーしようと考えている範囲に限れば、細かな設定やコンテンツなどのデータが対象となり、高いパフォーマンスが求められるものではないので問題になるような影響はありません。
スマートスタイルのサポートについて
スマートスタイル社のサポートの利用シーンとしては、主に細かい挙動やその部分の監視など、詳細な部分を知りたい時にサポートを使うことが多いです。他にも、例えばアラート(エラー)が発生し事象を解決した場合でも、同様のアラートが再び発生した時の対応や、問題の発生を防ぐ根本的な対応のための手がかりとしてサポートをお願いすることもあります。
レスポンスも早く、回答内容に関しても細かく調査されているため満足しています。
導入後の感想
Percona XtraDB Clusterを導入から現在までクリティカルな障害の発生もなく安定した運用ができており、「運用効率の改善」や「提供時間の圧縮」などの抱えていた課題をまとめて解決できたことは大きな導入メリットだと感じています。
運用効率が上がったおかげで、一人あたりが管理できるDBの数は大幅に増え、Yahoo! JAPAN全体でもMySQLデータベースの利用が促進されました。今後も、データの活用が推進され更に高いレベルでのインフラ強化を求められることが予想されるので、引き続き改善を進めていきたいと思います。