注意事项:
1.切记percona/percona-xtradb-cluster 的版本要统一,否则可能出现各种各样的问题
2.宿主机要关闭SELINUX。修改文件vi /etc/selinux/config
,设置SELINUX为disabled,然后reboot机子
启动创建pxc服务
两台主机为:
宿主机1:192.168.10.4
宿主机2:192.168.10.6
- 主节点(在宿主机1上执行)
docker run -d --net=host -v /home/workspace/aliyun-pxc/data/node1:/var/lib/mysql \
-v /home/workspace/aliyun-pxc/config/node1:/etc/percona-xtradb-cluster.conf.d \
-e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=ALIYUNPXC \
-e XTRABACKUP_PASSWORD=root --name=pxc1 --restart=always \
percona/percona-xtradb-cluster:8.0.30-22.1 --lower_case_table_names=1 \
--wsrep_node_address=192.168.10.4 --bind_address=192.168.10.4
- 子节点1(在宿主机2上执行)
docker run -d -v /home/workspace/aliyun-pxc/data/node2:/var/lib/mysql \
-v /home/workspace/aliyun-pxc/config/node2:/etc/percona-xtradb-cluster.conf.d \
-e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=ALIYUNPXC \
-e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=192.168.10.4 --net=host \
--name=pxc2 --restart=always percona/percona-xtradb-cluster:8.0.30-22.1 \
--lower_case_table_names=1 --wsrep_node_address=192.168.10.6 --bind_address=192.168.10.6
子节点需要将父节点中/home/workspace/aliyun-pxc/data/node1目录下的server-key.pem、server-cert.pem、client-key.pem、client-cert.pem、ca.pem传输到其他子节点,然后重启。
/home/workspace/aliyun-pxc/config/node*映射目录放my.cnf配置问题,如果无特别需求不创建my.cnf也行,使用默认配置。
机器多的话继续参考子节点1继续进行创建节点。
创建 haproxy
- haproxy配置文件(分别在所有宿主机的 /home/workspace/haproxy/config目录创建haproxy.cfg)
global
#工作目录
chroot /usr/local/etc/haproxy
#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
log 127.0.0.1 local5 info
#守护进程运行
daemon
defaults
log global
mode http
#日志格式
option httplog
#日志中不记录负载均衡的心跳检测记录
option dontlognull
#连接超时(毫秒)
timeout connect 5000
#客户端超时(毫秒)
timeout client 50000
#服务器超时(毫秒)
timeout server 50000
#监控界面
listen admin_stats
#监控界面的访问的IP和端口
bind 0.0.0.0:8888
#访问协议
mode http
#URI相对地址
stats uri /dbs_monitor
#统计报告格式
stats realm Global\ statistics
#登陆帐户信息
stats auth admin:admin
#数据库负载均衡
listen proxy-mysql
#访问的IP和端口(前面ip=0代表任何ip都可访问)
bind 0.0.0.0:3306
#网络协议
mode tcp
#负载均衡算法(轮询算法)
#轮询算法:roundrobin
#权重算法:static-rr
#最少连接算法:leastconn
#请求源IP算法:source
balance roundrobin
#日志格式
option tcplog
#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
option mysql-check user haproxy
server NODE1 192.168.10.6:3406 check weight 2 maxconn 2000
server NODE2 192.168.10.4:3406 check weight 1 maxconn 2000
option tcpka
注意:配置文件最后要有一个空行,否则会提示配置文件错误。
- 创建haproxy节点1
docker run -d -v /home/workspace/haproxy/config:/usr/local/etc/haproxy \
--privileged --net=host --name haproxy01 --restart=always haproxy:2.3
- 创建haproxy节点2
docker run -d -v /home/workspace/haproxy/config:/usr/local/etc/haproxy \
--privileged --net=host --name haproxy02 --restart=always haproxy:2.3
在两台宿主机上安装keepalived
- 安装
yum install keepalived
- 开机自启配置
systemctl enable keepalived
- 创建配置文件keepalived.conf(在/etc/keepalived目录下)
vrrp_instance VI_1 {
state MASTER
#这里是宿主机的网卡,可以通过ip a查看当前自己电脑上用的网卡名是哪个
interface eth0
virtual_router_id 100
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
#定义虚拟ip地址,必须要在和haproxy同一个网段
virtual_ipaddress {
192.168.10.100
}
}
- 重启keepalived服务
service keepalived restart
访问监听页面/连接数据库
http://192.168.10.100:8888/dbs_monitor
连接数据库( ip:192.168.10.100 端口:3306)文章来源:https://www.toymoban.com/news/detail-425980.html
测试发现成功了文章来源地址https://www.toymoban.com/news/detail-425980.html
到了这里,关于两台宿主机搭建keepalived+Haproxy+mysql实现高可用负载均衡集群(电脑有限弄了两台,更多台同理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!