MariaDBクラスターは、MariaDBサーバー、MySQL wsrepパッチ、およびGalerawsrepプロバイダーから構築されたマルチマスターレプリケーションシステムです。
Galeraは、同期(または「仮想同期」)レプリケーション方式に基づいており、データがコミットされる前に他のノードに確実に適用されます。すべてのノードに同じデータがあるということは、ノードの障害に簡単に耐えることができ、データが失われることがないことを意味します。また、すべてのノードが同じデータで最新であるため、別のノードへのフェイルオーバーも簡単です。 MariaDBクラスターは、厳密なデータベースサービスレベル契約を結んでいる組織で高い稼働時間を実現できる高可用性ソリューションであると言っても過言ではありません。
高可用性の管理に加えて、データベースサービスを拡張し、サービスを複数のリージョンに拡張するためにも使用できます。
MariaDBクラスターのデプロイ
ClusterControlのMariaDBクラスターは非常に単純で、無料で使用できるCommunityEditionで利用できます。 「Deploy」を実行し、以下に示すようにMySQLGaleraを選択できます。

SSHユーザーと資格情報、使用するクラスター名を入力します次に続行します。

インストールするデータベースのベンダーとしてMariaDBを選択します。サーバーデータディレクトリ、サーバーポートは、特定の構成を定義しない限り、デフォルトの構成を使用できます。管理者/ルートデータベースのパスワードを入力し、最後にノードを追加して、データベースノードのターゲットIPアドレスを追加します。
ガレラノードには少なくとも3つのノードが必要です。または、2つのデータベースノードと別のホストで構成されたガレラアービターを使用できます。
すべてのフィールドに入力したら、クラスターをデプロイするだけです。以下に示すように、クラスターを作成するための新しいジョブがトリガーされます。

Maxscaleは、アプリケーションとMariaDBノードの間に位置するデータベースロードバランサー、データベースプロキシ、およびファイアウォールです。 Maxscaleの機能の一部は次のとおりです:
- トラフィックの負荷分散(読み取りと書き込みの分割)
ロードバランサーの導入には2つの方法があり、以下に示すように、クラスターメニューで「ロードバランサーを追加」できます。

または、[管理]->[ロードバランサー]に移動できます。同じページ、つまりロードバランサーページに移動します。 Maxscaleロードバランサーをデプロイするための「Maxscaleタブ」を選択します。


サーバーアドレスを選択し、maxscaleのユーザー名とパスワードを定義します。スレッドと読み取り/書き込みポートのデフォルト構成。ロードバランサーに追加するMariaDBノードも含めます。 MaxScaleデータベースプロキシと負荷分散を展開するために「MaxScaleを展開」できます。
ロードバランサーの高可用性を実現するためのベストプラクティスは、異なるホストに少なくとも2つのMaxScaleインスタンスを設定することです。
キープアライブ展開
Keepalivedは、ヘルスチェックに使用されるLinuxのデーモンサービスであり、サーバーの1つがダウンした場合のフェイルオーバーにも使用されます。このメカニズムは、VIP(仮想IPアドレス)を使用して高可用性を実現し、一方のサーバーがマスターとして機能し、もう一方のサーバーがバックアップとして機能します。
キープアライブの導入は、[管理]->[ロードバランサー]で実行できます。

ロードバランサーのタイプであるMaxScaleを選択してください。現在、ClusterControlは、Keepalivedと統合できるロードバランサーとしてHAProxy、ProxySQL、およびMaxScaleをサポートしています。仮想IPアドレスの仮想IP(VIP)とネットワークインターフェイスを定義します。
その後、[キープアライブの展開]をクリックするだけです。両方のMaxScaleホストにKeepalivedをデプロイするための新しいジョブがトリガーされます。

高可用性のためのMariaDBクラスターの最終的なアーキテクチャは、3つのデータベースノードで構成されています。以下のトポロジに示すように、2つのロードバランサーノードと、各ロードバランサーの上部にあるキープアライブサービス:

ClusterControlを介してMaxScaleとKeepalivedを使用して高可用性MariaDBクラスターを迅速にデプロイする方法を示しました。データベースノードとプロキシノードの設定を行いました。 Galera Clusterの詳細については、オンラインチュートリアルをご覧ください。 ClusterControlは、ProxySQLやHAProxyなどの他のロードバランサーもサポートしていることに注意してください。これらを試してみて、ご不明な点がありましたらお知らせください。