学習管理システム(LMS)プラットフォームを使用すると、リモートで学習/教育できます。これは、世界中の現在の状況にとって非常に重要なことです。
そうは言っても、この種のプラットフォームでは高可用性が必須であると言えます。そうしないと、必要なときにアクセスできません。
このブログでは、最も人気のあるLMSプラットフォームオプションの1つであるChamiloLMSに使用される高可用性のためにMariaDBデータベースをデプロイする方法を説明します。
Chamiloとは何ですか?
Chamilo LMSは、オンライン教育用に設計され、多くの企業や個人の開発者のコラボレーションを通じて開発された無料の学習管理システム(LMS)です。
教師として、Chamiloを使用すると、効果的な学習環境を作成するための一連の便利なツールにアクセスできます。これらのツールのいくつかは次のとおりです。
- ドキュメント(オーディオ、ビデオ、画像)をインポートまたは作成し、公開します
- wikiを追加して共同でドキュメントを作成します
Chamiloプラットフォームは非常に柔軟性があります。すべてのツールは、各コースのニーズに応じてカスタマイズできます。特別な事前の技術的知識やスキルを必要としない、フレンドリーで直感的なユーザーインターフェイスを提供します。
つまり、問題は、このシステムで使用する高可用性のためにMariaDBデータベースをどのようにデプロイできるかということです。
MariaDBマスタースレーブレプリケーション
非同期または準同期レプリケーションを使用して、マスタースレーブセットアップを実行できます。この単純なオプションの利点は、マスターが使用できない場合でも、スレーブの1つを昇格させて、通常どおりに作業を続行できることです。このセットアップの主な問題は、フェイルオーバーを手動で実行するか、ClusterControlなどの外部ツールを使用して実行する必要があることです。これは、(短い)ダウンタイムが発生することを意味します。これは、ビジネスにとって許容できる場合と許容できない場合があります。
MariaDBクラスター
別のアプローチは、GaleraClusterを使用してChamiloLMSからのデータを保存することです。 3つのノードで使用を開始でき、これらのノードの1つの障害を自動的に処理できます。残りの2つのノードは、Chamiloアプリケーションからの接続の受信を継続して機能します。この場合、ダウンタイムが発生しないことを意味しますが、トポロジがより複雑であるため、このテクノロジーに関する知識がさらに必要になり、ワークロードによっては、最適なオプションとは言えません。
高可用性を向上させるには、どちらのオプションの前にもロードバランサーが必要です。ロードバランサーはトラフィックを処理し、利用可能な/正常なノードにリダイレクトします。
ProxySQLはMySQL専用のロードバランサーであり、クエリリダイレクト、クエリキャッシング、トラフィックシェーピングなどのさまざまな機能を備えています。読み取り/書き込み分割を簡単に設定し、クエリを個別のバックエンドノードにリダイレクトするために使用できます。
HAProxyは、1つの発信元から1つ以上の宛先にトラフィックを分散し、このタスクの特定のルールやプロトコルを定義できるロードバランサーです。いずれかの宛先が応答を停止すると、オフラインとしてマークされ、トラフィックは残りの利用可能な宛先に送信されます。
Keepalivedは、サーバーのアクティブ/パッシブグループ内で仮想IPアドレスを構成できるようにするサービスです。この仮想IPアドレスはアクティブなサーバーに割り当てられます。このサーバーに障害が発生した場合、IPアドレスは自動的に「セカンダリ」パッシブサーバーに移行され、システムに対して透過的な方法で同じIPアドレスを引き続き使用できるようになります。
1つのロードバランサーノードのみを使用すると、トポロジに単一障害点が追加されるため、2つのロードバランサーノードを使用してProxySQL+KeepalivedまたはHAProxy+Keepalivedの組み合わせを使用できます(少なくとも)。それらの間でキープアライブ。
ここで、ClusterControlがMariaDBデータベースのデプロイにどのように役立つかを見てみましょう。 Chamiloアプリケーションで使用するロードバランサーと仮想IPアドレス。
ChamiloMariaDBデータベースのデプロイ
例として、Chamiloアプリケーションで使用されるMariaDBマスタースレーブレプリケーションをデプロイします。このために、ClusterControlを使用して2つのMariaDBデータベースノード(マスタースレーブ)と、キープアライブが構成された2つのHAProxyロードバランサーをデプロイします。
MariaDBデータベースのデプロイ
ClusterControlから展開を実行するには、[展開]オプションを選択し、表示される指示に従います。
MySQLレプリケーションを選択するときは、ユーザー、キー、またはパスワードを指定する必要があります。 SSHでサーバーに接続するためのポート。新しいクラスターの名前を追加したり、ClusterControlに対応するソフトウェアと構成をインストールさせたい場合もあります。
SSHアクセス情報を設定した後、データベースベンダーを選択する必要があります/ versionを指定し、データベースの資格情報、ポート、およびデータディレクトリを定義します。使用するリポジトリを指定することもできます。
次のステップでは、IPアドレスまたはホスト名を使用して作成するクラスターにサーバーを追加する必要があります。
タスクが完了すると、新しいMariaDBクラスターがClusterControlのメイン画面。
これでクラスターが作成されたので、クラスターに対していくつかのタスクを実行できます。ロードバランサーや新しいレプリカを追加するようなものです。
ロードバランサーの展開を実行するには、クラスターアクションで[ロードバランサーの追加]オプションを選択し、要求された情報を入力します。
必要なのは、IPまたはホスト名、ポート、ポリシー、および負荷分散に使用するノード。 2つの異なるポート(読み取り/書き込みと読み取り専用)を使用して展開することも、1つの読み取り/書き込みポートのみを使用してすべてのトラフィックをそこに送信することもできます。
キープアライブ展開を実行するには、クラスターアクションで[ロードバランサーの追加]オプションを選択してから、[キープアライブ]タブに移動します。
ここで、HAProxyノードを選択し、仮想IPアドレスを指定します。データベースへのアクセスに使用されます。
では、この環境をChamiloアプリケーションに接続しましょう。
Chamiloデータベースの構成
Chamiloの展開中に、ステップ4でデータベース構成を追加する必要があります。
ここでは、仮想IPアドレスを使用してMariaDBデータベースにアクセスする必要があります。データベースの資格情報。
Chamilo構成の詳細については、公式ドキュメントを参照してください。
以上です!高可用性を備えたMariaDBデータベースを使用したChamiloアプリケーションがあります。
ClusterControl自動回復機能
障害が発生した場合、ClusterControlは、最も高度なスレーブノードをマスターに昇格させ、問題を通知します。また、残りのスレーブノードをフェイルオーバーして、新しいマスターサーバーから複製します。
デフォルトでは、HAProxyは読み取り/書き込みと読み取り専用の2つの異なるポートで構成されています。読み取り/書き込みポートでは、マスターノードがオンラインで、残りのノードがオフラインであり、読み取り専用ポートでは、マスターノードとスレーブノードの両方がオンラインです。
HAProxyは、ノードの1つにアクセスできないことを検出すると、自動的にそのノードをオフラインとしてマークし、トラフィックの送信を考慮しません。検出は、デプロイメント時にClusterControlによって構成されたヘルスチェックスクリプトによって実行されます。これらは、インスタンスが稼働しているかどうか、回復中かどうか、または読み取り専用かどうかを確認します。
ClusterControlがスレーブノードをプロモートすると、HAProxyは両方のポートで古いマスターをオフラインとしてマークし、プロモートされたノードを読み取り/書き込みポートでオンラインにします。
システムが接続する仮想IPアドレスが割り当てられているアクティブなHAProxyに障害が発生した場合、KeepalivedはこのIPアドレスをパッシブなHAProxyに自動的に移行します。これは、システムが正常に機能し続けることができることを意味します。
ClusterControlCLIを使用したMariaDBデータベースのデプロイ
コマンドラインを使用してMariaDBクラスターをデプロイする場合は、「s9s」と呼ばれるClusterControlコマンドラインクライアントツールを使用できます。このツールは、展開ジョブをClusterControlサーバーに送信し、クラスターを展開するために必要なすべての手順を実行します。
たとえば、ClusterControlサーバーで次のコマンドを実行して、MariaDBマスタースレーブレプリケーションを作成できます。
$ s9s cluster --create \
--cluster-type=mysqlreplication \
--nodes='10.10.10.136;10.10.10.137' \
--vendor=mariadb \
--provider-version='10.5' \
--db-admin-passwd='root123' \
--os-user=root \
--os-key-file=/root/.ssh/id_rsa \
--cluster-name='MariaDB1' \
--log
コンソールにジョブログが表示されるので、そこで展開の進行状況を監視できます。または、ClusterControlUI->アクティビティ->ジョブからジョブの進行状況を監視することもできます。完了すると、ClusterControlUIに一覧表示されます。
このブログでは、ClusterControlを使用してMariaDBデータベースを高可用性にデプロイするためのいくつかのオプションと、ChamiloLMSアプリケーションでの使用方法について説明しました。
ロードバランサーを追加する単純なマスタースレーブ展開を使用して、このトポロジの高可用性を向上させましたが、Galera + ProxySQLなどの別のアプローチ、またはそれらの別の組み合わせを使用することで、この環境をさらに改善できます。 。