Kênh Giải Pháp VN - Công Nghệ Máy Chủ Mạng - Giải Pháp Máy Chủ - Giải Pháp Mạng Doanh Nghiệp - Tư Vấn Giải Pháp Mạng Máy Chủ - VN Solutions Channel :: Thiết lập 1 hệ thống High-availability - Loadbalancing và Reverse Proxy cho Web Server trên CentOS 6/RHEL Sử dụng HAProxy và Keepalived - Thiet lap 1 he thong High-availability - Loadbalancing va Reverse Proxy cho Web Server tren CentOS 6/RHEL Su dung HAProxy va Keepalived
Quản Trị  Hệ Điều Hành Linux - Unix
 
Thiết lập 1 hệ thống High-availability - Loadbalancing và Reverse Proxy cho Web Server trên CentOS 6/RHEL Sử dụng HAProxy và Keepalived
14:13 | 03/02/2012

Giới thiệu :

Trong Lab này sẽ hướng dẫn thiết lập1 hệ thống loadbalancing  và High-availability (HA) cho các web server (lab này có 2 web  server ) kiểu  active/passive sử dụng  HAProxy và Keepalived .

Hệ thống Loadbalance  nằm giữa người sử dụng  (User )và các Apache web Server  (các Web server này chạy cùng 1 trang web ( Backup – Loadbalancing cho nhau)).

== > Thiết lập Web server và đồng  bộ 2 thư mục chứa source web ví dụ như WWW … thì ko nằm trong phần lab này (có thể dùng Rsync ,… để đồng bộ các thư mục chứa source web giữa các web server ) hoặc Dùng Unison .

Hệ thống sẽ kiểm tra tình trạng các webserver . Nếu một trong webserver chết thì tất cả các request  của user sẽ tự động được chuyển hướng đến webserver còn lại ,user ko bị mất Session .

Bên cạnh đó, hệ thống loadbalance này cũng có độ sẵn sàng cao (HA), Con server này chết thì con kia sẽ lên Active , có nghĩa là người dùng sẽ không nhận thấy bất kỳ sự gián đoạn của dịch vụ.

Bạn có thể sử dụng HAProxy  với bất kỳ ứng dụng web sử dụng Session .



Thông Tin trong Lab này :

2 con loadbalance 

Lb1   200.200.200.11
Lb2   200.200.200.12

2 con web server

Web1  200.200.200.20
Web2   200.200.200.21

Và Ip ảo là

200.200.200.50

Cấu hình trên 2 server  lb1 và lb2

Cài  Repo cho 2  server :


# rpm -ihv http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-5.noarch.rpm


 
Cài  Haproxy  và  Keepalived  trên 2 server  lb1 và  lb2

#  yum -y install haproxy keepalived
 



Cấu hình Keepalived trên 2 server  lb1 và  lb2


Backup file cấu hình

# mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

Sửa file /etc/keepalived/keepalived.conf có nội dung như bên dưới

Bên Lb1

# vim  /etc/keepalived/keepalived.conf

vrrp_script chk_haproxy {         
script "killall -0 haproxy"    
interval 2                    
weight 2                       
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101                    # 101 on master, 100 on backup
virtual_ipaddress {
200.200.200.50       # IP ao
}
track_script {
chk_haproxy
}
}

Bên Lb2

# vim  /etc/keepalived/keepalived.conf

vrrp_script chk_haproxy {         
script "killall -0 haproxy"    
interval 2                     
weight 2                       
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 100                    # 101 on master, 100 on backup
virtual_ipaddress {
200.200.200.50    # Ip ao
}
track_script {
chk_haproxy
}
}

Add thêm dòng dưới vào cuối file   /etc/sysctl.conf   bên 2 server   Lb1 và Lb2 để user có thể truy cập vào IP ảo .

net.ipv4.ip_nonlocal_bind = 1

Chạy lệnh sau để  áp  dụng thông số trên cho file  /etc/sysctl.conf  

