在 CentOS 7/RHEL 7 上安装和配置 Percona XtraDB 集群高可用性(3)

为 MySQL 选择高可用性解决方案以防止停机和数据丢失,确实是 IT 系统管理员需要处理的重要课题之一。
今天,我们将介绍 Percona XtraDB Cluster,这是市场上的 MYSQL 高可用性解决方案之一。

我们将添加一个带有 KeepAlived 的 HAProxy 备份节点,以防止对 CentOS 7/RHEL 7 上的 Percona XtraDB 集群节点的任何停机访问。

第 1 步:HAProxy 安装和配置

1安装HAProxy(备份节点)

[jack@onitroad ~]# yum install haproxy -y

2HAProxy文件配置:

[jack@onitroad ~] # mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.org
[jack@onitroad ~] # vi /etc/haproxy/haproxy.cfg

你的文件配置应该是这样的。

#global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        uid 99
        gid 99
        #daemon
        debug
        #quiet
defaults
        log     global
        mode    http
        option  tcplog
        option  dontlognull
        retries 3
        redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000
listen mysql-cluster 0.0.0.0:3306
    mode tcp
    balance roundrobin
    option  httpchk
    server pxc01 192.168.1.10:3306 check port 9200 inter 12000 rise 3 fall 3
    server pxc02 192.168.1.11:3306 check port 9200 inter 12000 rise 3 fall 3
    server pxc03 192.168.1.12:3306 check port 9200 inter 12000 rise 3 fall 3
listen stats 0.0.0.0:9000
## HAProxy stats web gui running on port 9000 - username  lotfi and password: secret
        mode http
        stats enable
        stats uri /stats
        stats realm HAProxy\ Statistics
        stats auth lotfi:secret
        stats admin if TRUE

3防火墙调整

[jack@onitroad ~]# firewall-cmd --permanent --add-port=9000/tcp
[jack@onitroad ~]# firewall-cmd --permanent --add-port=3030/tcp
[jack@onitroad ~]# firewall-cmd --reload

4启动/启用HAProxy

[jack@onitroad ~]# systemctl enable haproxy
[jack@onitroad ~]# systemctl start haproxy

第 3 步:检查和测试

– 使用端口 9000 上的 2 个 HAProxy 节点共享的浮动(虚拟)IP 地址打开浏览器:

所有节点都在线,现在让我们尝试使用浮动IP地址从客户端机器查询集群

[jack@onitroad ~]# mysql -u user -p -h 192.168.1.100 -P 3306 -e "SELECT * FROM clustertest.employees"
Enter password:
+--------+------------------+
| number | name             |
+--------+------------------+
|      1 | Lotfi Waderni    |
|      2 | Goir Andrea      |
|      3 | Filipo Goir      |
+--------+------------------+

最后,我们可以通过关闭 HAProxy 负载均衡器之一来测试 Percona XtraDB 集群的高可用性。

第 2 步:安装和配置 KeepAlived

1安装KeepAlived(负载均衡节点)

[jack@onitroad ~]# yum install keepalived -y

2获取设备名称

[jack@onitroad ~]# nmcli con show
NAME         UUID                                  TYPE            DEVICE
eno16777736  fa2f5a44-e4ea-4cd1-98bf-bc69bacfb1ee  802-3-ethernet  ens33

就像你在上面看到的,我的网络设备名称是 ens33

3 KeepAlived配置HAProxy主节点
在两个负载均衡器节点上,我们必须备份 keepAlived 配置文件

[jack@onitroad ~]# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.org

在主负载均衡器 lb01.yallalab.com 打开 /etc/keepalived/keepalived.conf 并添加以下配置

[jack@onitroad ~]# vi /etc/keepalived/keepalived.conf
vrrp_script chk_haproxy {
  script "killall -0 haproxy" # check the haproxy process
  interval 2 # every 2 seconds
  weight 2 # add 2 points if OK
}
vrrp_instance VI_1 {
  interface ens33 # interface to monitor
  state MASTER # MASTER on hAProxy1, BACKUP on hAProxy2
  virtual_router_id 51
  priority 101 # 101 on hAProxy1, 100 on hAProxy2
  virtual_ipaddress {
    192.168.1.100 # virtual ip address
  }
  track_script {
    chk_haproxy
  }
}

3 KeepAlived配置HAProxy Bakup节点

– 在备份负载均衡器 lb02.yallalab.com 上打开 /etc/keepalived/keepalived.conf 并添加以下配置

[jack@onitroad ~]# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.org
[jack@onitroad ~]# vi /etc/keepalived/keepalived.conf
vrrp_script chk_haproxy {
  script "killall -0 haproxy" # check the haproxy process
  interval 2 # every 2 seconds
  weight 2 # add 2 points if OK
}
vrrp_instance VI_1 {
  interface ens33 # interface to monitor
  state BACKUP # MASTER on hAProxy1, BACKUP on hAProxy2
  virtual_router_id 51
  priority 100 # 101 on hAProxy1, 100 on hAProxy2
  virtual_ipaddress {
    192.168.1.100 # virtual ip address
  }
  track_script {
    chk_haproxy
  }
}

-注意主备HAProxy有不同的优先级

4启用/启动KeepAlived
在两个 Haproxy 负载平衡节点上,使用以下命令启用并启动 KeepAlived 服务:

[jack@onitroad ~]# systemctl enable keepalived
[jack@onitroad ~]# systemctl start keepalived

5检查KeepAlived
要验证KeepAlived是否正在运行,我们可以使用以下命令检查是否为ens33设备分配了浮动IP

[jack@onitroad ~]# ip addr show ens33
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d5:01:2a brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.15/24 brd 192.168.1.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.1.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fed5:12a/64 scope link
       valid_lft forever preferred_lft forever

要验证 KeepAlived 是否正在运行,我们可以使用以下命令检查日志文件或者 ping Float IP:

[jack@onitroad ~]# ping 192.168.1.100 -c3
PING 192.168.1.100 (192.168.1.100) 56(84) bytes of data.
64 bytes from 192.168.1.100: icmp_seq=1 ttl=64 time=0.173 ms
64 bytes from 192.168.1.100: icmp_seq=2 ttl=64 time=0.115 ms
64 bytes from 192.168.1.100: icmp_seq=3 ttl=64 time=0.096 ms
--- 192.168.1.100 ping statistics --
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 0.096/0.128/0.173/0.032 ms
[jack@onitroad ~]# tail -f /var/log/messages

环境

本实验将由三个 CentOS 7 服务器/节点和 2 个 HAProxy 节点负载均衡器组成。

  • 节点 1
  • 主机名:pxc01.onitroad.com
  • IP 地址:192.168.1.10
  • 节点 2
  • 主机名:pxc02.onitroad.com
  • IP 地址:192.168.1.11
  • 节点 3
  • 主机名:pxc03.onitroad.com
  • IP地址:192.168.1.12
  • HAProxy 1
  • 主机名:lb01.onitroad.com
  • IP 地址:192.168.1.15
  • HAProxy 2
  • 主机名:lb02.onitroad.com
  • IP地址:192.168.1.16
  • HAProxy 1 和 HAProxy 2 之间共享的浮动(虚拟)IP
  • IP 地址:192.168.1.100
日期:2020-06-02 22:18:35 来源:oir作者:oir