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