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

liang枫 2019-06-29

翻译&转载来源:https://linoxide.com/cluster/...

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

我们之前展示了如何使用HAproxy设置MariaDB Galera集群,今天我们将使用Percona的MySQL发行版进行类似的设置。Percona是一家拥有MySQL和MongoDB深厚专业知识的公司,他们自己分发这些数据库以及两个数据库的存储引擎。今天我们只专注于MySQL,而不是专注于该公司的MongoDB产品。

设置主机,防火墙和存储库
首先通过设置hosts文件启动。我们为Percona集群提供了三个节点,为HAproxy提供了一个节点。所有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。那将需要不同的设置,我们将做后者。首先让我们在所有三个percona节点上启动firewalld。

systemctl start firewalld

然后我们允许mysql服务。Pecona是mysql发行版,所以它使用与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

然后我们删除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

相关推荐