一、为什么要使用数据库集群和负载均衡?
1.高可用
2.高并发
3.高性能
二、mysql数据库集群方式
docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
# 创建node1
docker run -d -p 8002:3306 -v v1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=qwe123 -e XTRABACKUP_PASSWORD=qwe123 -e CLUSTER_NAME=PXC --name=node1 --net=net1 --ip 172.18.0.2 percona/percona-xtradb-cluster:5.7# 创建node2
docker run -d -p 8003:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=qwe123 -e XTRABACKUP_PASSWORD=qwe123 -e CLUSTER_NAME=PXC -e CLUSTER_JOIN=node1 --name=node2 --net=net1 --ip 172.18.0.3 percona/percona-xtradb-cluster:5.7# 创建node3
docker run -d -p 8004:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=qwe123 -e XTRABACKUP_PASSWORD=qwe123 -e CLUSTER_NAME=PXC -e CLUSTER_JOIN=node1 --name=node3 --net=net1 --ip 172.18.0.4 percona/percona-xtradb-cluster:5.7
# 拉取haproxy image
docker pull haproxy# 在虚拟机中创建保存haproxy配置文件的目录
mkdir -p ~/haproxy_conf/
# 创建haproxy.cfg配置文件
global#工作目录chroot /usr/local/etc/haproxy#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级infolog 127.0.0.1 local5 info#守护进程运行daemondefaultslog globalmode httpoption httplogoption dontlognulltimeout connect 5000timeout client 50000timeout server 50000#监控界面
listen admin_stats#监控界面的访问的IP和端口bind 0.0.0.0:8888#访问协议mode http#URI相对地址stats uri /stats realm Global\ statistics#登陆帐户信息stats auth admin:qwe123
#数据库负载均衡
listen proxy-mysql#访问的IP和端口bind 0.0.0.0:3306#网络协议mode tcp#负载均衡算法(轮询算法)#轮询算法:roundrobin#权重算法:static-rr#最少连接算法:leastconn#请求源IP算法:sourcebalance roundrobin#日志格式option tcplog#在MySQL中创建一个没有权限的haproxy用户,密码为空。Haproxy使用这个账户对MySQL数据库心跳检测option mysql-check user haproxyserver MySQL_1 172.18.0.2:3306 check weight 1 maxconn 2000server MySQL_2 172.18.0.3:3306 check weight 1 maxconn 2000server MySQL_3 172.18.0.4:3306 check weight 1 maxconn 2000option tcpka# 运行容器
docker run -it -d -p 8078:8888 -p 8036:3306 -v \ /home/pyvip/haproxy_conf:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.5 haproxy# 进入haproxy容器,启动haproxy
docker exec -it h1 bash# 加载haproxy配置文件
haproxy -f /usr/local/etc/haproxy/haproxy.cf