如何在CentOS 7上使用HAproxy Loadbalancer设置Percona XtraDB集群

翻译&转载来源: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
相关文章
相关标签/搜索