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

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

    学習管理システム(LMS)プラットフォームを使用すると、リモートで学習/教育できます。これは、世界中の現在の状況にとって非常に重要なことです。

    そうは言っても、この種のプラットフォームでは高可用性が必須であると言えます。そうしないと、必要なときにアクセスできません。

    このブログでは、最も人気のあるLMSプラットフォームオプションの1つであるChamiloLMSに使用される高可用性のためにMariaDBデータベースをデプロイする方法を説明します。

    Chamiloとは何ですか?

    Chamilo LMSは、オンライン教育用に設計され、多くの企業や個人の開発者のコ​​ラボレーションを通じて開発された無料の学習管理システム(LMS)です。

    教師として、Chamiloを使用すると、効果的な学習環境を作成するための一連の便利なツールにアクセスできます。これらのツールのいくつかは次のとおりです。

    • ドキュメント(オーディオ、ビデオ、画像)をインポートまたは作成し、公開します
    • 必要に応じて自動スコアとフィードバックを使用してテストと試験を作成します 仮想割り当てを設定して受け取る 説明セクションでコースの構成要素を説明する フォーラムやチャットを通じてコミュニケーションをとる アナウンスを公開する リンクを追加 ワークグループまたはラボグループを作成する 仮想教室を設定する アンケートを作成
    • wikiを追加して共同でドキュメントを作成します
    • 用語集と議題を使用する コース内の学習者の追跡を有効にする 出席を登録する クラスの日記などを作成する

    Chamiloプラットフォームは非常に柔軟性があります。すべてのツールは、各コースのニーズに応じてカスタマイズできます。特別な事前の技術的知識やスキルを必要としない、フレンドリーで直感的なユーザーインターフェイスを提供します。

    つまり、問題は、このシステムで使用する高可用性のためにMariaDBデータベースをどのようにデプロイできるかということです。

    高可用性のためのMariaDBデータベース 高可用性のためにMariaDBデータベースをデプロイするためのさまざまなアプローチがあります。 2つの主なオプションを見てみましょう。

    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などの別のアプローチ、またはそれらの別の組み合わせを使用することで、この環境をさらに改善できます。 。


    1. SQLServerのチェック制約

    2. plpgsqlを使用して関数内の現在の関数の名前を取得する

    3. CentOS7にMySQLをインストールする方法

    4. クエリによって返された行ごとにストアドプロシージャを1回実行するにはどうすればよいですか?