docker pull percona/percona-xtradb-cluster
docker tag pivotalcf/lts-pxc pxc
docker network create --subnet=172.18.0.0/24 net1
-subnet 指定子网网段
docker volume create v1
docker run -d -p 3307:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc
参数解释:
-d:表示后台运行
-v:映射Docker卷到容器的mysql数据目录
MYSQL_ROOT_PASSWORD:表示创建的数据库密码
CLUSTER_NAME: 表示创建出的集群名字
XTRABACKUP_PASSWORD:表示集群通信密码
–privileged:表示分配最高权限
–net:指定网段
–ip:指定IP
docker volume create --name v2docker volume create --name v3
每个pxc节点运行完毕后要等个一两分钟,保证上一个节点初始化完毕才能运行下一个节点。可以用可视化工具连接判断是否初始化数据库成功。
docker run -d -p 3308:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxcdocker run -d -p 3309:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc
参数说明:
CLUSTER_JOIN : 表示加入node1节点
注意:第一个节点创建时间较长,必须等待两分钟左右再创建剩余节点。
创建好之后我们就可以使用客户端连接数据库
docker pull haproxy
touch /home/soft/haproxy/haproxy.cfg
global #工作目录 chroot /usr/local/etc/haproxy #日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info log 127.0.0.1 local5 info #守护进程运行 daemondefaults 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:3306 #网络协议 mode tcp #负载均衡算法(轮询算法) #轮询算法:roundrobin #权重算法:static-rr #最少连接算法:leastconn #请求源IP算法:source balance roundrobin #日志格式 option tcplog #在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测 option mysql-check user haproxy server MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000 server MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000 server MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000 #使用keepalive检测死链 option tcpka
docker run -it -d -p 4001:8888 -p 3306:3306 -v /home/soft/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg --name h1 --privileged --net=net1 docker.io/haproxy
第一个端口配置是监控界面端口, 第二个为提供对外tcp访问的端口,
-v 映射宿主机目录到linux虚拟机目录
1,查看容器iddocker ps2,进入容器docker exec -it h1 bash3,运行haproxy 并指定haproxy配置文件haproxy -f /usr/local/etc/haproxy/haproxy.cfg
create user 'haproxy'@'%' identified by '';
xiongchuanhong.cn:4001/dbs 用户名:admin密码:abc123456(配置文件中的)
docker exec -it h1 bashapt-get updateapt-get install keepalived
keepalived 配置文件路径 /etc/keepalived/keepalived.conf
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 123456 } virtual_ipaddress { 172.18.0.201 }}
service keepalived start
pxc集群只要保证了集群中节点个数大于一半就可以保证正常运行
node2挂了
docker satrt node2
node1和node2都挂了
#1,停掉剩余的不能运行节点docker stop node3#2,查看pxc的grastate.datcat /var/lib/docker/volumes/v1/_data/grastate.datcat /var/lib/docker/volumes/v2/_data/grastate.datcat /var/lib/docker/volumes/v3/_data/grastate.dat
grastate.dat文件内容
version: 2.1
uuid: 132aaee5-7d0e-11e9-ac50-8666961e3c57
seqno: -1
safe_to_bootstrap: 0
safe_to_bootstrap 为1 代表此节点在start启动时作为主节点,当查看node1,node2,node3的该文件时,发现都为0,这样直接启动就会导致pxc找不到主节点的情况,导致启动失败。
解决办法,随便修改一个节点的safe_to_bootstrap的值,变为1,先启动这个节点,再启动另外两个节点即可。
联系客服