docker compose 搭建pxc集群
yls
2020/5/2
- 创建目录结构
cd /usr/local/docker
mkdir pxc
cd pxc
mkdir data master follower
# 创建数据卷
cd data
mkdir v1 v2 v3
# 设置权限
chmod 777 v1 v2 v3
- 创建pxc集群的网络
docker network create --subnet 192.168.5.1/24 pxc
- 创建master节点的docker-compose.yml文件
version: '3'
services:
pxc1:
image: pxc
restart: always
container_name: pxc1
privileged: true
ports:
- 13306:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- CLUSTER_NAME=pxc
volumes:
- ../data/v1:/var/lib/mysql
- ./etc/my.cnf:/etc/my.cnf
networks:
default:
external:
name: pxc
- 创建配置文件my.cnf
[mysqld]
skip-name-resolve
max_allowed_packet= 20M
docker-compose up -d
运行master节点
通过docker network inspect pxc
可以查看到master节点的ip为192.168.5.2
- 创建follower节点的docker-compose.yml文件
version: '3'
services:
pxc2:
image: pxc
container_name: pxc2
restart: always
privileged: true
ports:
- 13307:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- CLUSTER_NAME=pxc
- CLUSTER_JOIN=192.168.5.2
volumes:
- ../data/v2:/var/lib/mysql
- ./etc/my.cnf:/etc/my.cnf
networks:
default:
ipv4_address: 192.168.5.5
pxc3:
image: pxc
container_name: pxc3
restart: always
privileged: true
ports:
- 13308:3306
environment:
- MYSQL_ROOT_PASSWORD=root
- CLUSTER_NAME=pxc
- CLUSTER_JOIN=192.168.5.2
volumes:
- ../data/v3:/var/lib/mysql
- ./etc/my.cnf:/etc/my.cnf
networks:
default:
ipv4_address: 192.168.5.4
networks:
default:
external:
name: pxc
- 创建follower配置文件my.cnf
[mysqld]
skip-name-resolve
max_allowed_packet= 20M
docker-compose up -d
运行follower节点
- 用客户端连接各个节点,测试是否都可以读写操作且读写数据一致
若要重启master节点,修改v1/grastate.dat文件中的safe_to_bootstrap=1
使用haproxy对集群做负载均衡
- 下载haproxy
yum -y install haproxy
- 修改/etc/haproxy/haproxy.cfg文件,添加
listen stats
bind 0.0.0.0:1083
mode http
stats uri /stats
stats auth admin:admin
listen mysql-cluster
bind 0.0.0.0:1082
mode tcp
balance roundrobin
server db01 39.97.234.52:13306 check
server db01 39.97.234.52:13307 check
server db03 39.97.234.52:13308 check
- 启动haproxy
systemctl start haproxy
systemctl status haproxy 查看状态
systemctl stop haproxy 停止
systemctl restart haproxy 重启
-
访问
http://ip:1083/stats
,用户名:admin,密码:admin登录 -
使用mysql客户端连接ip:主机ip地址,port:1082查看是否负载均衡成功