zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    西门子1200/1500 PLC FC/FB块的区别
    Monaco Editor --Web编辑器 自定义主题、代码提示等
    C# 强制GC垃圾回收
    C# 注册表操作类(查询、修改、删除)
    WinForm重绘Combobox控件无边框样式
    Http-server搭建本地服务
    C# 压缩解压文件夹
    递归获取当前节点和所有父节点
    递归获取当前父节点下的所有子集
    轻量级的通信引擎 StriveEngine
  • 原文地址:https://www.cnblogs.com/reblue520/p/13409947.html
Copyright © 2011-2022 走看看