设为首页 收藏本站
查看: 365|回复: 0

[经验分享] mysql负载均衡完美解决方案V1.0(2)

[复制链接]

尚未签到

发表于 2016-10-21 06:57:35 | 显示全部楼层 |阅读模式
  7.haproxy安装配置
下载编译安装:
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.11.tar.gz
tar xvzf haproxy-1.4.11.tar.gz
cd haproxy-1.4.11
make TARGET=linux26 ARCH=x86_64
make install
  
  配置
vi /etc/haproxy.cfg
  global
        maxconn 40000
        debug
        #quiet
        user haproxy
        group haproxy
        nbproc 1
        log 127.0.0.1 local3
        spread-checks 2
defaults
         timeout server  3s
         timeout connect 3s
         timeout client  60s
         timeout http-request 3s
         timeout queue   3s
  frontend db_write
        bind 192.168.5.10:3306
        default_backend cluster_db_write
  frontend db_read
        bind 192.168.5.20:3306
        default_backend cluster_db_read
  frontend web_haproxy_status
        bind :80
        default_backend web_status
  frontend monitor_mdb1
        bind 127.0.0.1:9301
        mode http
        acl no_repl_mdb1 nbsrv(mdb1_replication) eq 0
        acl no_repl_mdb2 nbsrv(mdb2_replication) eq 0
        acl no_mdb1 nbsrv(mdb1_status) eq 0
        acl no_mdb2 nbsrv(mdb2_status) eq 0
        monitor-uri /dbs
        monitor fail unless no_repl_mdb1 no_repl_mdb2 no_mdb2
        monitor fail if no_mdb1 no_mdb2
  frontend monitor_mdb2
        bind 127.0.0.1:9302
        mode http
        acl no_repl_mdb1 nbsrv(mdb1_replication) eq 0
        acl no_repl_mdb2 nbsrv(mdb2_replication) eq 0
        acl no_mdb1 nbsrv(mdb1_status) eq 0
        acl no_mdb2 nbsrv(mdb2_status) eq 0
        monitor-uri /dbs
        monitor fail unless no_repl_mdb1 no_repl_mdb2 no_mdb1
        monitor fail if no_mdb1 no_mdb2
  frontend monitor_sdb1
        bind 127.0.0.1:9303
        mode http
        acl no_repl_sdb1 nbsrv(sdb1_replication) eq 0
        acl no_repl_mdb1 nbsrv(mdb1_replication) eq 0
        acl no_mdb2 nbsrv(mdb2_status) eq 1
        monitor-uri /dbs
        monitor fail if no_repl_sdb1
        monitor fail if no_repl_mdb1 no_mdb2
  frontend monitor_sdb2
        bind 127.0.0.1:9304
        mode http
        acl no_repl_sdb2 nbsrv(sdb2_replication) eq 0
        acl no_repl_mdb1 nbsrv(mdb1_replication) eq 0
        acl no_mdb2 nbsrv(mdb2_status) eq 1
        monitor-uri /dbs
        monitor fail if no_repl_sdb2
        monitor fail if no_repl_mdb1 no_mdb2
  frontend monitor_sdb3
        bind 127.0.0.1:9305
        mode http
        acl no_repl_sdb3 nbsrv(sdb3_replication) eq 0
        acl no_repl_mdb2 nbsrv(mdb2_replication) eq 0
        acl no_mdb1 nbsrv(mdb1_status) eq 1
        monitor-uri /dbs
        monitor fail if no_repl_sdb3
        monitor fail if no_repl_mdb2 no_mdb1
  frontend monitor_sdb4
        bind 127.0.0.1:9306
        mode http
        acl no_repl_sdb4 nbsrv(sdb4_replication) eq 0
        acl no_repl_mdb2 nbsrv(mdb2_replication) eq 0
        acl no_mdb1 nbsrv(mdb1_status) eq 1
        monitor-uri /dbs
        monitor fail if no_repl_sdb4
        monitor fail if no_repl_mdb2 no_mdb1
  frontend monitor_splitbrain
        bind 127.0.0.1:9300
        mode http
        acl no_repl01 nbsrv(mdb1_replication) eq 0
        acl no_repl02 nbsrv(mdb2_replication) eq 0
        acl mdb1 nbsrv(mdb1_status) eq 1
        acl mdb2 nbsrv(mdb2_status) eq 1
        monitor-uri /dbs
        monitor fail unless no_repl01 no_repl02 mdb1 mdb2
  backend mdb1_replication
        mode tcp
        balance roundrobin
        option tcpka
        option httpchk
        server mdb1 192.168.5.11:3306 check port 9201 inter 1s rise 1 fall 1
 
