OrchestratorをつかったMySQLの冗長構成の実現
技術本部 サービスリライアビリティグループ(SRG)の鬼海(@fat47)です。
#SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。
なにかの役に立てば幸いです。
はじめにOrchestratorとはOrchestratorのセットアップ検証用環境Orc-adm(管理サーバ)で作業管理対象のDBサーバで作業Orc-adm(管理サーバ)で作業管理GUIでクラスターの登録作業終わりに
はじめに
MySQLをレプリケーション構成で利用する際、ソース(マスター)DBが何かしらの障害でダウンした時の冗長性について考える必要があります。
ダウンを検知してレプリカ(スレーブ)が自動昇格する仕組みを実現する必要があるのですが、
昔からよくMySQL MHAが利用されてきました。
MHAも現役で利用されているものではありますが、MySQL MHA 0.58(2018年リリース)を最後にリリースはされていない状態です。
そこでMySQL MHAと同様の機能を実現でき、定期的にリリースがなされているOrchestratorをご紹介させていただきます。
Orchestratorとは
MySQLの高可用性およびレプリケーション構成を管理するツールで、レプリケーションのビジュアライズやスレーブの付け替え、自動フェイルオーバーなどの機能があります。
Shlomi Noach氏が開発しており、GithubやBooking.comでも利用されているプロダクトになります。
MySQL MHAと比較したときに以下のような優位性があります。
- GUIで視覚的にレプリケーションの状態確認やフェイルオーバーの実行ができる
- DB側にMHA nodeのようなAgentが不要
- ソース(マスター)を登録するだけで管理対象を自動追加
- GUIに加えてCLIやHTTP APIがある
- フェイルオーバー発生後に再設定が不要。MHAは再度プロセスを立ち上げる必要があった
Orchestratorのセットアップ
検証用環境
ホスト名 | 役割 |
DB1 | DBソース |
DB2 | DBレプリカ |
DB3 | DBレプリカ |
Orc-adm | Orchesrator管理サーバ |
Orc-adm(管理サーバ)で作業
Orchestratorのインストール
インストールスクリプトの実行
もしくは手動でこのように入れることも可能です。
管理用MySQLのインストール
OrchestratorではバックエンドのMySQLかSQLiteが必要です。
このバックエンドも冗長化することができますが、ここでは単構成にします。
管理用MySQLにOrchestraorが使うスキーマとユーザを作成
Orchestrator設定ファイル作成
以下の項目を編集します
PostMasterFailoverProcessesはフェイルオーバーが発生するときにキックされるスクリプトです。ここでマスターのIPを切り替える処理を記述します。
サンプルとして以下を掲示します。
ただIPをつけ外ししているだけのスクリプトです。
管理対象のDBサーバで作業
管理対象となるDB1,DB2,DB3でそれぞれ作業をしてきます。
DB1をソースとして、DB2,DB3をレプリカでレプリケーションを設定しておいてください。
このとき、レプリカが昇格できるようにの有効化は必須となります。
GTIDは有効でも無効でもどちらでも対応可能です。
つづいて、Orchestraratorから監視できるMySQLユーザを作成します。
ソース(DB1)でクエリを実行します。
Orc-adm(管理サーバ)で作業
Orchestratorを起動します。
管理GUIでクラスターの登録作業
CLIでクラスターを追加することもできますが、せっかくなのでGUIを使ってみます。
起動が完了したらブラウザから以下のURLを開きます。
http://【Orc-admのIP】:3000
このようが画面が表示されたら、続いて管理するクラスターを登録します。
「Clusters」→「Discover」を選択します。
ソースDB(DB1)のIPアドレスとMySQLポートの番号を入力し、「Submit」を押します。
登録できたら、「Clusters」→「Dashboard」でダッシュボードに戻ります。
すると、先ほど登録したDB1と、それに紐づくレプリカのDB2,DB3が表示されました。
これでOrchesratorのセットアップは完了です。
このあとはフェイルオーバーが実際に成功できるかなどを検証しましょう。
終わりに
MySQLの利用は冗長性を担保した構成を考えることが必須となります。
このOrchestratorはバックエンドにMySQLが必要だったり、複雑な機能も多数備わっているので、導入時は少し大変かもしれませんが、シンプルに使う分にはMHAとさほど手間は変わらないと思うので積極的に利用していきたいです。
今回紹介したMHAやOrchesratorの他にも、MySQL公式で利用できるInnoDB Clusterという仕組みもあるので、いつかご紹介できたらと思います。
SRG では一緒に働く仲間を募集しています。
ご興味ありましたらぜひこちらからご連絡ください。