Haproxy在socket/tcp下传输数据的使用实例

使用场景

利用haproxy进行负载均衡,作用于socket下数据传输,非http访问负载均衡。
Haproxy在socket/tcp下传输数据的使用实例_第1张图片
假定场景如下,终端1和终端2负责收集数据,然后希望通过负载均衡器将数据转发到服务器上进行分析。
希望:
1、当两个终端都正常工作,却只有一台服务器(服务器1)时候,会把所有数据发给这台服务器。
2、当两个终端都正常工作,而且有两台服务器时候,会形成如图所示的情况,两个服务器分别处理两个终端的数据,平均分配。
3、当2的情况中出现某一台服务器宕机(服务器1),则此时,会将两个终端收集到的数据都交给另一台服务器(服务器2)进行处理。
特点:原本终端发送数据给服务器时是采用消息中间件zeromq进行通信,保持的连接固然是socket长连接,所以在haproxy启动过程中,需指明为TCP连接(网络4层),而不是http(网络7层)连接。

操作流程

安装参考:高负载均衡学习haproxy之安装与配置
http://www.cnblogs.com/ilanni/p/4750081.html

设置配置文件haproxy.cfg

global     # 全局参数的设置
log  127.0.0.1 local2      
 # log语法:log [max_level_1] 
 # 全局的日志配置,使用log关键字,
    # 指定使用127.0.0.1
    # 上的syslog服务中的local0日志设备,记录日志等级为info的日志
    chroot  /usr/local/haproxy          #改变当前工作目录
    pidfile  /usr/local/haproxy/logs/haproxy.pid       #当前进程id文件
    maxconn  4000     #最大连接数
    user  haproxy      #所属用户
    group  haproxy     #所属组
    daemon     #以守护进程方式运行haproxy
    #stats socket /usr/local/haproxy/stats
defaults
mode   tcp   
 #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
    log   global       #应用全局的日志配置
option    tcplog                                                             
option   dontlognull  
option   redispatch  
retries  3 
    timeout connect         10s                #连接超时
    timeout client          1m                   #客户端超时
    timeout server          1m                   #服务器端超时
    maxconn                 3000                 #每个进程可用的最大连接数   
listen rabbitmq_local_cluster 10.100.100.171:8082 
mode tcp
    balance     roundrobin                               #负载均衡算法
server  web001 10.100.100.171:7000  check inter 2000 fall 3 weight 30 
 #定义的多个后端
server  web002 10.100.100.171:7001  check inter 2000 fall 3 weight 30 
 #定义的多个后端
listen private_monitoring :8101
    mode http
    option httplog
    stats enable
    stats uri /stats
stats refresh 1s

常用命令

复制配置文件到haproxy安装目录

sudo cp /home/ishadow/Desktop/haproxy.cfg /usr/local/haproxy/

加载指定配置文件haproxy.cfg启动haproxy

sudo /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

关闭所有启动的haproxy进程(haproxy可以重复启动)

killall haproxy

最终效果

访问url:http://10.100.100.171:8101/stats 可以查看haproxy实时负载和请求情况
总结
1、haproxy安装并不难,但配置文件会因使用场景不同而不同,需要理解配置文件。
2、在http模式下使用haproxy是将请求负载均衡,而在tcp模式下使用haproxy是将连接负载均衡。
3、Tcp模式下是网络模型第4层连接,与上层协议无关,所以是否使用了例如zeromq、rabbitmq等中间件不会影响haproxy的负载均衡算法,也不会影响haproxy的使用。
4、Haproxy可以完成负载分担、失效转移、主从备份等多种场景下的任务,设置好配置文件即可。

安装参考:
http://www.cnblogs.com/ilanni/p/4750081.html

你可能感兴趣的:(云计算)