COVID-19の大流行が起こって以来、今日のオンライン学習は急速に勢いを増しています。ほとんどの教育機関はオンライン学習用のプラットフォームを設定する必要があり、ほとんどすべての生徒が学習して教師とやり取りするためのプラットフォームにアクセスする必要があります。 Moodleはオンライン学習のためのオープンソースの学習管理システムの1つです。
Moodleプラットフォームの高可用性は教育機関にとって必須です。そうしないと、オンライン学習プロセスが中断されて停止します。多くの学生が同時にプラットフォームにアクセスするため、可用性とスケーラビリティが重要です。この時点で、教育機関は、Moodleのプラットフォームの高可用性とスケーラビリティに関する知識と設計を持っている必要があります。スタンドアロンのMoodleをスケーラブルなクラスター化データベースに移行する方法についてもっと知りたい場合は、このガイドラインに従うことができます。
スタンドアロンのMoodleプラットフォームは1つのサーバーで構成され、すべてがサーバーにインストールされます(データベースとアプリケーションサーバーが1か所にあります)。または、次の図に示すように、アプリケーションサーバーとデータベースサーバー用の2つのサーバーがあります。

どちらのアーキテクチャも、サービスの可用性とスケーラビリティに欠けています。可用性の観点から、サーバーがクラッシュした場合、サーバー上でサービスが実行されていないことを想像できます。アプリケーションサーバーがクラッシュしたり、データベースがクラッシュしたりすると、サービスは動作を停止します。
一方、スケーラビリティも重要です。ユーザーが増えると、データベースへのトラフィックと接続が増えることになります。サーバーにリソースを追加するか、サーバーを追加してトラフィックをノード全体に分散できるようにすることで、スケーラビリティを実現できます。そうしないと、パフォーマンスが低下します。
スタンドアロンノードのクラスター化データベースへの移行には時間がかかる場合があり、リスクのない操作ではありません。以下は、実行する必要のある手順です。
- バックアップを取る必要があります(mysqldumpまたはxtrabackupを使用してください)。
- ProxySQLをセットアップし、データベースノードの前でキープアライブ
- ProxySQLロードバランサーを構成します(例:ホストグループ、サーバー、ユーザーを作成します)。
- Moodle設定を新しい仮想IPアドレスにポイントします。
ClusterControlがどのように支援できるか
ClusterControlは、オープンソースデータベースの展開、監視、および管理を支援するデータベース管理ソフトウェアです。以下に示すように、スタンドアロンのMoodleアーキテクチャからの移行を試みます:

レプリケーションに基づくクラスター化されたデータベースアーキテクチャへ:

データベース用に少なくとも2台、データベース用に2台のサーバーが必要です。プロキシ(ロードバランサーとしてProxySQLを使用します)および仮想IPアドレスを提供するためのキープアライブサービス。

ClusterControlにデータベースノードを追加するのは本当に簡単です。クラスタの右側にあるクラスタメニューとレプリケーションスレーブの追加。

新しいスレーブを追加するための新しいダイアログが表示されます。入力するだけです。次に示すように、IPアドレスを入力し、[新しいスレーブの追加]ボタンをクリックするだけです。

スクリーンショットからわかるように、スレーブをシードすることができます既存のバックアップからのデータを使用します。これは、実行中のマスターデータベースからすべてのデータをストリーミングしないようにするためです。スレーブデータベースがデプロイされると、マスターデータでプライミングされ、ClusterControlはスレーブがマスターと同期することを確認します。
この手順を繰り返して、別のレプリカノードを追加できます。

次のステップは、データベースの前にロードバランサーを追加することです。 ProxySQLのようなロードバランサーは、書き込み要求をマスターにリダイレクトし、読み取り要求をスレーブにリダイレクトできるので便利です。このようにして、Moodleトラフィックを分散しています。 MySQLまたはMariaDB用のGaleraClusterに基づいてマスターマスターセットアップを実行することも可能であることに注意してください。
可用性を高めるために、2つのロードバランサーを使用します。 [管理]->[クラスター内のロードバランサー]に移動できます。


サーバーアドレス、管理者パスワード、モニターパスワードなどの情報を入力する必要があります。 moodleユーザーをProxySQLに追加し、[ProxySQLのデプロイ]をクリックするだけです。それは新しい仕事を引き起こします。他のロードバランサーノードにデプロイを繰り返します。
最後に、ロードバランサーのキープアライブを構成します。 [管理]->[ロードバランサー]に移動します。Keepalivedのタブがあります

ロードバランサーのタイプを選択し、キープアライブに追加するだけです。 。仮想IPアドレスとネットワークインターフェイスを入力します。 [キープアライブの展開]ボタンをクリックします。

dbhostを指すconfig.phpの接続構成を変更する必要があります構成した仮想IPアドレスに送信します。
すべてがクラスター化データベースに移行した後、このガイドラインに従うことができるMoodleデータベースに監視を配置することをお勧めします。