sql >> データベース >  >> RDS >> Mysql

高可用性のためにChamiloMySQLデータベースをデプロイする方法

    Chamiloは、Open edXやMoodleと同様に、教育機関が教育活動をインターネットに転送できるようにするプラットフォームです。昨年、教育活動の大部分がオンラインに移行したことを考えると、教育プラットフォームのスケールアウトと可用性の向上に苦労する人々が増えているのは当然のことです。

    Chamiloは、Apache、MySQL、およびPHPで構成される*AMPスタック上に構築されたプラットフォームです。いつものように、データベースは高可用性環境に移行するのが最も難しい要素です。この短いブログでは、Chamiloデータベースの高可用性を向上させる方法について説明します。

    ご想像のとおり、単一のMySQLデータベースは単一障害点であるため、実稼働環境では回避する必要があります。幸い、MySQLデータベースの可用性を向上させる方法はいくつかあります。

    問題に取り組む方法の1つは、GaleraClusterを使用することです。最小限の展開は3つのノードで構成する必要があります。このようなクラスターは、単一ノードの障害を自動的に処理できます。残りの2つのノードは引き続き機能し、アプリケーションからのクエリに応答します。

    このセットアップでは、Galeraクラスターの前にある種のロードバランサーが必要になります。その仕事は、トラフィックを処理し、適切な宛先にリダイレクトすることです。

    ClusterControlが、Chamiloプラットフォームに使用できる一連のロードバランサーを使用してGaleraクラスターをデプロイするのにどのように役立つかを見てみましょう。

    MariaDBクラスターのデプロイ

    今回は、MariaDBクラスターをバックエンドとして使用してみます。 Chamiloは、MySQL5.6以降またはMariaDB5.5以降をサポートします。最初のステップとして、ウィザードから「デプロイ」を選択する必要があります:

    これを行ったら、SSH接続、パスワードなし、キーを定義する必要がありますClusterControlの要件はSSHベースのアクセスです。そうでない場合、データベースインフラストラクチャを管理できません。SSH接続に依存して、サービスの開始または停止、ソフトウェアのインストールなどのコマンドを実行します。

    次に、ベンダー、バージョン、パスワード、ホストなどを決定する必要があります追加設定:

    これらすべての詳細が入力されたら、展開を続行できます。

    ProxySQLの導入

    前述したように、展開する要素はデータベース自体だけではありません。ノードの1つに障害が発生した場合にトラフィックを移動するために使用する、ロードバランサーを使用できます。また、これを使用して読み取り/書き込み分割を提供し、すべての書き込みを単一のMariaDB Galeraノードに転送し、残りのMariaDB Galeraノード間で読み取りを分割します。これにより、異なるGaleraノードで実行される書き込み間の競合を回避できます。

    >

    ProxySQLの場合、ClusterControlにもいくつかの情報を入力する必要があります。インストールするホスト、ProxySQLのバージョン、管理ユーザーと監視ユーザーの資格情報を決定します。これらのユーザーは、ProxySQLを管理し、Galeraクラスターの状態を監視するために使用されます。また、既存のデータベースユーザーをインポートするか、アプリケーション用に新しいデータベースユーザーを作成する必要があります。最後に、ProxySQLで使用するデータベースノードを決定し、暗黙的なトランザクションを使用するかどうかを決定するのはあなた次第です。

    キープアライブの展開

    ProxySQLは、クラスターノード間でトラフィックを分散するのに最適です。一方、単一のProxySQLノードは単一障害点として機能します。したがって、少なくとも2つを展開する必要があります。次に、問題は、ProxySQLノードの障害を検出する方法と、トラフィックを正常なProxySQLに移動する方法です。キープアライブが登場します。ここでの考え方は、動作中のProxySQLインスタンスを指す仮想IPを用意することです。このようなVIPは、MySQLデータベース接続のエンドポイントとしてアプリケーションで使用できるため、アプリケーションが常に正常なProxySQLにヒットし、トラフィックが正常なクラスターノードに到達することが保証されます。

    監視する必要のあるProxySQLインスタンス、仮想IP、インターフェイスVIPは、デプロイする準備ができていることにバインドする必要があります。数分後、すべての準備が整い、トポロジは次のようになります。

    これで、構築していた環境について説明します。 ChamiloをVIPとポート6033に向けることができます。これは、バックエンドデータベースへの接続を取得するのに十分なはずです。失効した読み取りに関連する問題が発生した場合(書き込みが1つのノードにヒットし、Chamiloが別のノードからの読み取りを試みる場合、Galeraクラスターで因果関係チェックを有効にすることを検討できます。複数のアクセスでテストを有効にできるwsrep_sync_wait変数があります。パターン:読み取り、更新、挿入、削除、置換、およびSHOWコマンド。SELECTクエリのみに関心がある場合は、ClusterControl構成管理を使用してこの変数を「1」に設定します。

    これにより、すべてのMariaDBクラスターノードでこの変更が実行されます。

    これでほぼ完了です。 Chamiloでの経験を共有したい場合は、コメントを残してください。


    1. SQLServerにログインできません+SQLServer認証+エラー:18456

    2. SQLでグループごとに増分グループ番号を返す方法

    3. MySQLでクエリ結果をコンマ区切りリストとして返す方法

    4. それぞれが外部キーである要素のPostgreSQL配列