Hướng dẫn cài đặt load balancing bằng POUND trên centos 6 (cân bằng tải)
POUND là một chương trình cân bằng tải phát triển bởi Công ty ITSECURITY
Nó là một mã nguồn mở , được sử dụng như 1 công cụ proxy hay getaway, cân bằng tải cho máy chủ web để phân phối tải giữa một số máy chủ
POUND có một số lợi ích như sau
- Hỗ trợ máy ảo.
- Cấu hình dễ dàng
- Khi một máy phụ trợ không truy cập đc ,nó tự động phát hiện và chia lại tải
- Nó bác bỏ yêu cầu không chính xác.
- Không có quy định trình duyệt hoặc máy chủ web.
I.Chuẩn bị
3 vps
Pound Server :107.189.160.9
web server 1 : 107.178.97.13
web server 2 : 107.178.97.14
Pound Server cài kho epel click here
2 web server cài đặt LAMP click here
Cấu hình firewall
# nano /etc/sysconfig/iptables
Trên Pound Server thêm các dòng sau :
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8001 -j ACCEPT
Trên web server 01
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
Trên web server 02
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8001 -j ACCEPT
Khởi động lại dịch vụ
# service iptables restart
II.Tiến hành
1.Cài đặt pound
Pound có nhiều cách cài đặt có thế cài từ yum hoặc tại file đuôi .rpm từ trang web sau
http://www.invoca.ch/pub/packages/pound/
Trên Pound server ta gõ lệnh sau
# yum install Pound -y
2.Cấu hình pound để làm việc
Trên Pound server
# nano /etc/pound.cfg
ListenHTTP
Address 107.189.160.9 (ip Pound Server)
Port 80
EndListenHTTPS
Address 107.189.160.9 (ip Pound Server)
Port 443
Cert "/etc/pki/tls/certs/pound.pem"
EndService
BackEnd
Address 107.178.97.13 (ip web server 01)
Port 8000 (port của web server 01)
EndBackEnd
Address 107.178.97.14 (ip web server 02)
Port 8001 (port của web server 02)
End
End
khởi động dịch vụ Pound
# service pound start
Cho khởi động cùng hệ thống
# chkconfig pound on
Trên 2 web server lần lượt chính sửa như sau
# nano /etc/httpd/conf/httpd.conf
Tìm dòng Listen 80
Web server 01 sửa port thành
#Listen 12.34.56.78:80
Listen 8000
Web server 02 sửa port thành
#Listen 12.34.56.78:80
Listen 8001
Lưu ý :port trên Web server phải giống với port đã khai báo trên Pound server
khởi động lại http
# service httpd restart
Trên 2 web server lần lượt tạo file index.html với nội dung lần lượt là web server 01 và 02
# nano /var/www/html/index.html
<html>
<head>
<title>maxserver</title>
</head>
<body>
<h1>web server 01 </h1>
</body>
</html>
Để kiểm tra pound bạn cái bạn truy cập vào trinh duyệt như sau http://ip-Pound server/
3.Cấu hình ưu tiên
Giả sử 1 trong 2 web server làm việc hiệu quả hơn web server còn lại . Ta sẽ phải xem xét việc đặt cho web server làm việc tốt hơn số lượt tải nhiều hơn.
Để cân bằng tải như thế, bạn chỉ cần thêm một tham số duy nhất bên trong các tập tin pound.cfg
Vd; web server 02 làm việc tốt hơn ta sẽ đặt cho nó Priority bằng 5
# nano /etc/pound.cfg
ListenHTTP
Address 107.189.160.9
Port 80
End
ListenHTTPS
Address 107.189.160.9
Port 443
Cert "/etc/pki/tls/certs/pound.pem"
End
Service
BackEnd
Address 107.178.97.13
Port 8000
End
BackEnd
Address 107.178.97.14
Port 8001
Priority 5
End
End
# service pound restart
4.Cấu hình khi sự cố khẩn cấp
Emergency : Thẻ này được sử dụng để tải một máy chủ trong trường hợp của tất cả các máy chủ kết thúc trở lại là chết. Bạn có thể thêm nó vào trước thẻ End cuối cùng của pound.cfg như sau.
POUND luôn theo dõi trong đó máy chủ phụ trợ còn sống hay không
Chúng ta có thể xác định sau bao nhiêu giây POUND nên kiểm tra các máy chủ phụ trợ bằng cách thêm tham số "Alive" trong pound.cfg.
Bạn có thể sử dụng các tham số như "Alive 30" cho thiết lập nó để 30 giây.
Vd:
Alive 30
ListenHTTP
Address 107.189.160.9
Port 80
EndListenHTTPS
Address 107.189.160.9
Port 443
Cert "/etc/pki/tls/certs/pound.pem"
EndService
BackEnd
Address 107.178.97.13
Port 8000
EndBackEnd
Address 107.178.97.14
Port 8001
Priority 5
End
Emergency
Address 107.178.97.15
Port 8003
End
End