Docker多机集群部署之MySQL集群(PXC)
一、环境说明:宿主机:Win10虚拟机工具:VMware Workstation 15系统及版本:Ubuntu16.04Docker版本:18.09.3涉及到的虚拟主机:192.168.1.100 haproxy192.168.1.101 node1192.168.1.102 node2192.168.1.103 node3二、准备镜像#拉取percona/percona-xtradb-clust
一、环境说明:
宿主机:Win10
虚拟机工具:VMware Workstation 15
系统及版本:Ubuntu16.04
Docker版本:18.09.3
涉及到的虚拟主机:
192.168.1.100 haproxy
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
二、准备镜像
#拉取percona/percona-xtradb-cluster:5.6
#pxc5.7版本不支持不使用k8s或者etcd模式的docker集群。所以你要下载5.6镜像构建的,如果一定要5.7的,就用5.7.2的镜像进行集群构建。
docker pull percona/percona-xtradb-cluster:5.6
# 镜像重命名为pxc
docker tag percona/percona-xtradb-cluster:5.6 pxc
二、创建本地目录
mkdir -p /docker/pxc/mysql /docker/pxc/data
# 修改权限
cd /docker/pxc
chmod 777 mysql
chmod 777 data
三、创建容器
PS:切记因第一个节点初始化比较耗时一定要等第一个容器创建成功可以使用MySQL客户端连接了才能创建第二个,或者会报错创建不了下面的容器!!!
# node1:192.168.1.101
# 创建第1个MySQL节点
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -v /docker/pxc/mysql:/var/lib/mysql -v /docker/pxc/data:/data --privileged --name=db1 --net=host pxc
# node2:192.168.1.102
# 创建第2个MySQL节点 (192.168.1.101为主机1 ip)
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=192.168.1.101 -v /docker/pxc/mysql:/var/lib/mysql -v /docker/pxc/data:/data --privileged --name=db2 --net=host pxc
# node3:192.168.1.103
# 创建第3个MySQL节点
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=192.168.1.101 -v /docker/pxc/mysql:/var/lib/mysql -v /docker/pxc/data:/data --privileged --name=db3 --net=host pxc
# 至此,基于Docker的多机PXC集群搭建完成,亲测可用.若无法连接mysql则关闭防火墙.
四、解决虚拟机重启后Percona XtraDB Cluster(PXC)容器无法正常启动
进入之前创建的/docker/pxc/mysql目录下
编辑文件grastate.dat
[root@localhost _data]# vi grastate.dat
修改safe_to_bootstrap的值置为1
- # GALERA saved state
- version: 2.1
- uuid: 1fdc4f95-9625-11e9-9a33-a20935d979f9
- seqno: -1
- safe_to_bootstrap: 1
五、haproxy负载均衡
1、拉取镜像
docker pull haproxy
2、配置haproxy的文件
sudo touch /usr/local/src/haproxy/h1/haproxy.cfg
sudo vi /usr/local/src/haproxy/h1/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
#统计报告格式
stats realm Global\ statistics
#登陆帐户信息
stats auth admin:abc123456
#数据库负载均衡
listen proxy-mysql
#访问的IP和端口
bind 0.0.0.0:3307
#网络协议
mode tcp
#负载均衡算法(轮询算法)
#轮询算法:roundrobin
#权重算法:static-rr
#最少连接算法:leastconn
#请求源IP算法:source
balance roundrobin
#日志格式
option tcplog
#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测
option mysql-check user haproxy
server MySQL_1 192.168.71.198:3306 check weight 1 maxconn 2010
server MySQL_2 192.168.71.199:3306 check weight 1 maxconn 2000
#使用keepalive检测死链
option tcpka
3、mysql中创建用户
- create user 'haproxy'@'%' identified by '';
4、运行容器
docker run -it -d -p 4001:8888 -p 4002:3307 -v /usr/local/src/haproxy/h1:/usr/local/etc/haproxy --name haproxy1 --privileged --net=host haproxy
5、然后在浏览器打开192.168.71.198:8888/dbs
(刚刚在haproxy配置文件连设置的)
附件 |
更多推荐
所有评论(0)