以前のブログでは、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つのノードが必要です。
このセクションでは、PerconaServerを使用して3ノードのMySQLレプリケーションクラスターをデプロイするために使用するClusterControlUIを既にセットアップまたはインストールしていることを前提としています。
まず、以下に示すように、新しいMySQLレプリケーションをデプロイしてクラスターを作成しましょう。
ここではPerconaServer5.7を使用していることに注意してください。デフォルトではClusterControlによるセットアップは効率的に機能します。
次に、ノードのホスト名またはIPを定義します
この時点で、すでに2つのノードが設定されていると想定しています。オンプレミスでホストまたは実行されているマスター/スレーブレプリケーション。以下のスクリーンショットは、ノードがどのように見えるかを示しています。
ClusterControlをセットアップしてインストールし、最初のノードでCMONHAを有効にします
この以前のブログ、分散データベースの高可用性のためのClusterControl CMON HAから、これを行う方法の手順を簡単に説明しました。もう一度降りて、前述の手順を実行しますが、この特定のマスター/スレーブレプリケーションのセットアップについてです。
最初に行うことは、最初にClusterControlをインストールするノードを1つ選択し(このセットアップでは、最初に192.168.70.80ノードにインストールすることになります)、以下の手順を実行します。
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をセットアップしています。
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"
次に、CMONを再起動します
service CMON restart
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コマンドを処理するときに使用できる管理者ユーザーをセットアップします。
CMONHAを有効にする
$ s9s controller --enable-CMON-ha
最後に、/ etc/my.cnfを変更して追加します
slave-skip-errors = 1062
[mysqld]セクションの下。追加したら、mysqlを次のように再起動することを忘れないでください
service mysql restart
systemctl restart mysql
現在、これはCMON HAがスレーブにログエントリを挿入しようとするために直面している制限ですが、現時点では問題ない可能性があります。
ClusterControlをセットアップ、インストールし、2番目のノードでCMONHAを有効にします
構成を最初のノード(192.168.70.80)から2番目のノード(192.168.70.70)にコピーします
$ scp -r /etc/CMON* 192.168.70.70:/etc/
2番目のノードで、/ etc / CMON.cnfを編集し、ホストが正しく構成されていることを確認します。例:
vi /etc/CMON.cnf
次に、ホスト名パラメータを次のように割り当てます
hostname =192.168.70.70
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のパスワードを指定する必要があります。どちらも最初のノードと同じパスワードを持っています。
s9sCLIツールのインストール
$ wget http://repo.severalnines.com/s9s-tools/install-s9s-tools.sh
$ chmod 755 install-s9s-tools.sh
$ ./install-s9s-tools.sh
$ 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/
clustercontrol-controllerパッケージをインストールします
Ubuntu / Debianの場合、
$ apt install -y clustercontrol-controller
RHEL / CentOS/Fedoraの場合
$ yum install -y clustercontrol-controller
/ 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
/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レプリケーションの使用など、これを展開する方法に関するさまざまな質問や好みから、私たちにとっても課題となっています。
CMON HAを使用してセットアップと展開を行い、ニーズにどの程度適しているかをお知らせください。問題が解決しない場合は、高可用性の必需品に対応する方法をお知らせください。
>