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

MariaDBクラスターにmaxctrlを使用したMaxScale管理の概要

    MariaDBクラスターは、Galeraクラスターを備えたMariaDBサーバーとMariaDBMaxScaleで構成されています。マルチマスターレプリケーションソリューションとして、GaleraClusterを備えたMariaDBサーバーはすべてプライマリサーバーとして動作できます。これは、クラスター内の任意のノードに加えられた変更が、InnoDBストレージエンジンの証明書ベースのレプリケーションとトランザクションのグローバル順序付けを使用して、クラスター内の他のすべてのノードにレプリケートされることを意味します。 MariaDB MaxScaleは、MariaDBサーバー上に配置されたデータベースプロキシであり、高可用性、スケーラビリティ、およびセキュリティを拡張すると同時に、基盤となるデータベースインフラストラクチャからアプリケーション開発を分離することでアプリケーション開発を簡素化します。

    このブログシリーズでは、MariaDBクラスターにmaxctrlを使用したMaxScale管理について説明します。ブログシリーズのこの最初の記事では、maxctrlコマンドラインユーティリティの概要といくつかの基本について説明します。次の図に示すように、セットアップは1つのMaxScaleサーバーとGalera4を備えた3ノードのMariaDB10.4で構成されています。

    MariaDBクラスターはClusterControlによってデプロイおよび管理されましたが、MaxScaleホストはクラスター内の新しいホストであり、このウォークスルーの目的でClusterControlによってデプロイされませんでした。

    MaxScaleのインストール

    MaxScaleのインストールは非常に簡単です。 MaxScaleのMariaDBダウンロードページから適切なオペレーティングシステムを選択してダウンロードします。次の例は、CentOS8ホストにMaxScaleをインストールする方法を示しています。

    $ wget https://dlm.mariadb.com/1067156/MaxScale/2.4.10/centos/8/x86_64/maxscale-2.4.10-1.centos.8.x86_64.rpm
    $ yum localinstall maxscale-2.4.10-1.centos.8.x86_64.rpm
    $ systemctl enable maxscale
    $ systemctl start maxscale

    デーモンの起動後、デフォルトでは、MaxScaleコンポーネントは次のポートで実行されます。

    • 0.0.0.0:4006-デフォルトの読み取り/書き込み分割リスナー。
    • 0.0.0.0:4008-デフォルトのラウンドロビンリスナー。
    • 127.0.0.1:8989-MaxScaleRestAPI。

    上記のポートは変更可能です。本番環境のスタンドアロンMaxScaleサーバーは、ポート3306で読み取り/書き込み分割、ポート3307でラウンドロビンで実行されるのが一般的です。この構成は、このブログ投稿で展開するものです。

    重要なファイルとディレクトリ構造

    パッケージがインストールされると、次のユーティリティ/プログラムを入手できます。

    • maxscale -MaxScale自体。
    • maxctrl -通信にMaxScaleRESTAPIを使用するMaxScaleのコマンドライン管理クライアント。
    • maxadmin -非推奨のMaxScale管理およびモニタークライアント。代わりにmaxctrlを使用してください。
    • maxkeys -このユーティリティは、MariaDB MaxScale構成ファイルで使用されるパスワードを暗号化するときに、ユーティリティmaxpasswdによって使用されるAES暗号化キーと初期化ベクトルを指定されたディレクトリのファイル.secretsに書き込みます。
    • maxpasswd -このユーティリティは、maxkeysを使用して以前に作成された.secretsファイルを使用して暗号化されたパスワードを作成します。

    MaxScaleは、次の場所から特定の順序ですべての構成オプションをロードします。

    1. /etc/maxscale.cnf
    2. /etc/maxscale.cnf.d/*.cnf
    3. /var/lib/maxscale/maxscale.cnf.d/*.cnf

    MaxScale構成の詳細については、MaxScale構成ガイドをご覧ください。

    MaxScaleが初期化されると、デフォルトのファイルとディレクトリ構造は次のようになります。

    • MaxScaleデータディレクトリ:/ var / lib / maxscale
    • MaxScale PIDファイル:/var/run/maxscale/maxscale.pid
    • MaxScaleログファイル:/var/log/maxscale/maxscale.log
    • MaxScaleのドキュメント:/ usr / share / maxscale

    MaxCtrl-CLI

    開始したら、MaxCtrlコマンドラインクライアントを使用して、ローカルホストのポート8989でリッスンするMaxScaleRESTAPIを使用してMaxScaleを管理できます。 REST APIのデフォルトのクレデンシャルは「admin:mariadb」です。 REST APIで使用されるユーザーは、MaxAdminネットワークインターフェイスで使用されるユーザーと同じです。つまり、MaxAdminネットワークインターフェイス用に作成されたユーザーは、MaxScaleRESTAPIとMaxCtrlを使用する必要があります。

    mysqlクライアントと同様に、maxctrlユーティリティをインタラクティブモードで使用できます。次のスクリーンショットのように、「maxctrl」と入力するだけで、インタラクティブモード(プロンプトがシェルプロンプトからmaxctrlプロンプトに変わります)になります。

    または、シェルプロンプトでまったく同じコマンドを直接実行することもできます。例:

    MaxCtrlコマンドオプションは、付属のMaxScaleバージョンによって異なります。この記事の執筆時点では、MaxScaleのバージョンは2.4であり、コマンドの完全なリストについては、このドキュメントを参照する必要があります。 MaxCtrlは、ここで詳細に説明されているMaxScaleRESTAPIインターフェースを利用します。

    MariaDBサーバーをMaxScaleに追加する

    MaxScaleを最初に起動すると、いくつかのデフォルトのパラメーターと例を含む構成ファイルが/etc/maxscale.cnfに生成されます。この構成は使用せず、代わりに独自の構成を作成します。後で空にしたいので、このファイルのバックアップを作成します:

    $ mv /etc/maxscale.cnf /etc/maxscale.cnf.bak
    $ cat /dev/null > /etc/maxscale.cnf # empty the file

    MaxScaleを再起動して、すべてを新しく開始します:

    $ systemctl restart maxscale

    MaxScaleの「サーバー」という用語は、基本的にバックエンドのMariaDBサーバーを意味します。この場合、MariaDBクラスターの3つのノードすべてです。 3つのMariaDBクラスターサーバーすべてをMaxScaleランタイムに追加するには、次のコマンドを使用します。

    $ maxctrl create server mariadbgalera1 192.168.0.221 3306
    $ maxctrl create server mariadbgalera2 192.168.0.222 3306
    $ maxctrl create server mariadbgalera3 192.168.0.222 3306

    追加されたサーバーを確認するには、listコマンドを使用します。

    $ maxctrl list servers

    そして、次の出力が表示されます:

    MaxScaleへの監視の追加

    次に、MaxScaleを使用するように監視サービスを構成します。 MaxScaleは、データベースの種類に応じて、次のような多数の監視モジュールをサポートします。

    • MariaDBモニター
    • ガレラモニター
    • Clustrixモニター
    • ColumnStoreモニター
    • オーロラモニター

    このセットアップでは、「galeramon」と呼ばれるGaleraMonitorモジュールを使用します。まず、MariaDBクラスター内のサーバーの1つでMaxScaleが使用するデータベースユーザーを作成する必要があります。この例では、mariadbgalera1、192.168.0.221を選択して、次のステートメントを実行しました。

    MariaDB> CREATE USER [email protected]'192.168.0.220' IDENTIFIED BY 'MaXSc4LeP4ss';
    MariaDB> GRANT SELECT ON mysql.* TO 'maxscale_monitor'@'192.168.0.220';
    MariaDB> GRANT SHOW DATABASES ON *.* TO 'maxscale_monitor'@'192.168.0.220';

    ここで、192.168.0.220はMaxScaleサーバーのIPアドレスです。

    maxscale_monitorユーザーパスワードをプレーンテキストで保存することは安全ではありません。代わりに、パスワードを暗号化された形式で保存することを強くお勧めします。これを実現するには、このMaxScaleインスタンス専用の秘密鍵を生成する必要があります。 「maxkeys」ユーティリティを使用して、暗号化と復号化の目的でMaxScaleが使用する秘密鍵を生成します。

    $ maxkeys
    Generating .secrets file in /var/lib/maxscale.

    これで、maxpasswdユーティリティを使用して、パスワードの暗号化された値を生成できます。

    $ maxpasswd MaXSc4LeP4ss
    D91DB5813F7C815B351CCF7D7F1ED6DB

    MaxScale内に監視ユーザーのクレデンシャルを保存する場合は、代わりに常に上記の値を使用します。これで、maxctrlを使用してGaleraモニタリングサービスをMaxScaleに追加する準備が整いました:

    maxctrl> create monitor galera_monitor galeramon servers=mariadbgalera1,mariadbgalera2,mariadbgalera3 user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB
    次のコマンドで確認します:

    MaxScaleへのサービスの追加

    サービスは基本的に、MaxScaleがクエリをバックエンドサーバーにルーティングする方法です。 MaxScale 2.4は、複数のサービス(またはルーター)をサポートします。つまり、次のとおりです。

    • Avrorouter
    • Binlogrouter
    • CLI
    • HintRouter
    • Readconnroute
    • Readwritesplit
    • SchemaRouter
    • SmartRouter

    MariaDBクラスターの場合、必要なルーティングサービスは読み取り/書き込み分割とラウンドロビン負荷分散の2つだけです。読み取り/書き込み分割の場合、書き込みクエリは、サーバーに到達できなくなるまで単一のMariaDBサーバーにのみ転送され、サーバーに到達できなくなると、MaxScaleは書き込みクエリを次に使用可能なノードに転送します。ラウンドロビンバランシングの場合、クエリはラウンドロビン方式ですべてのバックエンドノードに転送されます。

    ラウンドロビン(またはマルチマスター)のルーティングサービスを作成します:

    maxctrl> create service Round-Robin-Service readconnroute user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

    読み取り/書き込み分割(またはシングルマスター)用の別のルーティングサービスを作成します:

    maxctrl> create service Read-Write-Service readwritesplit user=maxscale_monitor password=D91DB5813F7C815B351CCF7D7F1ED6DB --servers mariadbgalera1 mariadbgalera2 mariadbgalera3

    確認方法:

    MaxCtrlによって正常に作成されたすべてのコンポーネントは、/の下に独自の構成ファイルを生成します。 var / lib / maxscale/maxscale.cnf.d。この時点で、ディレクトリは次のようになります。

    $ ls -l /var/lib/maxscale/maxscale.cnf.d
    total 24
    -rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
    -rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
    -rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
    -rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
    -rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:01 Read-Write-Service.cnf
    -rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:00 Round-Robin-Service.cnf

    MaxScaleへのリスナーの追加

    リスナーは、サービスが着信接続をリッスンするポートを表します。ポートまたはUNIXソケットファイルにすることができ、コンポーネントタイプは「リスナー」である必要があります。通常、リスナーはサービスに関連付けられています。このセットアップでは、2つのリスナーを作成します。ポート3306の読み取り/書き込みリスナーとポート3307のラウンドロビンリスナーです。

    maxctrl> create listener Read-Write-Service Read-Write-Listener 3306 --interface=0.0.0.0 --authenticator=MariaDBAuth
    maxctrl> create listener Round-Robin-Service Round-Robin-Listener 3307 --interface=0.0.0.0 --authenticator=MariaDBAuth

    次のコマンドで確認します。

    この時点で、MaxScaleはクエリを次のように負荷分散する準備ができています。 MariaDBクラスター。アプリケーションから、ポート3306でMaxScaleホストにクエリを送信します。ここで、書き込みクエリは常に同じデータベースノードにヒットし、読み取りクエリは他の2つのノードに送信されます。これは、シングルライター設定とも呼ばれます。マルチライター設定を使用する場合は、ラウンドロビンバランシングアルゴリズムに基づいて、書き込みがすべてのバックエンドMariaDBノードに転送されます。優先度と重みを使用して、バランスをさらに微調整できます。

    繰り返しますが、maxctrlを介して構成オプションを変更すると、次の出力に示すように、正常に作成されたすべてのコンポーネントは、/ var / lib / maxscale/maxscale.cnf.d内に独自の構成ファイルを持ちます。

    $ ls -l /var/lib/maxscale/maxscale.cnf.d
    -rw-r--r--. 1 maxscale maxscale  532 Jul  5 13:18 galera_monitor.cnf
    -rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera1.cnf
    -rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:55 mariadbgalera2.cnf
    -rw-r--r--. 1 maxscale maxscale  250 Jul  5 12:56 mariadbgalera3.cnf
    -rw-r--r--. 1 maxscale maxscale  259 Jul  5 16:06 Read-Write-Listener.cnf
    -rw-r--r--. 1 maxscale maxscale 1128 Jul  5 16:06 Read-Write-Service.cnf
    -rw-r--r--. 1 maxscale maxscale  261 Jul  5 16:06 Round-Robin-Listener.cnf
    -rw-r--r--. 1 maxscale maxscale  477 Jul  5 16:06 Round-Robin-Service.cnf

    上記の構成オプションは、ニーズに合わせて直接変更できますが、新しい変更をロードするには、MaxScaleサービスを再起動する必要があります。もう一度やり直したい場合は、このディレクトリの下のすべてを消去して、MaxScaleを再起動できます。

    次のエピソードでは、MariaDBクラスター用のMaxCtrlの管理コマンドと監視コマンドについて説明します。


    1. MySQLでselectから削除するにはどうすればよいですか?

    2. SET TEXTSIZEがSQLServerで機能しませんか?これをチェックして。

    3. PostgreSQLで日付スタイルを変更するにはどうすればよいですか?

    4. JavaのSalesforceSOQL