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

CMONHAを使用したClusterControlノードの高可用性構成

    以前のブログでは、KrzysztofKsiazekによって書かれた分散データベースの高可用性のためのClusterControlCMONHAについて2つの別々の投稿で説明しました。このブログでは、オンプレミスとパブリッククラウド(Google Cloud Platform(GCP)を使用)を介したノードの分散について説明します。

    このブログを書いた理由は、オンプレミスで実行されているCMONノードとオンプレミスで実行されている別のCMONノードを持つClusterControlの高可用性インスタンスを実装する方法について質問を受けたためです。別のデータセンター(パブリッククラウドなど)。以前のブログClusterControlCMONHA for Distributed Database High Availabilityでは、Galera Clusterノードを使用していましたが、今回はPerconaServer5.7を使用したMySQLレプリケーションを使用します。このための理想的な設定は、オンプレミスからのノードと、VPNまたは安全なチャネルを介してパブリッククラウドに存在するノードの通信を常にカプセル化することです。

    ClusterControl CMON HAは初期段階にあり、まだ十分に成熟していないと考えられます。それでも、CMON HAは、ClusterControlをデプロイして高可用性を実現するための機能の感覚を提供することができます。パブリッククラウドを介してオンプレミス経由でノードを分散するようにデプロイおよびセットアップする方法を進めましょう。

    CMONとは何ですか?

    メイントピックに進む前に、CMONとは何かを紹介しましょう。 CMONは、ClusterControlの「主要な頭脳」であるClusterControlControllerの略です。自動化、管理、スケジューリングタスクの監視、およびHAの可用性を実行するバックエンドサービス。収集されたデータはCMONデータベースに保存され、MySQL互換データベースをデータストアとして使用しています。

    アーキテクチャの設定

    ClusterControlが実行し、高可用性を実現するためにセットアップできる機能を知らない人もいるかもしれません。複数のClusterControl(またはCMON)ノードを実行している場合、それは無料で可能です。必要なときにいつでも、大量のClusterControlノードを実行できる可能性があります。

    このセットアップでは、データベースノードを作成またはデプロイし、障害が発生した場合に自動フェイルオーバーを管理するために、ClusterControlの上にClusterControlノードを配置します。 MHA、Orchestrator、またはMaxscaleを使用して自動フェイルオーバーを管理できますが、効率と速度を高めるために、ClusterControlを使用して、前述の他のツールにはない特別なことを実行します。

    では、この設定の図を見てみましょう:

    この図に基づくセットアップは、3ノードのCMONの上にあることを示しています。 、実行中のCMON(ClusterControl)がそれらの上にあり、自動フェイルオーバーを監視します。次に、HAProxyは、監視対象の3つのCMONノード間で負荷分散を行うことができます。1つのノードは、このブログのGCPでホストされている別のリージョンにあります。キープアライブが含まれていないことに気付くかもしれません。これは、別のネットワーク上にあるため、GCPの下にVIPを配置できないためです。

    お気づきかもしれませんが、合計3つのノードを配置します。 CMON HAでは、投票プロセスまたはいわゆるクォーラムを進めるために、少なくとも3つのノードが必要です。したがって、この設定では、可用性を高めるために少なくとも3つのノードが必要です。

    オンプレミスのClusterControlノードの導入

    このセクションでは、PerconaServerを使用して3ノードのMySQLレプリケーションクラスターをデプロイするために使用するClusterControlUIを既にセットアップまたはインストールしていることを前提としています。

    まず、以下に示すように、新しいMySQLレプリケーションをデプロイしてクラスターを作成しましょう。

    ここではPerconaServer5.7を使用していることに注意してください。デフォルトではClusterControlによるセットアップは効率的に機能します。

    次に、ノードのホスト名またはIPを定義します

    この時点で、すでに2つのノードが設定されていると想定しています。オンプレミスでホストまたは実行されているマスター/スレーブレプリケーション。以下のスクリーンショットは、ノードがどのように見えるかを示しています。

    ClusterControlをセットアップしてインストールし、最初のノードでCMONHAを有効にします

    この以前のブログ、分散データベースの高可用性のためのClusterControl CMON HAから、これを行う方法の手順を簡単に説明しました。もう一度降りて、前述の手順を実行しますが、この特定のマスター/スレーブレプリケーションのセットアップについてです。

    最初に行うことは、最初にClusterControlをインストールするノードを1つ選択し(このセットアップでは、最初に192.168.70.80ノードにインストールすることになります)、以下の手順を実行します。

    ステップ1

    ClusterControlのインストール

    $ wget http://www.severalnines.com/downloads/CMON/install-cc
    
    $ chmod +x install-cc
    
    $ sudo ./install-cc   # omit sudo if you run as root

    現在のmysqlインスタンスが検出されたことを確認するメッセージが表示されたら、ClusterControlに実行中の既存のmysqldを使用させる必要があることに注意してください。これは、CMON HAの目標の1つであり、このセットアップですでにMySQLをセットアップしています。

    ステップ2

    CMONをバインドして、ローカルホスト経由だけでなく、特定のIPアドレスでも許可します(HAを有効にするため)

    ## edit /etc/default/CMON  and modify the line just like below or add the line if it doesn't exist
    
    RPC_BIND_ADDRESSES="127.0.0.1,192.168.70.80"
    ステップ3

    次に、CMONを再起動します

    service CMON restart
    ステップ4

    s9sCLIツールのインストール

    $ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
    
    $ chmod 755 install-s9s-tools.sh
    
    $ ./install-s9s-tools.sh

    このインストール中に、s9sツールは、CMON HAを有効にするのと同じように、s9sコマンドを処理するときに使用できる管理者ユーザーをセットアップします。

    ステップ5

    CMONHAを有効にする

    $ s9s controller --enable-CMON-ha
    ステップ6

    最後に、/ etc/my.cnfを変更して追加します

    slave-skip-errors = 1062

    [mysqld]セクションの下。追加したら、mysqlを次のように再起動することを忘れないでください

    service mysql restart
    または

    systemctl restart mysql

    現在、これはCMON HAがスレーブにログエントリを挿入しようとするために直面​​している制限ですが、現時点では問題ない可能性があります。

    ClusterControlをセットアップ、インストールし、2番目のノードでCMONHAを有効にします

    最初のノードの場合と同じように単純です。次に、2番目のノード(192.168.70.70)で同じ手順を実行する必要がありますが、代わりに、このHAを可能にするために手順を調整する必要があります。

    ステップ1

    構成を最初のノード(192.168.70.80)から2番目のノード(192.168.70.70)にコピーします

    $ scp -r /etc/CMON* 192.168.70.70:/etc/
    ステップ2

    2番目のノードで、/ etc / CMON.cnfを編集し、ホストが正しく構成されていることを確認します。例:

    vi /etc/CMON.cnf

    次に、ホスト名パラメータを次のように割り当てます

    hostname =192.168.70.70

    ステップ3

    ClusterControlをインストールします

    $ wget http://www.severalnines.com/downloads/CMON/install-cc
    
    $ chmod +x install-cc
    
    $ sudo ./install-cc   # omit sudo if you run as root

    ただし、この行が表示されたら、CMON(またはClusterControl Controller)のインストールをスキップしてください。

    => An existing Controller installation detected!
    
    => A re-installation of the Controller will overwrite the /etc/CMON.cnf file
    
    => Install the Controller? (y/N):

    残りは、ホスト名の設定など、最初のノードで行ったのと同じように、既存のmysqld実行インスタンスを使用し、MySQLパスワードを提供し、CMONのパスワードを指定する必要があります。どちらも最初のノードと同じパスワードを持っています。

    ステップ4

    s9sCLIツールのインストール

    $ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
    
    $ chmod 755 install-s9s-tools.sh
    
    $ ./install-s9s-tools.sh
    ステップ5 残りの構成を1番目のノードから2番目のノードにコピーします。

    $ scp -r ~/.s9s/ 192.168.70.70:/root/
    
    $ scp /etc/s9s.conf 192.168.70.70:/etc/
    
    $ scp /var/www/html/clustercontrol/bootstrap.php 192.168.70.70:/var/www/html/clustercontrol/
    ステップ6

    clustercontrol-controllerパッケージをインストールします

    Ubuntu / Debianの場合、

    $ apt install -y clustercontrol-controller

    RHEL / CentOS/Fedoraの場合

    $ yum install -y clustercontrol-controller
    ステップ7

    / etc / default / CMONファイルをコピーし、RPCバインドアドレスのIPアドレスを変更します

    scp /etc/default/CMON 192.168.70.70:/etc/default
    
    RPC_BIND_ADDRESSES="127.0.0.1,10.0.0.103"

    次に、次のようにCMONを再起動します

    service CMON restart
    ステップ8

    /etc/my.cnfを変更して追加します

    slave-skip-errors = 1062

    [mysqld]セクションの下。追加したら、mysqlを次のように再起動することを忘れないでください

    service mysql restart
    または

    systemctl restart mysql

    現在、これはCMON HAがスレーブにログエントリを挿入しようとするために直面​​している制限ですが、現時点では問題ない可能性があります。

    ステップナイン

    最後に、CMONHAノードがどのように見えるかを確認します。

    [[email protected] ~]#  s9s controller --list --long
    
    S VERSION    OWNER GROUP NAME            IP PORT COMMENT
    
    l 1.7.5.3735 system admins 192.168.70.80   192.168.70.80 9501 Acting as leader.
    
    f 1.7.5.3735 system admins 192.168.70.70   192.168.70.70 9501 Accepting heartbeats.
    
    Total: 2 controller(s)
    クラスター制御ノードをクラウドにデプロイする

    前述したように、通信の理想的な設定は、VPNまたはその他のセキュリティで保護されたチャネルの手段を介してパケットをカプセル化することです。これを行う方法について懸念がある場合は、以前のブログMulti-DC PostgreSQL:OpenVPNを使用して簡単なVPNセットアップを作成する方法に取り組んだVPNを介した別の地理的場所でのスタンバイノードのセットアップを確認してください。

    このセクションでは、VPN接続がすでに設定されていることを前提としています。次に、CMONの可用性をGoogleCloudPlatformに配布することになっているスレーブを追加します。これを行うには、右隅にあるクラスターアイコンをクリックして見つけることができるレプリケーションスレーブの追加に移動します。以下のように表示されます:

    これで、次のようになります。

    >

    これで、GCPでホストされる新しいスレーブが追加されたため、 2番目のノードで以前に行ったことを再度実行する必要がある場合があります。これらの手順に従い、2番目のノードで行った手順に従うように中継します。

    正しく取得すると、次の結果になります。

    [[email protected] ~]# s9s controller --list --long
    
    S VERSION    OWNER GROUP NAME            IP PORT COMMENT
    
    l 1.7.5.3735 system admins 192.168.70.80   192.168.70.80 9501 Acting as leader.
    
    f 1.7.5.3735 system admins 192.168.70.70   192.168.70.70 9501 Accepting heartbeats.
    
    f 1.7.5.3735 system admins 10.142.0.39     10.142.0.39 9501 Accepting heartbeats.
    ノード内の場所

    • 192.168.70.80-(node8)で、オンプレミスに常駐しています
    • 192.168.70.70-(node7)そして私のオンプレミスに常駐しています
    • 10.142.0.39-(gnode1)はGCPとさまざまなリージョンでホストされています

    CMONHAの動作

    私の同僚のKrzysztofKsiazekは、このブログでHAProxyを使用したHAのセットアップをすでに提供しています。ClusterControlCMON HA for Distributed Database High Availability-Part Two(GUI Access Setup)。

    ブログに記載されている手順に従うには、xinetdパッケージとpathlibパッケージがあることを確認してください。 xinetdとpathlibは次のようにインストールできます

    $ sudo yum install -y xinetd python-pathlib.noarch

    また、CMONhachkが/ etc/servicesで次のように定義されていることを確認してください。

    [[email protected] ~]# grep 'CMONhachk' /etc/services 
    
    CMONhachk       9201/tcp

    変更を確認し、xinetdを再起動します

    service xinetd restart

    KeepalivedとHAProxyの手順をスキップし、それに応じて設定されていることを期待します。この設定で考慮しなければならない1つのポイントは、VIPをオンプレミスからパブリッククラウドネットワークに分散させる場合、それらは完全に異なるネットワークであるため、Keepalivedの使用は適用できないということです。

    次に、ノードがダウンした場合にCMONHAがどのように反応するかを見てみましょう。前に示したように、ノード192.168.70.80(node8)は、以下に示すようにリーダーとして機能していました。

    ここで、マスターノードデータベースは、node8がClusterControlトポロジビューからのマスターであることも示しています。 。 node8を強制終了して、CMONHAがどのように進行するかを見てみましょう。

    ご覧のとおり、gnode1(GCPノード)がリーダーとして引き継いでいますnode8がダウンすると。 HAProxyの結果を次のように確認します。

    そしてClusterControlノードはnode8がダウンしていることを示していますが、GCPノードはマスターとして

    最後に、ホスト192.168.10.100で実行されているHAProxyノードにアクセスします。ポート81は次のUIを示しています

    結論

    私たちのClusterControlCMONHAはバージョン1.7.2以降のものですが、Galera ClusterでのMySQLレプリケーションの使用など、これを展開する方法に関するさまざまな質問や好みから、私たちにとっても課題となっています。

    当社のCMONHAはまだ成熟していませんが、高可用性のニーズに応える準備ができています。チェックによって稼働中の適切なノードが特定される限り、さまざまなアプローチを適用できます。

    CMON HAを使用してセットアップと展開を行い、ニーズにどの程度適しているかをお知らせください。問題が解決しない場合は、高可用性の必需品に対応する方法をお知らせください。

    >
    1. SQLServerインデックスの破損を修復するための無料の方法

    2. PostgreSQLでデータを挿入および削除する方法

    3. SQLパフォーマンスチューニングが最も重要なデータベース管理スキルである理由

    4. int delete(String table、String whereClause、String [] whereArgs)関数のString [] whereArgsの目的は何ですか?