Http Load Balance

Hôm trước có học về Ha Proxy, Bình bảo làm video nhưng ngại nên hn viết tut ( tutorial)
Chuẩn bị topo
-------------------192.168.1.34---------------
-------------------Ha proxy-------------------
-------------------10.0.0.1-------------------
---10.0.0.2----------------------10.0.0.3-----
----web1---------------------------web2-------
---172.16.0.2------------------172.16.0.3-----
--------------172.16.0.1----------------------
------file, DB proxy--------------------------

Ở đây làm 1 máy File, DB chung, nếu nâng cấp thì đây sẽ là proxy file và DB
Máy HaProxy, web1 web2 có 2 card mạng, thiết lập ip như trên
Máy HaProxy cài base, web1 web2 cài httpd
file, DB yêu cầu có NFS server và MySQL Server
Bắt đầu: Tại HaProxy:
Dùng gói: haproxy-1.3.14.6-1.el5.i386.rpm

rpm -Uvh haproxy-1.3.14.6-1.el5.i386.rpm

H cấu hình cho haproxy, file cấu hình ở: /etc/haproxy/haproxy.cfg. Trong ấy có sẵn nhưng mình chỉ dùngn những tham số sau:

global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice

#log loghost local0 info
maxconn 4096

#debug

#quiet
user haproxy
group haproxy

defaults
log global
mode http
option httplog
option dontlognull
retries 3
redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000

listen webfarm 192.168.1.34:80
mode http
stats enable
stats auth admin:123456
balance roundrobin
cookie JSESSIONID prefix
option httpclose
option forwardfor
option httpchk HEAD /check.txt HTTP/1.0
server sv1 10.0.0.2:80 cookie A weight 10 check
server sv2 10.0.0.3:80 cookie B weight 50 check

Lưu ý: listen webfarm 192.168.1.34:80 là ip server proxy lắng nghe,
server sv1 10.0.0.2:80 cookie A weight 10 check là web server phân tải
balance roundrobin sử dụng cơ chế roundbin quay vòng
stats auth admin:123456 user/pass để giám sát
service haproxy start
Vào bằng url: 192.168.1.34/haproxy?stats
Đăng nhập vào sẽ thấy sv1 và sv2 ở trạng thái down.
Trên web1 và web2, tại apache document root tạo file: check.txt
echo "OK" > /var/www/html/check.txt
F5 lại proxy, sv1 và 2 up :D
Xong phần phân tải.
H đến File:
Tại máy web1 và 2, dùg file config như nhau. Lưu ý là phần vhost chỉ khác ip lắng nghe, còn lại path đến document host là như nhau. Giả sử là /home/abc
Tạo thư mục /home/abc, chmod 755 để apache read
Trên máy file, cũng tạo /home/abc, đây là nơi lưu nội dung của abc.
Tại máy file, sửa file /etc/exports:
Thêm:
/abc 172.16.0.0/255.255.0.0(rw)
service nfs restart
Trên máy web1 và 2, tiến hành mount
mount -t nfs //172.16.0.1:/abc /home/abc
Thử tạo file trên máy file rồi check trên web1 và 2
Với MySql, khi setup web ko dùng localhost để trỏ tới DB server mà là ip của máy DB server ( hoặc hostname của nó nếu khai báo)
Xong. :D
---------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------
All my Lab:
Linux Lab -- window and Cisco Lab
to be continued - I will update more.

Nam Habach