Tại đây sẽ lấy ví dụ mô hình như sau .
Tính năng của hệ thống này chỉ có việc khi khách hàng (User PC) kết nối đến yêu cầu WEB cung cấp dữ liệu , WEB server có nhiệm vụ lấy các dữ liệu được lưu trong LDAP server và hiển thị cho khách hằng . Hoặc có thể Update dữ liệu của khách hàng . Như vậy trong mô hình này , sự lien kết giữa WEB Server, LDAP server là việc tất yếu , và đồng thời giữa các LDAP server với nhau cũng có giải pháp liên kết nào đó với nhau.
Giám sát hệ thống
Các bài viết về WEB server thì đã có nhiều người đề cập đến , nhưng đôi khi mô hình chỉ gói trọn vào 2 hoặc 3 server với nhau là đa số . Tại bài viết này, ta sẽ tham khảo cách cấu hình cho chương trình giám sát keepalived . Không chỉ riêng 2 hoặc 3 máy chủ , nếu bạn có nhu cầu , bạn có thể áp dụng vào hơn vài chục máy chủ để cung cấp các dịch vụ như apache , mysql , ldap .Tại ví dụ bên dưới , ta sẽ cấu hình cho keepalived (VRRP)giám sát các máy chủ được thiết lập dịch vụ LDAP . Tuy nhiên , như đã đề cập bên trên, bạn chỉ cần thay đổi vài dòng thôi cũng sẽ áp dụng cho cách dịch vụ khác.
Từ mô hình trong ví dụ trên , ta sẽ thiết lập tính năng giám sát khi LDAP1- MASTE chết , trong vòng 1 giây sẽ tự động chuyển LDAP2-SLAVE thành LDAP2 – MASTER . Thêm vào đó, sẽ gửi email đến
conmale@hvaonline.net .
Cấu hình keepalived .
1. Cài đặt OpenLdap, Apache (Tham khảo các bài khác trong diễn đàn HVA)
2. Install & Cấu hình keepalived
# cd /usr/local/src
# tar zxf keepalived-1.1.15.tar.gz
# cd keepalived-1.1.15
# ./configure
# make
# make install
# cd /etc/init.d
# cp /usr/local/src/keepalived-1.1.15/keepalived/etc/init.d/keepalived.rh.init keepalived
Sau khi cài đặt thành công keepalived , ta xem những thông số ? cấu hình của chúng có những chức năng gì và hoạt động như thế nào .
/etc/keepalived/keepalived.conf
global_defs {
notification_email {
conmale@hvaonline.net }
notification_email_from keepalived@localhost
smtp_server localhost
smtp_connect_timeout 30
router_id MY_LDAP
}
Trước tiên là global_dfs . Tại đây ta có thể ấn định những thông tin có đặt tính là "global" . Những thông số này có đặc điểm như sau . Ví dụ trong notification_email , ta có thể chỉ định địa chỉ email của người chịu trách nhiệm quản lý . và quan trọng là router_id , theo giải thích trên trang web chính thức của chương trình , thì thông số này là định nghĩa cluster ID . Cũng có thể hiểu là đạt đại cho vui!
--------------------
vrrp_instance LDAP {
state BACKUP
interface eth2
garp_master_delay 5
virtual_router_id 200
priority 100
advert_int 1
nopreempt
smtp_alert
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.223.33/25 dev eth2
}
notify_master "/etc/keepalived/ldap.sh active"
notify_backup "/etc/keepalived/ldap.sh backup"
notify_fault "/etc/keepalived/ldap.sh backup"
notify "/etc/keepalived/ldap.sh status"
}
Tiếp theo là ấn định VRRP instance . Block này có ý nghĩa là dùng cấu trúc cho những router ảo trong VRRP. Nếu khó hiểu thì bạn hiểu là cấu hình chổ này là quan trọng nhất trong chương trình này và tìm hiểu các option bên dưới . Các option mang đặc tính như sau :
state <MASTER/SLAVE> : Cho server chạy bằng MASTER hay SLAVE . MASTER có nghĩa là máy cung cấp dịch vụ , còn SLAVE là máy backup .
interface : Ấn định trên của NIC . Thông thường bạn dùng linux với mục đích server , sẽ có 2 NIC . trong ví dụ này tôi dùng eth2 .
garp_master_delay : Khi server được nâng cấp lên trạng thái MASTER, sẽ có packet ARP báo delay .
priority : Thông thương MASTER sẽ có số cao hơn SLAVE .Có thể dung từ 0 ~ 255 . Và những máy chủ có thong số priority cao sẽ tự động thành chế độ MASTER .
nopreempt : Không dùng chế độ Preemt của VRRP . Khi ta tắt chế độ này, mấy chủ nào mang số priority thấp được nâng thành MASTER cũng không trở về trạng thái SLAVE . Cũng có thể hiểu là , không bị những máy có priority cao dành chế độ MASTER . Phần này khá quan trọng nên xin được thêm vài dòng ,
ví dụ : Khi hệ thống được cấu hình và đưa vào hoạt động 1 thời gian , trong khi đó LDAP1 default là MASTER, và LDAP2 dùng với SLAVE . Nhưng khi LDAP1 bị sự cố và bổng nhiên bị tắt , keepalived sẽ chạy các script như ta đã cấu hình , trong môi trường của bài viết , là khi LDAP1 bị teo thì LDAP2 sẽ chạy file cấu hình (slapd.conf) mang chức nang MASTER để trở LDAP2 trở thành MASTER. Nhưng khi thực hiện việc này sẽ có sự xung đột . Các server SLAVE thông thường sẽ mang số priority thấp hơn MASTER , vì vậy khi SLAVE được keepalived nâng cấp lên thành MASTER khi LDAP1 là MASTER bị chết , thì vẫn có khả năng tụt xuống lại vì priority thấp . Do đó ta cần phải dùng nopreempt : .
advert_int : Theo dõi sống chết giữa các máy chủ có khoảng cách bào nhiêu giây đều có thể ghi tại option này . Ví dụ tại bài viết này là 1 giây .
virtual_ipaddress : IP của nhóm server MASTER và SLAVE . Tất cả các máy LDAP tại bài viết này đều có 1 IP là 192.168.223.33 . Giải thích them một chút nữa thì network này mang subnet là 25 .
notify_master <CMD> : Khi keepalived khẳng định LDAP1 đã chết , sẽ tự động chuyển LDAP2 thành master . Trong khi đó , tại option này ta có thể định nghĩa script khởi động cho LDAP2 .
notify_backup <CMD> : Khi keepalived khẳng định LDAP1 là MASTER , sẽ tự động chuyển LDAP2 thành SLAVE . Trong khi đó , tại option này ta có thể định nghĩa script khởi sang trạng thái slave cho LDAP2 .
Cuối cùng là tạo script
/etc/keepalived/ldap.sh
#!/bin/bash
// Set path đến openldap directory
LDAP_CONFDIR="/usr/local/openldap/etc/openldap"
case "$1" in
active)
logger ">>active"
// Chạy đến directory của LDAP
cd $LDAP_CONFDIR
// Đổi file config slave thành master
ln -sf slapd.conf.master slapd.conf
logger "result $?"
// Ngừng dịch vụ SLAVE
service slapd stop
// Chạy dịch vụ MASTER
service slapd start
logger "<<active"
;;
backup)
logger ">>backup"
cd $LDAP_CONFDIR
ln -sf slapd.conf.slave slapd.conf
logger "result $?"
service slapd stop
service slapd start
logger "<<backup"
;;
status)
logger ">>status"
logger "<<status"
;;
fault)
logger ">>fault"
logger "<<fault"
;;
esac
Đọc đến đây chắc bạn sẽ thắc mắc việc làm sao cấu hình keepalive trên LDAP1 và LDAP2 . Có cần thay đổi những trong số trong file config hay không ?
Tại ví dụ này , trong file config của keepalived bạn có thể copy & paster nguyên nội dung sang các server bạn cần làm backup . (LDAP1 và LDAP2) File cấu hình trong ví dụ có tính năng giảm tỷ lệ down cho hệ thống bạn . Vì vậy khi dùng 2 máy chủ trở lên , bạn chỉ cần cấu hình keepalived giống nhau, thì bạn sẽ có một hệ thống 1 máy LDAP cung cấp dịch vụ , nhưng khi LDAP đó chết , sẽ có nhiều máy backup chạy thay thế .
Các điểm cần chú ý khi cấu hình dịch vụ
1. Ví dụ mysql , bạn phải thêm chức năng đồng bộ giữ liệu .
2. Ví dụ apache , bạn chỉ cần cấu hình 2 server apache giống nhau , chắc nó sẽ chạy (vì tui chưa làm)
3. Ví dụ LDAP , cũng giống như mysql . Keepalived chỉ cung cấp dịch vụ giám sát chết/ sống và start và restart các script ta đã ấn định . Do đó , để chạy được dịch vụ đúng nghĩa của LDAP , bạn cần phải cấu hình LDAP riêng để giữa các máy chủ LDAP đồng bộ dữ liệu .
4. Để chạy được VRRP, bạn phải điều chỉnh firewall .
Tham khảo thêm về các thuật ngữ :
VRRP :
http://www.quantrimang.com.vn/hethong/linux/35521_Su_dung_VRRP_tren_Linux_nang_cao_kha_nang_san_sang_cho_mang.aspxkeepalived :
http://www.keepalived.org/pdf/UserGuide.pdf