Total Pageviews

Monday, 16 July 2012

HAProxy TCP 负载均衡与数据转发


配置文件重要参数:
global         maxconn 65535 #最大连接数,HAProxy是数据转发,每条数据链路占用两个连接。        
uid 99   #运行身份        
gid 99   #运行身份        
#daemon   #daemon方式运行        
#debug   #调试方式运行        
#quiet   #静默方式运行        
defaults         timeout connect 86400s #连接超时,超过设置时间,HAProxy会主动断开双方连接。        
timeout server  86400s        
timeout client  86400s                
listen  db_3601 0.0.0.0:13601 #设置转发实例        
mode tcp    #tcp模式,只转发,不分析        
option tcpka           
option srvtcpka        
option clitcpka        
balance roundrobin  #均衡算法        
server db_47_3601 192.168.120.47:3601 check inter 1000 rise 1 fall 2 #目标服务器定义        
server db_48_3601 192.168.120.48:3601 check inter 1000 rise 1 fall 2 #目标服务器定义

命令行重要参数:        
-D goes daemon   #设置为daemon方式运行        
-p writes pids of all children to this file  #将pid写入到文件中        
-sf/-st [pid ]* finishes/terminates old pids. Must be last arguments. #替换原有进程        
-f <cfgfile> #指定配置文件        

如何在更新配置文件后,快速重启服务:
通过-st指定原有进程的pid: haproxy -f /apps/haproxy/db.cfg -p /apps/haproxy/db.pid -D -st 26611

简单数据转发示例:
listen  db_3608 0.0.0.0:13608        
mode tcp        
option tcpka        
option srvtcpka        
option clitcpka        
balance roundrobin        
server db_47_3608 192.168.120.47:3608

简单负载均衡示例:
listen  http_8080 0.0.0.0:8080        
mode tcp        
option tcpka        
option srvtcpka        
option clitcpka        
balance roundrobin        
server http_69_80 192.168.120.69:80        
server http_67_80 192.168.120.67:80

简单TCP健康检查示例:        
server http_67_80 192.168.120.67:80 check inter 1000 rise 1 fall 2
其中:
check为健康检查指令。
inter 1000表示检察时间间隔为1000毫秒。
rise 1表示检查成功一次即将其标识为可用。
fall 2表示检查失败两次即将其标识为不可用。

简单数据库健康检查实例:  
option mysql-check        
server http_67_80 192.168.120.67:80 check inter 1000 rise 1 fall 2

简单主备模式数据转发:
listen  http_8080 0.0.0.0:8080        
mode tcp        
option tcpka        
option srvtcpka        
option clitcpka        
balance roundrobin        
server http_69_80 192.168.120.69:80 check        
server http_67_80 192.168.120.67:80 backup check #待实践

附:balance使用参考:
简单数据转发:
balance 8080 192.168.120.69:80
简单负载均衡:
balance 8080 192.168.120.69:80 192.168.120.67:80
调试用途:
balance 11211 192.168.120.69:80 -p -d -f