以前、HAproxyを使用してMariaDB Galeraクラスターをセットアップする方法を示しましたが、今日は、PerconaのMySQLディストリビューションを使用して同様のセットアップを行います。 Perconaは、MySQLとMongoDBに関する深い専門知識を持っている会社であり、これらのデータベースと両方のデータベースのストレージエンジンを独自に配布しています。今日はMySQLのみに集中し、この会社のMongoDB製品には集中しません。
ホスト、ファイアウォール、リポジトリの設定
まず、hostsファイルを設定します。 Perconaクラスター用に3つのノードがあり、HAproxy用に1つのノードがあります。 4つのサーバーすべてのhostsファイルには次の4行があります:
10.17.0.8 centos-percona01
10.17.0.9 centos-percona02
10.17.0.10 centos-percona03
10.17.0.11 centos-haproxy
次に、HAproxyを除くすべてのホストでfirewalldをセットアップしましょう。それは異なる設定を必要とし、後者を行います。まず、3つのperconaノードすべてでfirewalldを開始しましょう。
systemctl start firewalld
次に、mysqlサービスを許可します。 Peconaはmysqldistroであるため、mysqlと同じポートを使用します。
firewall-cmd --zone=public --add-service=mysql --permanent
次に、他の必要なポートを追加します:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/udp --permanent
firewall-cmd --zone=public --add-port=9200/tcp --permanent
そしてファイアウォールをリロードします
firewall-cmd --reload
それが終わったら、次にepelリリースをインストールする必要があります
yum install epel-release
次に、EPELリポジトリからsocatをインストールします
yum install socat
そして、perconaと競合するため、mariadb-libsを削除します
yum remove mariadb-libs
Perconaのインストールとセットアップ
perconaを含むリポジトリを追加する必要があります
yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
これで、perconaクラスターと他のすべての依存関係をインストールできます
yum install Percona-XtraDB-Cluster-server-56 Percona-XtraDB-Cluster-client-56 Percona-XtraDB-Cluster-shared-56 percona-toolkit percona-xtrabackup Percona-XtraDB-Cluster-galera-3 rsync nc
そしてmysqlを起動します
systemctl start mysql
すべてのmysqlサーバーで最初に行うことは、mysql_secure_installationスクリプトを実行することです。それではやってみましょう。
mysql_secure_installation
新しいルートパスワードを入力し、すべての質問にyと答える必要があります。
終了したら、rootアカウントにログインします
mysql -u root -p
enter password
そして、クラスターにsstuserを作成します
mysql> create user sstuser@'%' identified by 'strongpassword';
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on *.* to sstuser@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
この後、Mysqlを停止して構成ファイルを編集する必要があります。
systemctl stop mysql
nano /etc/my.cnf
構成でこれらの行を見つけて、このように表示します。自分のパスワードに変更し、サーバーごとにノード名とノードアドレスをホスト名に変更します
wsrep_cluster_address = gcomm://centos-percona01,centos-percona02,centos-percona03
wsrep_provider = /usr/lib64/galera3/libgalera_smm.so
wsrep_slave_threads = 8
wsrep_cluster_name = Cluster Percona XtraDB
wsrep_node_name = centos-percona01
wsrep_node_address = centos-percona01
wsrep_sst_method = xtrabackup-v2
wsrep_sst_auth = sstuser:strongpassword
次のように、最初のサーバー(centos-percona01)の最初の行を空にすることができることに注意してください。
wsrep_cluster_address = gcomm://
構成が完了したら、最初のノードをブートストラップし、通常は2番目と3番目を開始する必要があります。
最初のサーバーで実行
systemctl start mysql@bootstrap
2回目と3回目の実行
systemctl start mysql
次に、クラスターが機能しているかどうかをテストする必要があります。
mysql -u root -p
パスワードを入力
次に、次のコマンドを実行します:
SHOW STATUS LIKE 'wsrep_local_state_comment';
show global status like 'wsrep_cluster_size';
次のように出力されるはずです:
これでクラスターのセットアップは完了です。
HAproxyの設定
まず、クラスターがHAproxyでサービス可能になるように、すべてのクラスターノードにclustercheckをインストールする必要があります。 wgetでスクリプトを取得しましょう
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
スクリプトを実行可能にして、$PATHディレクトリの1つに移動する必要があります。
chmod +x clustercheck
mv clustercheck /usr/bin/
ここで、xinetdパッケージに含まれているmysqlchkも必要です:
yum install xinetd
次に、データベースにclustercheckユーザーを作成します。これは最初のノードでのみ入力できます
mysql -u root -p
mysql> GRANT PROCESS ON *.* TO 'clustercheckuser'@'localhost' IDENTIFIED BY 'clustercheckpassword!';
exit;
次に、clustercheckが期待どおりに機能するかどうかをテストできます。
[root@centos-percona01 ~]# clustercheck
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
Content-Length: 40
Percona XtraDB Cluster Node is synced.
次に、xinetdの構成に移動します。xinetdをサービスリストに追加する必要があります。
nano /etc/services
CTRL-Wを使用して、ポート9200がある部分を見つけ、そのポートを使用するサービスを推奨し、代わりに新しい行を追加します。次のように表示する必要があります:
mysqlchk 9200/tcp # mysqlchk
#wap-wsp 9200/tcp # WAP connectionless session service
#wap-wsp 9200/udp # WAP connectionless session service
完了したら、保存します。 HAproxyを除くすべてのクラスタノードでこれを行う必要があることに注意してください。
次に、HAporoxyサーバーにログインします。まず、haproxy構成をバックアップする必要があります。
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk
次に、きれいなスレートから新しいものを作ります
nano /etc/haproxy/haproxy.cfg
これらの3行を変更する必要があることを除いて、ここからHAproxy構成をコピーできます。
server centos-percona01 10.132.84.186:3306 check port 9200 inter 12000 rise 3 fall 3
server centos-percona02 10.132.84.141:3306 check port 9200 inter 12000 rise 3 fall 3
server centos-percona03 10.132.84.67:3306 check port 9200 inter 12000 rise 3 fall 3
強調表示された部分は、ホスト名とアドレスで変更する必要があります。次に、haproxyサーバーでfirewalldを起動し、使用する必要のあるポートを許可する必要があります
systemctl start firewalld
firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --permanent --add-port=3030/tcp
その後、ファイアウォールをリロードする必要があります
firewall-cmd --reload
最後に、haproxyを起動します
systemctl start haproxy
セットアップが完了したので、テストする必要があります。
HAproxyのテスト
ブラウザをポート9000のHAproxyサーバーのパブリックIPアドレスに向けてみましょう:
すべてのノードがオンラインです。次に、perconaクライアントをhaproxyサーバーにインストールして、そこからクラスターにクエリを実行できるようにします。
yum install https://www.percona.com/redir/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum install Percona-XtraDB-Cluster-client-56
そして、このhaproxyサーバーからクエリを実行できるかどうかを確認してみましょう。
mysql -u root -p -h 10.132.83.13 -P 3306 -e "select Host, User, Password from mysql.user"
結論
HAproxyによって負荷分散されたPerconaXtraDBの3ノードクラスターをセットアップしました。これは、MariaDBとGaleraを使用した先週の記事と同様のセットアップですが、Perconaストレージエンジンを使用し、WordPressを使用していません。このPerconaセットアップは、非常に多様なデータセットをホストするために使用できます。特に、前回の記事のように、WordPressで再び使用できます。以上でこの記事を締めくくります。お読みいただきありがとうございます。良い一日をお過ごしください。