backend mdb2_replication
        mode tcp
        balance roundrobin
        option tcpka
        option httpchk
        server mdb2 192.168.5.12:3306 check port 9201 inter 1s rise 1 fall 1
  backend sdb1_replication
        mode tcp
        balance roundrobin
        option tcpka
        option httpchk
        server sdb1 192.168.5.21:3306 check port 9201 inter 1s rise 1 fall 1
  backend sdb2_replication
        mode tcp
        balance roundrobin
        option tcpka
        option httpchk
        server sdb2 192.168.5.22:3306 check port 9201 inter 1s rise 1 fall 1
  backend sdb3_replication
        mode tcp
        balance roundrobin
        option tcpka
        option httpchk
        server sdb3 192.168.5.23:3306 check port 9201 inter 1s rise 1 fall 1
  backend sdb4_replication
        mode tcp
        balance roundrobin
        option tcpka
        option httpchk
        server sdb4 192.168.5.24:3306 check port 9201 inter 1s rise 1 fall 1
  backend mdb1_status
        mode tcp
        balance roundrobin
        option tcpka
        option httpchk
        server mdb1 192.168.5.11:3306 check port 9200 inter 1s rise 2 fall 2
 
backend mdb2_status
        mode tcp
        balance roundrobin
        option tcpka
        option httpchk
        server mdb2 192.168.5.12:3306 check port 9200 inter 1s rise 2 fall 2
  backend cluster_db_write
        mode    tcp
        option  tcpka
        balance roundrobin
        option  httpchk GET /dbs
        server  mdb1 192.168.5.11:3306 weight 1 check port 9201 inter 1s rise 5 fall 1
        server  mdb2 192.168.5.12:3306 weight 1 check port 9201 inter 1s rise 5 fall 1 backup
        server  mdb1_backup 192.168.5.11:3306 weight 1 check port 9301 inter 1s rise 2 fall 2 addr 127.0.0.1 backup
        server  mdb2_backup 192.168.5.12:3306 weight 1 check port 9302 inter 1s rise 2 fall 2 addr 127.0.0.1 backup
  backend cluster_db_read
        mode    tcp
        option  tcpka
        balance roundrobin
        option  httpchk GET /dbs
        server  mdb1 192.168.5.11:3306 weight 1 track cluster_db_write/mdb1
        server  mdb2 192.168.5.12:3306 weight 1 track cluster_db_write/mdb2
        server  mdb1_backup 192.168.5.11:3306 weight 1 track cluster_db_write/mdb1_backup
        server  mdb2_backup 192.168.5.12:3306 weight 1 track cluster_db_write/mdb2_backup
        server  mdb1_splitbrain 192.168.5.11:3306 weight 1 check port 9300 inter 1s rise 1 fall 2 addr 127.0.0.1
        server  mdb2_splitbrain 192.168.5.12:3306 weight 1 check port 9300 inter 1s rise 1 fall 2 addr 127.0.0.1
  server  sdb1_slave 192.168.5.21:3306 weight 1 check port 9303 inter 1s rise 5 fall 1 addr 127.0.0.1
        server  sdb2_slave 192.168.5.22:3306 weight 1 check port 9304 inter 1s rise 5 fall 1 addr 127.0.0.1
        server  sdb3_slave 192.168.5.23:3306 weight 1 check port 9305 inter 1s rise 5 fall 1 addr 127.0.0.1
        server  sdb4_slave 192.168.5.24:3306 weight 1 check port 9306 inter 1s rise 5 fall 1 addr 127.0.0.1
  
  backend  web_status
         mode http
         stats enable
       # stats scope
       # stats hide-version
         stats refresh 5s
         stats uri /status
         stats realm Haproxy\ statistics
         stats auth ylmf:gaojinbo
  
  8.测试
  1)正常情况,backup和splitbrain状态down
DSC0000.png
  
  2)停止mdb2复制,mdb2和sdb3,sdb4状态down,数据库仍可读写
DSC0001.png
  
  3)同时停止mdb1,mdb2复制,mdb1和sdb1,sdb2,sdb3,sdb4状态down,数据库只能读
DSC0002.png
  
  4)关闭mdb1数据库,mdb1,mdb2和sdb1,sdb2状态down,数据库仍可读写
DSC0003.png
  
  5)关闭mdb2数据库,mdb1,mdb2和sdb3,sdb4状态down,数据库仍可读写

  
  
  
  完成!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-289020-1-1.html 上篇帖子: MySQL数据库中添加判断(类似于if else) 下篇帖子: MySQL求两个时间的时间差
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表