首页 > 代码库 > load balancer 之 proxy

load balancer 之 proxy

今天一直在弄用apache来做web的负載均衡器,出现些问题如下:

    当web是基于http的时候,所有的正常。但是是现在的web是基于ssl的应用就出问题了,后面几台的web server 的证书都不一样,apache 作为ssl 的反向代理的时候,只能使用一个证书!!!

    apache的ssl 代理是从后面的server 到前面的client 之前又有两层ssl加密,严重的影响了效率。


想了好久,主要觉得原因还是apache的代理在iso的七层,虽然带来了好多有灵活性。但同时也带来了其他问题。就算后来用了nginx,但第二个多证书的透时问题还是存在。所以还是决定用那些可以支持4层的负载均衡(F5)的设备和软件(HAPROXY)。


由于haproxy是开源的产品,支持4层和7层的负载设置,所以是第一选择。


安装方法:


tar zxvf haproxy-1.4.13.tar.gz

make TARGET=linux26 PREFIX=/usr/local/haproxy  ##我的系统内核为2.6,所以target=linux26

make install PREFIX=/usr/local/haproxy

然后进行配置:

vi /etc/haproxy/haproxy.cfg

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        #log loghost    local0 info
        maxconn 4096
        #chroot /usr/share/haproxy            #chroot的执行环境,如果不存在此路径就会报错
        chroot /usr/local/haproxy
        uid 99
        gid 99
        daemon
        #debug
        #quiet

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option  redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000
        balance  roundrobin
        #haproxy web 管理界面
        stats   enable
        stats uri   /haproxy-stats        #通过  就可以访问 
        stats auth  hxadmin:123456

# proxy status check , not in need , 例如对两部主机进行监控的实例
listen web_proxy 10.86.3.180:80
        mode http                        #使用7层模式,
        option httpchk GET /index.htm    #用于健康检测的后端页面
#  #后端的主机 IP &权衡, ser201 自己定义 
        server ser201  10.86.2.201:80 weight 3 check    
        server ser202  10.86.2.202:81 weight 3 check

#实际用来负载的设备,运行的端口及主机名       
listen  ssl-relay 10.86.3.180:443

        mode    tcp            #使用4层模式
        balance roundrobin
        server  fpg201 10.86.2.201:443 check inter 2000 fall 3
        server  ins202 10.86.2.202:443 check inter 2000 fall 3
        server  back1  10.86.2.203:443 backup                #用作备份的主机


这个文档的所有例子都可以在 /haproxy-1.xxx/examples目录下找到,包到 haproxy.init 的启到脚本。

    所以只需要: #mv examples/haproxy.init /etc/init.d/haproxy

                #chmod a+x /etc/init.d/haproxy

                #chkcofig --add haproxy

                #service haproxy start 

     就可以成功创建haproxy的脚本,并且入系统自启到的services中,启动haproxy 服务。


注:如果启动过程出现/usr/sbin/haporxy not found 的相关提示,只要找到当前的haproxy所在位置,cp到/usr/sbin下就可

本文出自 “海无涯” 博客,请务必保留此出处http://plong.blog.51cto.com/3217127/1565998

load balancer 之 proxy