# sysctl –p

Start service keepalived

# service keepalived start


Kiểm tra Server lb1 sẽ thấy Keepalived  lắng nghe trên ip ảo mà chúng ta thiết lập

(200.200.200.50)

# ip addr sh eth0
 


Và Ip ảo này được gán trên interface eth0

Kiềm tra bên server lb2


# ip addr sh eth0


 
Ta không thấy Ip ảo ,chỉ khi nào Server Lb1 chết thì mới  lb2 mới lên active và có ip ảo đó
(200.200.200.50)

Cấu hình  HAProxy trên  lb1 và lb2
( Thực hiện 2 bên server lb1 và lb2 )

Bạn có thể vào link sau kham khảo các thông số cấu hình cho haproxy.cfg

http://haproxy.1wt.eu/download/1.4/doc/configuration.txt

Backup file cấu hình

# cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

Sữa file  /etc/haproxy/haproxy.cfg với nội dung sau :

# vim cp /etc/haproxy/haproxy.cfg

listen webfarm 200.200.200.50:80
mode http
stats enable  # de co the truy cap thong ke qua giao dien web
stats auth root:123456   # user va pass truy cap thong ke qua giao dien web
balance source
cookie JSESSIONID prefix
option httpchk HEAD /check.txt HTTP/1.0
option httpclose
option forwardfor
server web1 200.200.200.21:80 cookie A check
server web2 200.200.200.22:80 cookie B check


Cho HAProxy và Keepalived  khởi động cùng hệ thống và Start haproxy

(Thực Hiện bên 2 server )

# chkconfig haproxy on
# chkconfig keepalived on
# service haproxy start

Cấu hình log cho 2 Web server  web1 và Web2
(Thực Hiện bên 2 server )

Cấu hình và thiết lập các thông số Log để 2 web server có thể ghi nhận lại thông tin truy cập của các client .

# vim /etc/httpd/conf/httpd.conf

Thêm vào cuối file /etc/httpd/conf/httpd.conf  các dòng sau

SetEnvIf Request_URI "^/check\.txt$" dontlog
CustomLog logs/access_log combined env=!dontlog

 


Tạo file check.txt bên 2 web server với nội dung rỗng .

# touch /var/www/check.txt

Và như vậy web server sẽ ghi nhận log là của 2 con proxy


 
Nếu muốn ghi nhận log của các client như Ip và trình duyệt ... thì thêm vào dòng sau :

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined


 
Và file log sẽ như sau :

# cat /var/log/httpd/access_log


 
Cách để test thử hệ thống


- Vào trình duyệt truy cập vào Ip ảo 200.200.200.50 nó sẽ vào giao diện web .



- Tắt thử 1 trong 2 con web server thì user vẫn truy cập bình thường .

-Tắt con Lb1 thì con Lb2 sẽ lên active



Và các Session của User ko bị mất kết nối .

Truy cập các thông kê của HAProxy

Bằng link sau :

http://200.200.200.50/haproxy?stats



Thông qua Ip ảo này cũng giúp che giấu hệ thống web server của chúng ta giúp giảm thiểu rủi ro thiệt hại ...

Phan Trọng Hiếu (Tổng hợp)
 
Ý kiến phản hồi và bình luận Góp ý kiến của bạn

load balacing https

bài viết rất hay về loadbalacing Nhưng mới chỉ đề cập tới giao thức http còn giao thức https thì cấu hình như thế nào ? mình vẫn chưa thấy đề cập Thanks

(Vũ Xuân Cẩn)


ve load balance https

mình quan sát file cấu hình. Thay đổi port 80 sang 443 là ok

(nguyen truong)


LoadBalancing với giao thức https

