docker技术快速实现前后端项目的集群化⑥基于haproxy创建pxc集群的负载均衡

docker技术快速实现前后端项目的集群化⑥基于haproxy创建pxc集群的负载均衡

# 创建存放haproxy的映射目录和负载均衡配置
# mkdir /data/haproxy
# vim /data/haproxy/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:admin
#数据库负载均衡
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 
    server  MySQL_4 172.18.0.5:3306 check weight 1 maxconn 2000
    server  MySQL_5 172.18.0.6:3306 check weight 1 maxconn 2000
    #使用keepalive检测死链
    option  tcpka

启动haproxy的容器,并且进入容器启动Haproxy这个程序

 

# 启动名称为h1的docker

[root@server01 haproxy]# docker run -it -d -p 4001:8888 -p 4002:3306 -v /data/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy

 

# 进入容器,启动Haproxy程序

[root@server01 haproxy]# docker exec -it h1 /bin/bash

root@f9ee51b26ac0:/# haproxy -f /usr/local/etc/haproxy/haproxy.cfg

创建haproxy监控mysql数据库的专用账户(不能登录数据库的一个账号)

create user 'haproxy'@'%' identified by '';

# 登录监控页面

http://10.11.0.206:4001/dbs

通过haproxy进行操作

关闭其中的两个节点,可以看到haproxy就将两个剔除掉了

通过haproxy插入数据可以正常同步到没有关闭的节点中,重新启动停掉的节点后能正常同步新增加的数据,说明集群可以正常运行

对其中的node mysql节点进行同步端口屏蔽,插入数据可以验证数据库的强一致性

进入pxcnode02进行数据强一致性测试

[root@server01 ~]# docker exec -u 0 -it pxcnode02 sh

sh-4.2# yum install iptable-service -y

 

# 添加防火墙策略,关闭数据同步的端口

sh-4.2# iptables -A INPUT -p tcp --dport 4567 -j DROP

sh-4.2# iptables -A OUTPUT -p tcp --dport 4567 -j DROP

# 向pxcnode02中写入数据发现无法同步

通过root权限进入容器的方法

# docker exec -it -u 0 pxcnode01 /bin/bash

 

posted @ 2020-07-31 15:28  reblue520  阅读(169)  评论(0编辑  收藏  举报