安裝:
$ sudo apt-get install haproxy
檢查haproxy版本
$ haproxy -v
檢查haproxy設定檔 ( /etc/haproxy/haproxy.cfg )
$ haproxy -V -c -f haproxy.cfg
設定:
1. 編輯 /etc/default/haproxy ,將 ENABLED=0 改為 1
2. 避免 [ALERT] 243/175711 (2715) : Starting proxy http_proxy: cannot bind socket 錯誤
# sysctl -e net.ipv4.ip_nonlocal_bind=1
3. 解決 [ALERT] 243/175711 (2715) : Starting proxy http_proxy: cannot bind socket 錯誤
原來是nginx把 80 port 佔用了,要把nginx 換成其他port
把 /etc/nginx/sites-available 中vhost設定檔中server{}中的 listen 換成其他port
ex.
然後重啟nginx
4. 編輯haproxy.cfg (因為我的haproxy版本是1.4,所以照 http://cbonte.github.io/haproxy-dconv/configuration-1.4.html#2.3 上面改的)
global daemon maxconn 256 defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend http-in bind *:80 default_backend servers2 frontend http-in2 bind *:88 default_backend servers backend servers server server1 192.168.1.140:80 maxconn 32 backend servers2 server server2 192.168.1.147:81 maxconn 32
架構
我的VM( 192.168.1.147 ):
haproxy 80
nginx 81
我電腦(win 7, 192.168.1.140):
apache 80
結果
http://192.168.1.147:88/ 開windows apache 80 程式
http://192.168.1.147/ 開VM nginx 81 程式
http://192.168.1.147:81/ 開VM nginx 81 程式
註:
如果只設一組 frontend 兩組backend
frontend http-in
bind *:80
default_backend servers
backend servers
server server1 192.168.1.140:80 maxconn 32
server server2 192.168.1.147:81 maxconn 32
這樣打開 http://192.168.1.147 在firefox用 ctrl+f5 刷頁,會在 192.168.1.140:80 和 192.168.1.147:81 兩台主機切換
參考資料:
http://blog.longwin.com.tw/2009/03/haproxy-ha-load-balance-2009/ 使用 HAProxy 完成 網站分流, 平衡負載
http://cbonte.github.io/haproxy-dconv/configuration-1.4.html#2.3 HAProxy Configuration Manual ( 1.4 example )
沒有留言:
張貼留言