关闭

使用HaProxy实现Thrift服务端的负载均衡

1590人阅读 评论(0) 收藏 举报
分类:


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





0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:55160次
    • 积分:1528
    • 等级:
    • 排名:千里之外
    • 原创:95篇
    • 转载:54篇
    • 译文:0篇
    • 评论:3条
    最新评论