您的位置:首页 > 理论基础 > 计算机网络

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

2016-11-16 17:34 447 查看

使用场景

利用haproxy进行负载均衡,作用于socket下数据传输,非http访问负载均衡。



假定场景如下,终端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 <address_1>[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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息