Quản trị net diễn đàn chia sẻ thông tin các thủ thuật mạng, internet bảo mật thông tin dành cho giới IT VIệt hy vọng là nơi bổ ích cho cộng đồng

Quản trị net diễn đàn chia sẻ thông tin các thủ thuật mạng, internet bảo mật thông tin dành cho giới IT VIệt hy vọng là nơi bổ ích cho cộng đồng (http://quantrinet.com/forum/index.php)
-   Web Server Apache Loadbalancing, Cluster, Failover (http://quantrinet.com/forum/forumdisplay.php?f=336)
-   -   Cấu hình Linux Virtual Server via Direct Routing (loadbalance web server) (http://quantrinet.com/forum/showthread.php?t=9592)

hoctinhoc 10-02-2014 03:50 PM

Cấu hình Linux Virtual Server via Direct Routing (loadbalance web server)
 


Cấu hình Linux Virtual Server via Direct Routing



Ở bài viết Cấu hình Web Cluster mình đã trình bày về cách tạo ra cụm Web Server sử dụng heartbeat nhằm tăng tính sẵn sàng cho hệ thống Website. Thông thường, những hệ thống Cluster sẽ kèm theo khả năng đồng bộ dữ liệu giữa các node và cần bằng tải. Trong bài viết này, mình sẽ trình bày cách cấu hình cụm Web Server với khả năng cần bằng tải sử dụng LVS – Direct Routing.


I – Mô hình:

http://khanh.com.vn/image.axd?pictur...g-00_thumb.png


II – Cài đặt:
Cài đặt heartbeat và các gói cần thiết bằng lệnh sau (chạy 2 lần)
# yum -y install libnet heartbeat-* ipvsadm
Kiểm tra các gói cài đặt đã đủ hay chưa
# rpm –qa | grep heartbeat
http://khanh.com.vn/image.axd?pictur...g-01_thumb.png

III - Cấu hình trên 2 Load Balancing Server:
Tạo file authkeys
# vi /etc/ha.d/authkeys
Thêm vào 2 dòng sau
auth 1
1 sha1 123456

http://khanh.com.vn/image.axd?pictur...g-02_thumb.png
Sau đó chmod lại file này
# chmod 600 /etc/ha.d/authkeys
Tạo file ha.cf
# vi /etc/ha.d/ha.cf
Thêm vào nội dung sau:
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0 # tien ich dung cho syslog hoac logger
keepalive 1 # thoi gian kiem tra giua cac heartbeat
deadtime 10 # thoi gian quyet dinh mot host da die hay chua?
warntime 5 # thoi gian de dua ra canh bao
initdead 120 # thoi gian chet dau tien
udpport 694 # Port de gui tin hieu heartbeat
bcast eth1 # Card mang de gui tin hieu heartbeat
auto_failback off # tu dong gui tai nguyen sai tro lai node chinh
node lb1.khanh.com.vn # ten load balancer 1
node lb2.khanh.com.vn # ten load balancer 2
respawn hacluster /usr/lib/heartbeat/ipfail

http://khanh.com.vn/image.axd?pictur...g-03_thumb.png
Tạo file haresources
# vi /etc/ha.d/haresources
Thêm vào nội dung
lb1.khanh.com.vn \
ldirectord::ldirectord.cf \
LVSSyncDaemonSwap::master \
IPaddr2::192.168.10.100/24/eth0/192.168.10.255

http://khanh.com.vn/image.axd?pictur...g-04_thumb.png
Trong đó:
  • lb1.khanh.com.vn: là node chính (master).
  • ldirectord: là dịch vụ cấu hình load balancing.
  • 192.168.10.100: là địa chỉ IP ảo.
Tạo file ldirectord.cf
# vi /etc/ha.d/ldirectord.cf
Thêm vào nội dung
logfile="/var/log/ldirectord.log"
checktimeout=15
checkinterval=5
autoreload=yes
quiescent=no
virtual=192.168.10.100:80
fallback=127.0.0.1:80
real=192.168.10.3:80 gate
real=192.168.10.4:80 gate
service=http
request="check.html"
receive="alive"
scheduler=lblc
persistent=600
protocol=tcp
checktype=negotiate

Trong đó:
  • 192.168.10.100: là địa chỉ IP ảo.
  • 192.168.10.3192.168.10.4: là địa chỉ IP của 2 Web Server.
  • http: là dịch vụ cần cấu hình load balancing.
  • check.html: là tệp tin mà ldirectord kiểm tra Web Server còn sống hay không?
  • alive: là nội dung chứa trên file check.html.
  • scheduler: Có thể set giá trị là rr hoặc lblc để dùng cho dịch vụ http
http://khanh.com.vn/image.axd?pictur...g-05_thumb.png
Bật tính năng chuyển hướng gói tin:
# vi /etc/sysctl.conf
Sửa net.ipv4.ip_forward = 0 thành net.ipv4.ip_forward = 1
Để thay đổi có hiệu lực ta thực hiện
# sysctl –p
http://khanh.com.vn/image.axd?pictur...g-06_thumb.png
Chú ý: Vì nội dung các tệp tin cấu hình trên 2 LB Server là giống nhau nên chúng ta chỉ cần cấu hình trên LB1 sau đó dùng lệnh để copy qua LB2.
# scp /etc/ha.d/* 192.168.10.2:/etc/ha.d/

IV - Cấu hình trên 2 Web Server:

Trên 2 Web Server ta thực hiện cài đặt dịch vụ httpd và các dịch vụ kèm theo khác cho việc chạy ứng dụng web (thao khảo:Cài đặt Apache và PHP trên CentOS )
Sau khi đã cài đặt dịch vụ httpd, ta cài đặt thêm 2 gói sau (download ở file đính kèm).
# rpm -ivh arptables_jf-0.0.8-8.i386.rpm
# rpm –ivh arptables-noarp-addr-0.99.2-1.rh.el.um.1.noarch.rpm

Tạo thêm 1 card loopback ảo
# vi /etc/sysconfig/network-scripts/ifcfg-lo:0
Thêm vào nội dung:
DEVICE=lo:0
IPADDR=192.168.10.100
NETMASK=255.255.255.255
NETWORK=192.168.10.0
BROADCAST=192.168.10.255
ONBOOT=yes
NAME=loopback

Trong đó 192.168.10.100 là địa chỉ IP ảo
Thực hiện chặn ARP trên IP ảo của 2 Web Server:
# /etc/init.d/arptables_jf stop
# /usr/sbin/arptables-noarp-addr 192.168.10.100 start
# /etc/init.d/arptables_jf save
# /etc/init.d/arptables_jf start
# /sbin/chkconfig --level 2345 arptables_jf on

http://khanh.com.vn/image.axd?pictur...g-07_thumb.png
Tại sao lại phải chặn ARP? Tham khảo tại đây.
Tiếp đó, ta khởi động lại dịch vụ mạng và dịch vụ httpd
# service network restart
# service httpd restart

Để test kết quả, ta có thể tạo ra các trang web đơn giản trên 2 Web Server như sau:
Trên Web Server 1:
# echo " <h1> Web Server 1" > /var/www/html/index.html
# echo "alive" >/var/www/html/check.html

Trên Web Server 2:
# echo " <h1> Web Server 2" > /var/www/html/index.html
# echo "alive" >/var/www/html/check.html

V – Kiểm tra:
Trên 2 LB Server ta thực hiện:
# chkconfig ldirectord off
# chkconfig heartbeat on
# service heartbeat restart
# service ldirectord stop

Dùng lệnh ipvsadm để kiểm tra trạng thái của 2 Web Server
Trên LB1:
# ipvsadm -l -n
http://khanh.com.vn/image.axd?pictur...g-08_thumb.png
Trên LB2:
# ipvsadm -l -n
http://khanh.com.vn/image.axd?pictur...g-09_thumb.png
Ở đây LB2 là Slave nên lệnh #ipvsadm -l -n sẽ không có kết quả trả về. Chỉ khi nào LB1 chết thì LB2 mới đứng ra kiểm soát/phân giải 2 Web Server.
Kiểm tra Load Balancing:
Từ Client, ta dùng trình duyệt truy cập vào địa chỉ IP ảo, kết quả trang web nằm trên Web Server 2 được trả về.
http://khanh.com.vn/image.axd?pictur...g-10_thumb.png
Ở một máy tính khác với thao tác tương tự, được kết quả trang web từ Web Server 1 trả về.
http://khanh.com.vn/image.axd?pictur...10-b_thumb.png
Kiểm tra Cluster:
Dừng dịch vụ heartbeat trên LB1
# service heartbeat stop
http://khanh.com.vn/image.axd?pictur...g-11_thumb.png
Dừng dịch vụ httpd trên Web Server 2
# service httpd stop
http://khanh.com.vn/image.axd?pictur...11-b_thumb.png
Kiểm tra IP ảo và kết quả phân giải trạng thái IP trên LB2 được kết quả như hình đưới.
http://khanh.com.vn/image.axd?pictur...g-12_thumb.png
Dùng trình duyệt truy cập vào địa chỉ IP ảo, kết quả vẫn vào được Website trả về từ Web Server 1
http://khanh.com.vn/image.axd?pictur...g-13_thumb.png
Tệp tin đính kèm:
arptables_jf-0.0.8-8.i386.rpm (92,04 kb) [Downloads: 180]
arptables-noarp-addr-0.99.2-1.rh.el.um.1.noarch.rpm (10,46 kb) [Downloads: 175]


theo: khanh.com.vn


:battay:


Bây giờ là 11:37 PM. Giờ GMT +7

Diễn đàn tin học QuantriNet
quantrinet.com | quantrimang.co.cc
Founded by Trương Văn Phương | Developed by QuantriNet's members.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.