1、创建宿主机挂载目录
mkdir /iids/haproxy
2、创建haproxy配置文件
vi haproxy.cfg
#配置如下
global
#工作目录
chroot /usr/local/etc/haproxy
#日志文件,使用rsyslog服务中local5日志设备(/var/log/local5),等级info
log 127.0.0.1 local5 info
#守护进程运行
daemon
defaults
mode tcp #haproxy运行模式
log global
option dontlognull
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 600 #最大连接数
########统计页面配置########
listen admin_status
mode http
bind :6677 #找一个比较特殊的端口
stats enable
stats hide-version #隐藏haproxy版本号
stats uri /admin #一会用于打开状态页的uri
stats realm Haproxy\ Statistics #输入账户密码时的提示文字
stats auth admin:admin #用户名:密码
stats admin if TRUE #开启状态页的管理功能
#数据库负载均衡
listen proxy-mysql
#访问的IP和端口
bind 0.0.0.0:3306
#网络协议
mode tcp
#负载均衡算法(轮询算法)
#轮询算法:roundrobin
#权重算法:static-rr
#最少连接算法:leastconn
#请求源IP算法:source
balance roundrobin
#日志格式
option tcplog
#在MySQL中创建一个没有权限的haproxy用户,密码为空。
option mysql-check user haproxy
server mysql_master 172.18.39.166:3306 check weight 1 maxconn 2000
server mysql_salve 172.18.39.167:3306 check weight 1 maxconn 2000
#使用keepalive检测死链
option tcpka
3、启动容器
docker run -it -d \
-v /iids/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg \
--name haproxy \
--privileged \
--net=host \
haproxy:2.1
4、创建mysql检测用户
docker exec -it pn1 mysql -u root -p 123456
use mysql
create user 'haproxy'@'%' identified by '';
flush privileges;
如果创建失败,可能用户存在,则执行删除用户
drop user 'haproxy'@'%'
5、docker重启后,pxc集群无法启动
由于pxc集群要求强一致性,导致docker重启后,集群节点无法启动。需要修改持久卷中的集群信息设置配置,才能启动。
操作持久卷命令
sudo docker volume ls 【查看已有的数据卷】
sudo docker volume create pnv1 【创建一个叫做pnv1的数据卷】
sudo docker volume rm 数据卷名字 【删除某个数据卷】、
sudo docker volume inspect pnv1 【查看某个数据卷详情】
修改持久卷中的配置文件
#1.依次找出数据卷映射目录,修改参数
sudo docker inspect v1
[
{
"Driver": "local",
"Labels": {},
#持久卷路径
"Mountpoint": "/var/lib/docker/volumes/v1/_data",
"Name": "v1",
"Options": {},
"Scope": "local"
}
]
#2.修改配置文件
cd到目录下
vi grastate.dat
safe_to_bootstrap设置成1
#3.启动节点
docker start pxc节点