今天一直在弄用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下就可