2015年9月2日 星期三

haproxy使用心得

系統:ubuntu14.04

安裝:
$ 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
ENABLED=0 => ENABLED=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.
listen 80; => listen 81;
listen [::]:80; => listen [::]:81;
然後重啟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 )



沒有留言:

張貼留言