Tôi có tham khảo thêm cách cấu hình HAproxy trên CentOS 6, và trong file của haproxy.conf có dòng này. # - # HTTPS default webfarm for SSL # - #listen ssl_webfarm 0.0.0.0:443 #replace with shared public ip # mode tcp # balance source # option ssl-hello-chk # option forwardfor # #replace with web node private ip # server web01 10.179.104.188:443 check # #replace with web node private ip # server web02 10.179.110.180:443 check Đây chính là câu trả lời cho việc nếu dùng giao thức https thì thế nào. File mẫu tại: http://c818095.r95.cf2.rackcdn.com/haproxy.cfg Chúc mọi người thành công!

(Nguyễn Hùng)


LoadBalancing với giao thức https

Thanks Mr Hùng Ngoài ra còn 1 giải pháp nữa là dùng nginx để tiếp nhận https và forward tới các private server http://www.cyberciti.biz/faq/howto-linux-unix-setup-nginx-ssl-proxy/

(Vũ Xuân Cẩn)
Các tin mới nhất :
- Thiết lập 1 hệ thống High-availability - Loadbalancing và Reverse Proxy cho Web Server trên CentOS 6/RHEL Sử dụng HAProxy và Keepalived
- Đồng bộ hóa dữ liệu giữa hai Server Ubuntu 11.10 sử dụng Unison.
- Bảo vệ thư mục web với mod_auth_mysql trên Apache2
- Tích hợp MailScanner - ClamAV - SpamAssassin - SquirrelMail vào PostfixTrên Centos 5.7
- Cài đặt rsnapshot trên CentOS
- Xây dựng hệ thống NAS Cluster sử dụng OpenFiler
- Cài đặt Nginx trên Ubuntu 11.10
- Thiết lập hệ thống Active/active Samba CTDB Cluster sử dụng GFS & DRBD Trên Centos 5.7 X86_64
- Thiết lập máy chủ Ubuntu 11.10 và cài đặt ISPConfig 3 (Phần3)
- Thiết lập máy chủ Ubuntu 11.10 và cài đặt ISPConfig 3 (Phần2)
Các tin liên quan :
- Đồng bộ hóa dữ liệu giữa hai Server Ubuntu 11.10 sử dụng Unison.
- Bảo vệ thư mục web với mod_auth_mysql trên Apache2
- Tích hợp MailScanner - ClamAV - SpamAssassin - SquirrelMail vào PostfixTrên Centos 5.7
- Cài đặt rsnapshot trên CentOS
- Xây dựng hệ thống NAS Cluster sử dụng OpenFiler
- Cài đặt Nginx trên Ubuntu 11.10
- Thiết lập hệ thống Active/active Samba CTDB Cluster sử dụng GFS & DRBD Trên Centos 5.7 X86_64
- Thiết lập máy chủ Ubuntu 11.10 và cài đặt ISPConfig 3 (Phần3)
- Thiết lập máy chủ Ubuntu 11.10 và cài đặt ISPConfig 3 (Phần2)
- Thiết lập máy chủ Ubuntu 11.10 và cài đặt ISPConfig 3 (Phần 1)
Xem tiếp
Bài nhiều người đọc cùng chuyên mục
50 câu lệnh Linux phải nhớ
 
Thiết lập Openvpn trên Server Linux
 
Thiết lập tường lửa Iptables cho Linux - Phần 1
 
Cài đặt và cấu hình Server Linux CentOS hoàn chỉnh (Phần 1)
 
Cài Đặt Web Server (LAMP )Trên Centos 6 X86_64
 
Cấu hình ftp server với vsftpd
 
Cài đặt và cấu hình Server Linux CentOS hoàn chỉnh (Phần 2)
 
Trang chủ | Giới thiệu | Quảng cáo | Liên hệ
Giấy phép ICP số 199/GP-TTĐT. Bộ Thông tin và Truyền thông cấp.
Cơ quan quản lý  : Công Ty TNHH Phát Triển Kỹ Thuật và Thương Mại Phan Nguyễn
Bản quyền © 2010-2011 Kenhgiaiphap.vn . Giữ toàn quyền.
Ghi rõ nguồn "Kenhgiaiphap.vn" khi phát hành lại thông tin từ website này.