B7-Haproxy 四层负载均衡

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

Haproxy 四层负载均衡


拓扑:                  
  app  ---->  mysql_master(write)
    | 
 haproxy(read)
    | 
mysql_slave*N



一 Haproxy 部分 
1 haproxy 代码

 
  1. listen  bbs_slave   10.0.100.82:3306  
  2.         mode tcp          #配置TCP模式  
  3.         maxconn 2000  
  4.         balance roundrobin  
  5.         #option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www 
  6.         server  slave01 10.0.100.75:3306 check port 9120 inter 5000 rise 3 fall 3 weight 3 
  7.         server  slave02 10.0.100.76:3306 check port 9120 inter 5000 rise 3 fall 3 weight 3 
  8.         srvtimeout      20000   



二 Mysql 部分 
2.1 mysql replication 监控脚本

 
  1. cat /usr/local/bin/mysqlrep_status.sh 
  2. #!/bin/bash 
  3. # /usr/local/bin/mysqlrep_status.sh 
  4. # This script checks if a mysql server is healthy running on localhost. It will 
  5. # return: 
  6. # "HTTP/1.x 200 OK\r" (if mysql is running smoothly) 
  7. # – OR – 
  8. # "HTTP/1.x 503 Internal Server Error\r" (else) 
  9.  
  10. mysql=/usr/local/bin/mysql 
  11. mysql_host="localhost" 
  12. mysql_port="3306" 
  13. mysql_username="root" 
  14. mysql_password="dongnan" 
  15. $mysql -u${mysql_username} -p${mysql_password} -e "show full processlist;" >/tmp/processlist.txt 
  16. $mysql -u${mysql_username} -p${mysql_password} -e "show slave status\G;" >/tmp/rep.txt 
  17. iostat=`awk '/Slave_IO_Running/ {print $2}' /tmp/rep.txt` 
  18. sqlstat=`awk '/Slave_SQL_Running/ {print $2}' /tmp/rep.txt`  
  19.  
  20. if [ "$iostat" = "Yes" ] && [ "$sqlstat" = "Yes" ];then 
  21.     /bin/echo -e "HTTP/1.1 200 OK\r\n" 
  22. else 
  23.     /bin/echo -e "HTTP/1.1 503 Service Unavailable\r\n" 
  24. fi 


2.2 配置 xinetd  
//定义服务,服务名一定要在 /etc/services列出

 
  1. tail -n1 /etc/services  

mysql_rep_check 9120/tcp

//定义 super daemon    

 
  1. cat >> /etc/xinetd.d/mysql_rep_check << EOF 
  2. # default: off 
  3. service mysql_rep_check 
  4.         flags           = REUSE 
  5.         socket_type     = stream 
  6.         wait            = no 
  7.         user            = nobody 
  8.         server          = /usr/local/bin/mysqlrep_status.sh 
  9.         log_on_failure  += USERID 
  10.         disable         = no 
  11.         
  12.  
  13. EOF 



2.3 重启xinetd

 
  1. /etc/init.d/xinetd restart 


2.4 xinetd 日志

 
  1. tail -n1 /var/log/messages 

Nov  8 16:44:27 one xinetd[12224]: Started working: 1 available service

2.5 查看自定义服务端口

 
  1. lsof -i :9120 

COMMAND   PID USER   FD   TYPE  DEVICE SIZE NODE NAME
xinetd  12224 root    5u  IPv4 1078320       TCP *:mysql_rep_check (LISTEN)

2.6 测试

 
  1. telnet 127.0.0.1 9120 

Trying 127.0.0.1...
Connected to one.test.com (127.0.0.1).
Escape character is '^]'.
HTTP/1.1 200 OK

Connection closed by foreign host.

流程
(1)应用服务器
(2)连接HAProxy的10.0.100.82:3306,根据算法,分配到一台mysql slave。
(3)检测slave的9120端口是否返回http 200状态码
(4)返回200 状态码,HAProxy 返回正常,继续服务
(5)返回503,剔除该slave,并将mysql请求转发到另外一台slave


参考
基于Keepalived+Haproxy搭建四层负载均衡器

MySQL从库集群方案之HAProxy篇


更多请:
linux 相关  274134275 , 37275208(已满)
vmware 虚拟化相关  166682360



本文转自 dongnan 51CTO博客,原文链接:http://blog.51cto.com/dngood/1120487

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
4天前
|
负载均衡 监控 网络协议
使用haproxy实现负载均衡集群
【4月更文挑战第14天】HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,快速并且可靠的一种解决方案。
8 1
|
5天前
|
负载均衡 应用服务中间件 PHP
使用nginx-haproxy实现七层负载均衡
【4月更文挑战第13天】使用nginx实现动静分离的负载均衡集群
20 4
|
5月前
|
负载均衡 算法 应用服务中间件
Haproxy负载均衡
Haproxy负载均衡
|
缓存 负载均衡 算法
Haproxy负载均衡集群(上)
一、常见的Web集群调度器 目前常见的Web集群调度器分为软件和硬件: 软件通常使用开源的LVS、Haproxy、 Nginx
151 0
|
负载均衡 安全 网络协议
Nginx四层负载均衡详解
Nginx四层负载均衡就是实现通过访问某个ip的端口转发至对应的服务器上,如图当访问10.0.0.5的5555端口就会跳转至web服务器172.1.16.7的22号端口,当访问10.0.0.5的6666端口就会转发到mysql服务器的3306端口,高效的保护了内网的安全。 为什么企业不再使用lvs而选择使用Nginx做负载 1.Nginx既支持四层又支持七层 2.很多企业使用云平台,但是云平台网络环境不支持lvs 3.都是用Nginx方便统一管理
856 0
Nginx四层负载均衡详解
|
负载均衡 网络协议 算法
Haproxy负载均衡集群(下)
一、常见的Web集群调度器 目前常见的Web集群调度器分为软件和硬件: 软件通常使用开源的LVS、Haproxy、 Nginx
164 0
|
负载均衡 调度
【集群】haproxy负载均衡
文章目录 前言 一、haproxy负载均衡 1.0 架构概况 1.1 负载均衡调度器 1.2 节点服务器 二、结语
88 0
|
负载均衡 网络协议 算法
haproxy负载均衡服务器
haproxy负载均衡服务器
haproxy负载均衡服务器
|
负载均衡 网络协议 前端开发
Nginx七层负载均衡
Nginx负载均衡 1.Nginx负载均衡概述 web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台web服务器组成集群,前端使用Nginx负载均衡,将请求分散的转发到我们后端服务器集群中,实现负载的分发,那么会大大提升系统的吞吐率、请求性能、高容灾
276 0
Nginx七层负载均衡
|
负载均衡 网络协议 关系型数据库
Nginx 四层负载均衡及反向代理配置
Nginx 四层负载均衡及反向代理配置
385 0

相关实验场景

更多