Xây
dựng một hệ thống High Available (HA) là một nhiệm vụ sống còn dành cho
doanh nghiệp hiện nay. Đã có những trường hợp đáng tiếc khiến cho doanh
nghiệp phải chịu những thiệt hại lớn không đáng có, thậm chí là mất đi
các khách hàng quan trọng – nguồn sống trong kinh doanh.
Trong
bài “Để website luôn online với cluster Apache High Availability Linux”
đăng trên một số trang web hiện nay tuy thuận tiện nhưng vẫn còn những
nhược điểm đáng kể. Một trong những nhược điểm đó là hệ thống chỉ có tác
dụng chịu lỗi (Fail Over) mà không thể cân bằng tải (Load Balancing).
Do đó, hệ thống chỉ có thể thích hợp với những doanh nghiệp nhỏ lẻ, nhu
cầu truy cập web của khách hàng không cao. Nếu sử dụng phương thức trên
cho doanh nghiệp lớn thì sẽ gây hiện tượng thắt cổ chai (bottle neck)
làm nghẽn lưu lượng truy cập. Mặt khác, doanh nghiệp muốn triển khai
thêm nhiều dịch vụ khác thì đây không phải là một lựa chọn thật sự hiệu
quả.
Một
giải pháp được Kênh Giải Pháp VN đưa ra là xây dựng một hệ thống có
tính sẵn sàng cao vừa có khả năng chịu lỗi vừa có khả năng cân bằng tải.
Giải pháp này dựa trên nền tảng Linux Virtual Server (LVS). LVS ẩn
server thật sau một IP ảo và thực hiện quá trình cân bằng tải các gói
tin gửi đến sang tất cả các node dựa trên thuật toán Scheduling. Do tất
cả các quá trình được thực hiện ở lớp transport bên trong nhân Linux nên
phương thức này còn được gọi là Layer-4 Switching.
Mô hình cụ thể
Hệ
thống này được xây dựng trên 4 Server sử dụng hệ điều hành CentOS. Mỗi
Server được lắp đặt 2 card mạng riêng biệt. Thông số về các card mạng
trên mỗi server được thể hiện trên hình sau:
Client truy cập vào Web Server thông qua IP ảo (192.168.2.200).

Trong
mô hình này LVS1 và LVS2 đóng vai trò là các Load Balancer (LB). Hai
LVS này hoặc động theo phương thức Active/Passive. Có nghĩa là, khi LVS1
chạy thì LVS2 sẽ ở trạng thái Stand-by, cho đến khi LVS1 gặp sự cố thì
LVS2 sẽ tự động kích hoạt và thay thế LVS1 cho đến khi khắc phục được sự
cố. LB có nhiệm vụ dẫn đường cho các truy cập đến Web Server.
Trên
LVS sẽ được cài đặt các gói chương trình heartbeat, ldirectord và
ipvsadm. Trong đó chương trình heartbeat sẽ có nhiệm vụ kiểm tra tình
trạng “sống còn” của hai LVS. Do đó, đảm bảo được khả năng chịu lỗi của
hệ thống. Còn ldirectord (Linux Director Daemon) có nhiệm vụ giám sát và
kiểm tra tín hiệu của các Web Server thông qua một URL request. Trong
trường hợp dịch vụ web trên một server bị lỗi thì server đó sẽ bị loại
ra khỏi danh sách real server và truy cập sẽ được dồn về Web Server còn
lại đảm bảo được tính cân bằng tải lẫn khả năng chịu lỗi.
Cấu hình cụ thể
Đầu tiên, chúng ta tắt Firewall trên tất cả các Server.
/etc/init.d/iptables stop
+ LVS1/LVS2
Cài đặt các dịch vụ cần thiết (heartbeat, ldirectord, ipvsadm)
yum install heartbeat ipvsadm heartbeat-ldirectord –y
Để LB có thể dẫn đường được cho các yêu cầu đến server thì cần active kernel IPV4 packet forwarding.
#/etc/sysctl.conf
net.ipv4.ip_forward = 1
Lưu lại cấu hình cho sysctl.conf
sysctl -p
Tạo file /etc/ha.d/ha.cf
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
initdead 120
bcast eth1
ucast eth1 10.0.0.1 # Trên LVS2 là 10.0.0.2
udpport 694
auto_failback on
node lb1.kenhgiaiphap.vn
node lb2.kenhgiaiphap.vn
Tạo file /etc/ha.d/haresoures
lb1.kenhgiaiphap.vn \
ldirectord::ldirectord.cf \
LVSSyncDaemonSwap::master \
Ipaddr2::192.168.2.200
Tạo file /etc/ha.d/authkeys
auth 1
1 crc
File authkeys chỉ có thể thay đổi thông qua tài khoản root
chmod 600 /etc/ha.d/authkeys
Tạo file /etc/ha.d/ldirectord.cf
checktimeout=30
checkinterval=2
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=no
virtual=192.168.2.200:80
real=10.0.0.3:80 gate
real=10.0.0.4:80 gate
service=http
request="kenhgiaiphap.html"
httpmethod=GET
receive="maychumang"
persistent=100
scheduler=lblc
protocol=tcp
checktype=negotiate
Khởi động các dịch vụ cần thiết
/etc/init.d/ldirectord stop
/ect/init.d/heartbeat start
+ WebServer1/WebServer2
Sau khi cài đặt Apache Server ta tạo file kiểm tra
echo “maychumang” > /var/www/html/kenhgiaiphap.html
Echo ‘This site is 192.168.2.122’ > /var/www/html/index.html (Webserver1)
Echo ‘This site is 192.168.2.123’ > /var/www/html/index.html (Webserver2)
service httpd start
Tắt chức năng ARP reply cho IP ảo trên Web Server
# /etc/sysctl.conf
net.ipv4.conf.all.ARP_ignore = 1
net.ipv4.conf.eth0.ARP_ignore = 1
net.ipv4.conf.all.ARP_announce = 2
net.ipv4.conf.eth0.ARP_announce = 2
+ Kiểm tra kết quả
Web Server (Load Balancing và Fail Over)
Mở
web browser trên máy khác cùng mạng và nhập vào địa chỉ 192.168.2.200.
Refresh lại nhiều lần thấy nội dung web thay đổi là cấu hình cân bằng
tải thành công.
Muốn
kiểm tra khả năng chịu lỗi thì tắt dịch vụ web trên 1 server sau đó thử
lại. Nếu trang web hiển thị chuyển sang server còn lại là thành công.


Load Balancer (Fail Over)
Sau
khi cài đặt xong kiểm tra trên cả hai LVS. Nếu kết quả giống như trong
hình là cài đặt thành công. Trong đó máy 192.168.2.125 là máy Active,
chịu trách nhiệm dẫn đường đến Web Server. Máy 192.168.2.130 đang ở chế
độ backup.
Kiểm tra Fail Over bằng cách tắt dịch vụ heartbeat trên LVS1 (192.168.2.125) nếu bạn vẫn còn có thể duyệt web là thành công.
Theo kenhgiaiphap
Comments[ 0 ]
Đăng nhận xét