GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS7でHAproxyロードバランサーを使用してPerconaクラスターをセットアップする方法

以前、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で再び使用できます。以上でこの記事を締めくくります。お読みいただきありがとうございます。良い一日をお過ごしください。


Cent OS
  1. CentOS7にPerconaサーバーをインストールする方法

  2. CentOSおよびRedHatでMySQLを使用してPure-FTPDをセットアップする方法

  3. Rocky Linux / Centos 8でApache、PHP、Mysql(LAMPスタック)を使用してOpencartをセットアップする方法

  1. CentOS7にPerconaXtraDBクラスターをインストールする方法

  2. CentOS6でMySQLをMariaDBに置き換える方法

  3. CentOSでMySQLレプリケーションを設定する方法

  1. CentOS7でVSFTPDを使用してFTPサーバーをセットアップする方法

  2. CentOS8でVSFTPDを使用してFTPサーバーをセットアップする方法

  3. CentOS7でRiakKVNoSQLデータベースクラスターをセットアップする方法