使用HaProxy实现Thrift服务端的负载均衡
来源:互联网 发布:mac os sierra壁纸 编辑:程序博客网 时间:2024/06/01 08:59
1.测试环境
操作系统:2台windows(Linux原理相同)
Haproxy工具:实现tcp负载均衡,轮训分配给2个Thrift Server提供服务
Thrift服务端:2个Thrift Server(提供一样的服务,多个Server类似)
Thrift客户端:没有Haproxy时是TCP直接连接Thrift-Server;有了Haproxy以后,TCP连接Haproxy的监听端口即可,由Haproxy来分配给Thrift-Server,客户端不用知道有哪些Thrift-Server。
备注:
a.由于在生产中使用的 windows Server,比较坑,没有keepalived工具,如果Haproxy部署的机器宕机了,会造成服务不可用,所以想了个比较简单的替代方法:
在两台机器上,部署两个一样的Haproxy程序;
在客户端连接Haproxy时,哪一个Haproxy程序能够连接成功就连接哪个,并写配置文件,下次这一个Haproxy程序作为首次连接程序;(并发量不高,应该够用了,但是Haproxy故障不能收到通知,还是用keepalived好,可以收到故障邮件通知)
2.windows下安装Haproxy工具
官网下载:没有翻墙的同学打不开
csdn下载:http://download.csdn.net/tag/haproxy
下载后直接解压即可:
3.Haproxy配置文件修改
###########全局配置#########global daemon nbproc 1 pidfile /var/run/haproxy.pid########默认配置############defaults mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK retries 2 #两次连接失败就认为是服务器不可用,也可以通过后面设置 option redispatch #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器 option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接 maxconn 4096 #默认的最大连接数 timeout connect 5000ms #连接超时 timeout client 30000ms #客户端超时 timeout server 30000ms #服务器超时 #timeout check 2000 #=心跳检测超时 log 127.0.0.1 local0 err #[err warning info debug]########统计页面配置########listen admin_stats bind 0.0.0.0:1080 #监听端口 mode http #http的7层模式 option httplog #采用http日志格式 #log 127.0.0.1 local0 err maxconn 10 stats refresh 30s #统计页面自动刷新时间 stats uri /stats #统计页面url stats realm XingCloud\ Haproxy #统计页面密码框上提示文本 stats auth admin:admin #统计页面用户名和密码设置 stats hide-version #隐藏统计页面上HAProxy的版本信息########testThrift配置#################listen ThriftServer bind 0.0.0.0:8888 balance roundrobin mode tcp option tcplog option tcp-check#maxconn 4086 log 127.0.0.1 local2 debug server ThriftServer1 127.0.0.1:9090 check server ThriftServer2 192.168.62.167:9090 check########frontend配置##############对配置文件的说明:
a.统计页面配置:Haproxy提供了一个html页面用来查看监听运行状态及日志,可输入地址访问:
http://localhost:1080/stats
b.testThrift配置:
bind 0.0.0.0:1080 #监听端口———Thrift客户端连接此IP和端口
server ThriftServer2 192.168.62.167:9090 check————Haproxy做负载均衡的Thrift服务端IP及端口
4.启动Haproxy
haproxy.exe -f haproxy.cfg -d
5.启动ThriftSerer
6.启动Thrift客户端
Thrift客户端连接Haproxy监听端口
public const string SERVERIP = "127.0.0.1"; public static int SERVERPORT = 8888; public static int TIMEOUT = 5000; public void startClient() { TTransport transport = null; try { transport = new TSocket(SERVERIP, SERVERPORT, TIMEOUT); //协议要和服务端一致 TProtocol protocol = new TBinaryProtocol(transport); MysqlService.Client client = new MysqlService.Client(protocol); transport.Open(); EquipNavTreeNode user = new EquipNavTreeNode(); user.Description = "liqb"; var listuser2 = client.getUser(1); Console.WriteLine("getUser success"); } catch (Exception e) { Console.WriteLine(e.StackTrace); } finally { if (null != transport) { //close transport.Close(); } } }
7.Thrift-Server轮询
来自客户端的请求被Haproxy转给了2个Thrift服务端。(本例HaProxy用的roundrobin负载均衡算法)
8.查看Haproxy运行状态
输入地址:http://localhost:1080/stats 用户名密码:admin
- 使用HaProxy实现Thrift服务端的负载均衡
- Thrift+Haproxy负载均衡
- 使用HAProxy实现Percona XtraDB Cluster的负载均衡
- haproxy 实现负载均衡
- 用HAProxy实现负载均衡
- 利用HAProxy 实现负载均衡
- 利用HAProxy实现负载均衡
- 利用HAProxy实现负载均衡
- HaProxy实现Mongos负载均衡
- 使用haproxy来实现sphinx负载均衡与健康监测
- 使用haproxy实现反向代理负载均衡实战
- HaProxy的负载均衡策略
- ubuntu下使用haproxy做tcp 层的负载均衡
- ubuntu下使用haproxy做tcp 层的负载均衡
- 使用haproxy做tcp 层的负载均衡
- RabbitMQ负载均衡(3)——Keepalived+HAProxy实现高可用的负载均衡
- 初尝利用HAProxy 实现负载均衡
- 初尝利用HAProxy 实现负载均衡
- Java并发编程:Lock
- HTTP协议详解
- MongoDB分布式设计-主从复制,副本集
- iOS 工厂模式
- oracle中date错误,ORA-01830: date format picture ends before converting entire input string
- 使用HaProxy实现Thrift服务端的负载均衡
- iOS应用程序内购/内付费(一)
- LTSpline
- Java反射机制
- 在 C++ 中使用QML对象
- Hdu 5664 Lady CA and the graph(有n个点的树,给定根,叫你找第k大的特殊链)
- 网速魔法师 v1.8 官方安装版
- git 使用教程,常用命令
- 说说这阵子遇到的烦人bug