翻譯&轉載來源:https://linoxide.com/cluster/...node
如何在CentOS 7上使用HAproxy Loadbalancer設置Percona集羣mysql
咱們以前展現瞭如何使用HAproxy設置MariaDB Galera集羣,今天咱們將使用Percona的MySQL發行版進行相似的設置。Percona是一家擁有MySQL和MongoDB深厚專業知識的公司,他們本身分發這些數據庫以及兩個數據庫的存儲引擎。今天咱們只專一於MySQL,而不是專一於該公司的MongoDB產品。git
設置主機,防火牆和存儲庫
首先經過設置hosts文件啓動。咱們爲Percona集羣提供了三個節點,爲HAproxy提供了一個節點。全部4臺服務器上的主機文件都包含如下四行:github
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。那將須要不一樣的設置,咱們將作後者。首先讓咱們在全部三個percona節點上啓動firewalld。sql
systemctl start firewalld
而後咱們容許mysql服務。Pecona是mysql發行版,因此它使用與mysql相同的端口。數據庫
firewall-cmd --zone = public --add-service = mysql --permanent
接下來咱們添加其餘所需端口:bootstrap
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
並從新加載防火牆centos
firewall-cmd --reload
完成後,接下來咱們須要安裝epel版本瀏覽器
yum install epel-release
接下來,咱們從EPEL存儲庫安裝socat服務器
yum install socat
而後咱們刪除mariadb-libs,由於它與percona衝突
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
您須要輸入新的root密碼並回答全部問題。
完成後,登陸到您的root賬戶
mysql -u root -p
輸入密碼
併爲您的羣集建立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://
配置完成後,咱們須要引導第一個節點,而後一般啓動第二個和第三個節點。
在第一臺服務器上運行
systemctl start mysql@bootstrap
在第二和第三次運行
systemctl start mysql
接下來咱們須要測試集羣是否正常工做。
mysql -u root -p
輸入密碼
而後運行如下命令:
SHOW STATUS LIKE 'wsrep_local_state_comment'; show global status like 'wsrep_cluster_size';
他們應該獲得這樣的輸出:
經過此羣集設置結束。
HAproxy設置
首先,咱們須要在全部羣集節點上安裝clustercheck,以便羣集能夠經過HAproxy進行維護。讓咱們用wget獲取腳本
wget https://raw.githubusercontent.com/olafz/percona-clustercheck/master/clustercheck
腳本須要可執行並移動到您的$ PATH目錄之一。
chmod +x clustercheck mv clustercheck /usr/bin/
如今咱們還須要包含在xinetd包中的mysqlchk:
yum install xinetd
接下來,咱們在數據庫上移動create clustercheck user。咱們只能在第一個節點上輸入
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 ![圖片描述][1] ![圖片描述][2]
咱們完成後,咱們保存。請注意,除HAproxy以外的全部羣集節點都須要完成此操做。
如今是時候登陸咱們的HAporoxy服務器了。首先,咱們須要備份haproxy配置。
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bk
而後咱們將從乾淨的配置文件上設置新的配置
nano /etc/haproxy/haproxy.cfg
咱們能夠從這裏複製HAproxy配置,除了這三行須要更改 改爲對應IP和端口:
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地址:
全部節點都在線。接下來讓咱們在haproxy服務器上安裝percona客戶端,這樣咱們就能夠嘗試從那裏查詢集羣。
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" ![圖片描述][3]
結論
咱們已經設置了由HAproxy負載均衡的Percona XtraDB 3節點集羣。它與上週與MariaDB和Galera的文章相似,但使用Percona存儲引擎而沒有WordPress。這個Percona設置可用於託管各類各樣的數據集,您能夠再次使用它與WordPress一塊兒使用,就像咱們以前的文章同樣。咱們總結這篇文章,感謝您閱讀並度過了愉快的一天。
[1]: /img/bVbkKQo [2]: /img/bVbkKQr [3]: /img/bVbkKQt