Docker 搭建pxc集群 + haproxy + keepalived 高可用(二)

上一节我们有了两个分片的pxc集群,这一节我们接着安装haproxy和keepalived的实现集群的高可用

一、先下载haproxy的镜像

[root@localhost ~]# docker pull haproxy

二、在host主机上写好配置文件,启动容器时候读取haproxy.cfg,vim /usr/local/docker/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:haproxy
#数据库负载均衡
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

 三、在pxc集群里面先创建haproxy用户并授予权限

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

 四、启动第一个haproxy容器

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

启动haproxy

docker exec -it h1 bash

haproxy -f /usr/local/etc/haproxy/haproxy.cfg

先设置配置文件,vim /usr/local/docker/haproxy2/haproxy.cfg,当然你也可以设置其他的目录来存放第二个haproxy的配置文件

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:haproxy
#数据库负载均衡
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.5:3306 check weight 1 maxconn 2000
    server  MySQL_2 172.18.0.6:3306 check weight 1 maxconn 2000
    server  MySQL_3 172.18.0.7:3306 check weight 1 maxconn 2000
    #使用keepalive检测死链
    option  tcpka

接着我们启动第二个haproxy容器

[root@localhost haproxy]# docker run -it -d -p 4003:8888 -p 4004:3306 -v /usr/local/docker/haproxy2:/usr/local/etc/haproxy --name h2 --privileged --net=pxc_network --ip 172.18.0.20 haproxy

 启动haproxy

docker exec -it h1 bash

haproxy -f /usr/local/etc/haproxy/haproxy.cfg 

  五、集群的监控界面,http://192.168.1.19:4001/dbs

 

posted @ 2019-04-08 00:49  北方莜蓝  阅读(601)  评论(1编辑  收藏  举报