Đối với những mô hình dịch vụ cần đảm bảo tính sẵn sàng cao (High Availability – HA), thì việc hệ thống bị down là không thể chấp nhận được. Hiện có rất nhiều phần mềm, giải pháp để đảm bảo tính HA cho các hệ thống nhưng mình sẽ giới thiệu phần mềm đơn giản nhất là Keepalived với tính năng tự động chuyển đổi Virtual IP (VIP) giữa các máy chủ theo mô hình Active/Passive.
1. Keepalived là gì ?
Keepalived là một chương trình dịch vụ trên Linux cung cấp khả năng tạo độ sẵn sàng cao (High Availability) cho hệ thống dịch vụ và khả năng cân bằng tải (Load Balancing) đơn giản. Thế nhưng tính năng Load Balancing của Keepalived thì chưa được mạnh mẽ, tuỳ biến linh hoạt như các giải pháp khác là Nginx hay HAProxy được.
Chính vì vậy khi xài Keepalived người ta thường chỉ sử dụng tính năng HA IP Failover của nó, chứ ít dùng đến tính năng cân bằng tải. Thế nên trong bài viết này cũng sẽ chỉ tập trung vào năng lực chính HA của Keepalived. Chương trình keepalived cho phép nhiều máy tính cùng chia sẻ một địa chỉ IP ảo với nhau theo mô hình Active – Passive (ta có thể cấu hình thêm một chút để chuyển thành mô hình Active – Active nâng cao). Khi người dùng cần truy cập vào dịch vụ, người dùng chỉ cần truy cập vào địa chỉ IP ảo dùng chung này thay vì phải truy cập vào những địa chỉ IP thật của các thiết bị kia.
Một vài tính năng của Keepalived:
- Keepalived cung cấp các bộ thư viện (framework) cho 2 chức năng chính là: cân bằng tải (load balancing) cùng cơ chế health checking và độ sẵn sàng cao cho hệ thống (high availability) với VRRP.
- Tính năng cân bằng tải sử dụng Linux Virtual Server (IPVS) module kernel trên Linux.
- Tính năng kiểm tra tình trạng sức khoẻ của các máy chủ backend cũng khá linh động giúp duy trì được pool server dịch vụ nào còn sống để cân bằng tải tốt.
- Tính sẵn sàng cao (HA) sẽ được Keepalived sử dụng kĩ thuật giao thức khá nổi tiếng VRRP (Virtual Redundancy Routing Protocol). VRRP được ứng dụng nhiều trong mô hình router failover.
Tóm gọn lại thì Keepalived cho chúng ta 2 quyền năng gồm:
- Cân bằng tải: với chức năng health checking (kiểm tra tình trạng sức khoẻ) của các máy chủ trong mô hình HA và các phương thức cân bằng tải xuống server backend.
- Tạo độ sẵn sàng cao (High Avaiability) : chức năng VRRP đảm nhận quản lý khả năng chịu lỗi của cụm server (Failover) với Virtual IP.
2. Keepalived Failover IP hoạt động như thế nào ?
Keepalived sẽ gom nhóm các máy chủ dịch vụ nào tham gia cụm HA, khởi tạo một Virtual Server đại diện cho một nhóm thiết bị đó với một Virtual IP (VIP) và một địa chỉ MAC vật lý của máy chủ dịch vụ đang giữ Virtual IP đó. Vào mỗi thời điểm nhất định, chỉ có một server dịch vụ dùng địa chỉ MAC này tương ứng Virtual IP. Khi có ARP request gởi tới virtual IP thì server dịch vụ đó sẽ trả về địa chỉ MAC này.
Các máy chủ dịch vụ sử dụng chung VIP phải liên lạc với nhau bằng địa chỉ multicast 224.0.0.18 bằng giao thức VRRP. Các máy chủ sẽ có độ ưu tiên (priority) trong khoảng từ 1 – 254, và máy chủ nào có độ ưu tiên cao nhất sẽ thành Master, các máy chủ còn lại sẽ thành các Slave/Backup, hoạt động ở chế độ chờ.
Như đã nói ở trên, các server dịch vụ dùng chung Virtual IP sẽ có 2 trạng thái là MASTER/ACTIVE và SLAVE/BACKUP. Cơ chế failover được xử lý bởi giao thức VRRP, khi khởi động dịch vụ, toàn bộ các server cấu hình dùng chung VIP sẽ gia nhập vào một nhóm multicast. Nhóm multicast này dùng để gửi/nhận các gói tin quảng bá VRRP. Các server sẽ quảng bá độ ưu tiên (priority) của mình, server với độ ưu tiên cao nhất sẽ được chọn làm MASTER. Một khi nhóm đã có 1 MASTER thì MASTER này sẽ chịu trách nhiệm gởi các gói tin quảng bá VRRP định kỳ cho nhóm multicast.
Nếu vì một sự cố gì đó mà các server BACKUP không nhận được các gói tin quảng bá từ MASTER trong một khoảng thời gian nhất định thì cả nhóm sẽ bầu ra một MASTER mới. MASTER mới này sẽ tiếp quản địa chỉ VIP của nhóm và gởi các gói tin ARP báo là nó đang giữ địa chỉ VIP này. Khi MASTER cũ hoạt động bình thường trở lại thì server này có thể lại trở thành MASTER hoặc trở thành BACKUP tùy theo cấu hình độ ưu tiên của các router.
Khi Keepalived chạy trên Linux, tiến trình dịch vụ của Keepalived khi khởi chạy trên Linux sẽ tạo ra 3 tiến trình cơ bản gồm:
- Một tiến trình cha có tên gọi là watchdog, sản sinh ra 2 tiến trình con kế tiếp. Tiến trình cha sẽ quản lý theo dõi hoạt động của tiến trình con.
- Hai tiến trình con, một chịu trách nhiệm cho VRRP framework và một chịu trách nhiệm cho health checking (kiểm tra tình trạng sức khoẻ).
111 Keepalived <-- Parent process monitoring children
112 _ Keepalived <-- VRRP child
113 _ Keepalived <-- Healthchecking child
3. Các thành phần Linux Kernel mà Keepalived sử dụng
Keepalived sử dụng 4 module kernel Linux chính sau :
- LVS Framework: dùng để giao tiếp sockets.
- Netfilter Framework: hỗ trợ hoạt động IP Virtual Server (IPVS) NAT và Masquerading.
- Netlink Interface: điều khiển thêm/xoá VRRP Virtual IP trên card mạng.
- Multicast: VRRP advertisement packet được gửi đến lớp địa chỉ mạng VRRP Multicast (224.0.0.18)
4. Kiến trúc chương trình Keepalived
4.1 WatchDog
Thư viện framework Watchdog sẽ sản sinh ra các tiến trình con cho hoạt động giám sát tình trạng (VRRP và Healthchecking). Watchdog sẽ giao tiếp với các tiến trình con qua unix domain socket trên Linux để quản lý các tiến trình con.
4.2 Checkers
Đây là một trong những tính năng chính của Keepalived. Checkers sẽ đảm nhận nhiệm vụ kiểm tra tình trạng sức khoẻ của server backup khác trong mô hình mạng Load Balancing.
4.3 VRRP Stack
Đây là tính năng quan trọng nhất của dịch vụ Keepalived. VRRP (Virtual Router Redundancy Protocol) . Một số đặc điểm của VRRP, hiểu cho khái niệm server thay router:
- VRRP tạo ra một gateway dự phòng từ một nhóm các server. Node active được gọI là master server, tất cả các server còn lạI đều trong trạng thái backup. Server master là server có độ ưu tiên cao nhất trong nhóm VRRP.
- Chỉ số nhóm của VRRP thay đổI từ 0 đến 255; độ ưu tiên của router thay đổI từ 1 cho đến 254 (254 là cao nhất, mặc định là 100).
- Các gói tin quảng bá của VRRP được gửI mỗI chu kỳ một giây. Các server backup có thể học các chu kỳ quảng bá từ server master.
- Nếu có server nào có độ ưu tiên cao hơn độ ưu tiên của server master thì server đó sẽ chiếm quyền.
- VRRP dùng địa chỉ multicast 224.0.0.18, dùng giao thức IP.
4.4 SMTP
Dùng giao thức SMTP để thực hiện gửi email, hỗ trợ công việc quản trị.
4.5 System Call
Keepalived cho phép chúng ta khởi chạy các script kịch bản hệ thống. Thường dùng cho hoạt động kiểm tra dạng MISC. Đối với VRRP framework, thư viện này cho phép chạy script kịch bản ngoài trong quá trình chuyển đổi trạng thái của giao thức
Nguồn tham khảo: https://cuongquach.com/keepalived-la-gi-tim-hieu-dich-vu-keepalived-high-availability.html
5. Hướng dẫn cấu hình Keepalived thực hiện IP Failover cho hệ thống High Avaiability
Mô hình Lab sẽ tương tự như hình vẽ dưới đây:
Mô hình Lab Keepalived IP Failover
Trong mô hình lab của bài này, ta sẽ có 2 Nginx Web Server (chúng ta có thể đổi thành HAProxy tùy ý) phục vụ xử lý request HTTP Web cơ bản. Hai Nginx WEB1 và WEB2 này sẽ được cấu hình dùng chung một VIP là 10.12.166.80. Bình thường thì VIP này sẽ do node Master phụ trách, node Backup sẽ ở trạng thái chờ.
Khi có sự cố xảy ra với node Master như die server hay dịch vụ die thì node Backup sẽ nhận lấy VIP này và chịu trách nhiệm xử lý tiếp nội dung dịch vụ đang chạy cụ thể ở bài lab này là Nginx Web Server.
Cài đặt chương trình Keepalived
chúng ta cần thực hiện cài đặt chương trình Keepalived trên cả 2 con WEB1 và WEB2.
$sudo apt-get update
$sudo apt-get install -y keepalived
Cài đặt chương trình Web Server
Chúng ta sẽ thực hiện cài đặt chương trình Web Server Nginx trên cả 2 server để test chức năng cơ bản của máy chủ web trên cả 2 Web Server.
$ sudo apt-get update
$ sudo apt-get install -y nginx
Do nhu cầu chỉ là thực hiện lab test chức năng IP Failover với web server cơ bản, nên chúng ta không cần quan tâm đến việc tối ưu hoá cấu hình Nginx.
WEB1
Đối với máy chủ WEB1 chúng ta sẽ tạo 1 file .html ở thư mục web global của Nginx để truy cập test với nội dung cơ bản thể hiện được thông tin cho chúng ta biết là chúng ta đang truy cập máy chủ Web Server WEB1.
$ rm -rf /usr/share/nginx/html/*
$ vi /usr/share/nginx/html/index.html
<h1> BAN DANG TRUY CAP WEB1 - 10.12.166.81 </h1>
WEB2
$ rm -rf /usr/share/nginx/html/*
$ vi /usr/share/nginx/html/index.html
<h1> BAN DANG TRUY CAP WEB2 - 10.12.166.82 </h1>
Cấu hình dịch vụ Keepalived
Cấu hình cho phép gắn địa chỉ IP ảo lên card mạng và IP Forward.
Dịch vụ Keepalived sẽ giúp chúng ta tạo 1 Virtual IP để dùng cho máy chủ, nói một cách nôm na là máy chủ sẽ sử dụng IP do chúng ta tự định nghĩa bằng Keepalived chứ không phải dùng IP trên interface của máy chủ . Để làm việc này, chúng ta cần vào file /etc/sysctl.conf
và thêm dòng sau vào file sysctl.conf
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
Sau đó các chúng ta lưu lại và thoát ra. Tiếp tục thực thi câu lệnh được gán vào bằng cách restart server hoặc chạy câu lệnh sau :
# sysctl -p
Cú pháp cấu hình Keepalived cơ bản
global_defs {
notification_email {
[email protected]
}
notification_email_from [email protected]
smtp_server x.x.x.x
smtp_connect_timeout 30
}
vrrp_script chk_haproxy {
script "command"
interval <time>
weight <n>
}
vrrp_instance string {
state MASTER|BACKUP
interface string
mcast_src_ip @IP
virtual_router_id num
priority num
advert_int num
smtp_alert
authentication {
auth_type PASS|AH
auth_pass string
}
virtual_ipaddress { # Block limited to 20 IP addresses
@IP
@IP
}
notify_master "/path_to_script/script_fault.sh <arg_list>"
notify_backup "/path_to_script/script_fault.sh <arg_list>"
notify_fault "/path_to_script/script_fault.sh <arg_list>"
}
Để cấu hình dịch vụ keepalived, ta cần phải chỉnh sửa file /etc/keepalived/keepalived.conf. Một số block cấu hình đáng chú ý trong file này như sau:
global_defs: cấu hình thông tin toàn cục (global) cho keepalived như gởi email thông báo tới đâu, tên của cluster đang cấu hình.
vrrp_script: chứa script, lệnh thực thi hoặc đường dẫn tới script kiểm tra dịch vụ (Ví dụ: nếu dịch vụ này down thì keepalived sẽ tự chuyển VIP sang 1 server khác).
vrrp_instance: thông tin chi tiết về 1 server vật lý trong nhóm dùng chung VRRP. Gồm các thông tin như interface dùng để liên lạc của server này, độ ưu tiên để, virtual IP tương ứng với interface, cách thức chứng thực, script kiểm tra dịch vụ….
Chú thích cấu hình block vrrp_instance
– Trong các phần giải thích dưới, router sẽ đồng nghĩa với máy chủ dịch vụ .
- state (MASTER|BACKUP): chỉ trạng thái MASTER hoặc BACKUP được sử dụng bởi máy chủ. Nếu là MASTER thì máy chủ này có nhiệm vụ nhận và xử lý các gói tin từ host đi lên. Nếu con MASTER tèo, những con BACKUP này sẽ dựa vào 1 cơ chế bầu chọn và nhảy lên làm Master.
- interface: chỉ định cổng mạng nào sẽ sử dụng cho hoạt động IP Failover – VRRP
- mcast_src_ip: địa chỉ IP thực của card mạng Interface của máy chủ tham gia vào VRRP. Các gói tin trao đổi giữa các VRRP Router sử dụng địa chỉ thực này.
- virtual_router_id: định danh cho các router (ở đây là máy chủ dịch vụ) thuộc cùng 1 nhóm VRRP. Hiểu nôm na là 1 router có thể tham gia nhiều nhóm VRRP (các nhóm hoạt động động lập nhau), và VRRP-ID là tên gọi của từng nhóm.
- priority: chỉ định độ ưu tiên của VRRP router (tức độ ưu tiên máy chủ dịch vụ trong quá trình bầu chọn MASTER). Các VRRP Router trong cùng một VRRP Group tiến hành bầu chọn Master sử dụng giá trị priority đã cấu hình cho máy chủ đó. Priority có giá trị từ 0 đến 255. Nguyên tắc có bản: Priority cao nhất thì nó là Master, nếu priority bằng nhau thì IP cao hơn là Master.
- advert_int: thời gian giữa các lần gởi gói tin VRRP advertisement (đơn vị giây).
- smtp_alert: kích hoạt thông báo bằng email SMTP khi trạng thái MASTER có sự thay đổi.
- authentication: chỉ định hình thức chứng thực trong VRRP. ‘auth_type‘, sử dụng hình thức mật khẩu plaintext hay mã hoá AH. ‘auth_pass‘, chuỗi mật khẩu chỉ chấp nhận 8 kí tự.
- virtual_ipaddress: Địa chỉ IP ảo của nhóm VRRP đó (Chính là địa chỉ dùng làm gateway cho các host). Các gói tin trao đổi, làm việc với host đều sử dụng địa chỉ ảo này.
- notify_master: chỉ định chạy shell script nếu có sự kiện thay đổi về trạng thái MASTER.
- notify_backup: chỉ định chạy shell script nếu có sự kiện thay đổi về trạng thái BACKUP.
- notify_fault: chỉ định chạy shell script nếu có sự kiện thay đổi về trạng thái thất bại (fault).
Cấu hình Keepalived trên WEB1 – MASTER
Giờ chúng ta sẽ cấu hình cho máy chủ WEB1 làm máy chủ MASTER trong mô hình Failover IP giữa 2 WEB Server. Tức máy chủ WEB1 sẽ là người xử lý các request HTTP đến thông qua Virtual IP 10.12.166.80 và khi mà máy chủ WEB1 chết thì máy chủ WEB2 sẽ tự động lên làm MASTER và đảm nhận xử lý IP Virtual. Ta sẽ cho độ ưu tiên priority là 100 và state là MASTER. Có Virtual_router_id giống nhau ví dụ là 50 .
$ vi /etc/keepalived/keepalived.conf
vrrp_script chk_nginx {
script "killall -0 nginx"
interval 2
weight 4
}
vrrp_instance VI_1 {
state MASTER
interface eth0 # tùy theo mạng của từng máy
mcast_src_ip 10.12.166.81
virtual_router_id 50
priority 100
advert_int 1
authentication {
auth_type AH
auth_pass Aa123456
}
virtual_ipaddress {
10.12.166.80
}
track_script
{
chk_nginx
}
}
Cấu hình Keepalived trên WEB2 – BACKUP
Ta sẽ cho độ ưu tiên priority là 98 và state là BACKUP. Có virtual_router_id giống nhau ví dụ là 50 .
$ vi /etc/keepalived/keepalived.conf
vrrp_script chk_nginx {
script "killall -0 nginx"
interval 2
weight 4
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
mcast_src_ip 10.12.166.82
virtual_router_id 50
priority 98
advert_int 1
authentication {
auth_type AH
auth_pass cuongquach
}
virtual_ipaddress {
10.12.166.80
}
track_script
{
chk_nginx
}
}
Khởi động Keepalived và nginx
Khởi động Keepalived và nginx trên cả 2 máy chủ dịch vụ WEB
$ sudo systemctl start nginx
$ sudo systemctl start keepalived
Kiểm tra hoạt động Keepalived
Chúng ta sẽ kiểm tra xem trên server WEB1 đảm nhận vai trò MASTER đã nhận được IP ảo 10.12.166.80 hay chưa. Trong trường hợp server MASTER down, thì địa chỉ ảo VIP 10.12.166.80 sẽ được tự động gán cho máy chủ WEB2 BACKUP lên làm MASTER.
ip a sh eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:92:26:7b brd ff:ff:ff:ff:ff:ff
inet 10.12.166.81/24 brd 10.12.166.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.12.166.80/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe92:267b/64 scope link
valid_lft forever preferred_lft forever
Kiểm tra log hoạt động của dịch vụ Keepalived.
$ tail -n100 /var/log/messages (hoặc file system.log)
Feb 19 15:35:48 localhost Keepalived_vrrp[15089]: VRRP_Instance(VI_1) removing protocol VIPs.
Feb 19 15:35:48 localhost Keepalived_vrrp[15089]: Using LinkWatch kernel netlink reflector...
Feb 19 15:35:48 localhost Keepalived_vrrp[15089]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]
Feb 19 15:35:49 localhost Keepalived_vrrp[15089]: VRRP_Instance(VI_1) Transition to MASTER STATE
Feb 19 15:35:50 localhost Keepalived_vrrp[15089]: VRRP_Instance(VI_1) Entering MASTER STATE
Feb 19 15:35:50 localhost Keepalived_vrrp[15089]: VRRP_Instance(VI_1) setting protocol VIPs.
Feb 19 15:35:50 localhost Keepalived_vrrp[15089]: Sending gratuitous ARP on eth0 for 10.12.166.80
Feb 19 15:35:50 localhost Keepalived_vrrp[15089]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 10.12.166.80
Feb 19 15:35:50 localhost Keepalived_vrrp[15089]: Sending gratuitous ARP on eth0 for 10.12.166.80
Feb 19 15:35:50 localhost Keepalived_vrrp[15089]: Sending gratuitous ARP on eth0 for
Truy cập địa chỉ Virtual IP 10.12.166.80 thì chúng ta sẽ thấy index html Nginx Web Server MASTER hiện tại là 10.12.166.81.
Kiểm tra trường hợp server MASTER die
Trường hợp WEB1 Nginx down nguyên server (chúng ta thử off server WEB1 để test), thì WEB2 sẽ kiểm tra VRRP thấy thất bại sẽ tự bầu chọn WEB2 lên làm MASTER máy chủ. Kiểm tra địa chỉ IP bên server WEB2.
Ta cũng có thể chạy lệnh sau để kiểm tra ip ở 2 server:
Ví dụ ở server 2, bây giờ VIP đã được chuyển sang server 2.
$ ip a sh eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:49:08:77 brd ff:ff:ff:ff:ff:ff
inet 10.12.166.82/24 brd 10.12.166.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.12.166.80/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe49:877/64 scope link
valid_lft forever preferred_lft forever
Kiểm tra trường hợp web server Nginx MASTER die
Trường hợp dịch vụ Nginx chết trên server MASTER (server không chết) thì ở phần cấu hình Keepalived có cấu hình vrrp_script – chk_nginx
dùng để kiểm tra Process ID của dịch vụ Nginx. Nếu dịch vụ Nginx chết thì Keepalived sẽ trừ trọng số priority đi 4 (theo cấu hình) lúc này 104 – 4 = 100 , độ ưu tiên của con MASTER WEB1 thấp hơn độ ưu tiên của WEB2 (100 + 2 = 102) nên VRRP tiến hành bầu chọn lại MASTER. Server WEB2 sẽ lên làm MASTER và giữ VIP, còn server WEB1 sẽ chuyển sang trạng thái BACKUP.
Chúng ta coi log trong cùng thời điểm trên 2 WEB Server khi dịch vụ Nginx trên Master dừng hoạt động.
WEB1
$ systemctl stop nginx
$ tail -n 10 /var/log/messages
Feb 19 22:59:48 web1 Keepalived_vrrp[26772]: VRRP_Script(chk_nginx) failed
Feb 19 22:59:48 web1 Keepalived_vrrp[26772]: VRRP_Instance(VI_1) Changing effective priority from 104 to 100
Feb 19 22:59:49 web1 Keepalived_vrrp[26772]: VRRP_Instance(VI_1) Received advert with higher priority 102, ours 100
Feb 19 22:59:49 web1 Keepalived_vrrp[26772]: VRRP_Instance(VI_1) IPSEC-AH : Syncing seq_num - Decrement seq
Feb 19 22:59:49 web1 Keepalived_vrrp[26772]: VRRP_Instance(VI_1) Entering BACKUP STATE
Feb 19 22:59:49 web1 Keepalived_vrrp[26772]: VRRP_Instance(VI_1) removing protocol VIPs.
WEB2
$ tail -n 10 /var/log/messages
Feb 19 22:59:50 web2 Keepalived_vrrp[8425]: VRRP_Instance(VI_1) forcing a new MASTER election
Feb 19 22:59:51 web2 Keepalived_vrrp[8425]: VRRP_Instance(VI_1) Transition to MASTER STATE
Feb 19 22:59:52 web2 Keepalived_vrrp[8425]: VRRP_Instance(VI_1) Entering MASTER STATE
Feb 19 22:59:52 web2 Keepalived_vrrp[8425]: VRRP_Instance(VI_1) setting protocol VIPs.
Feb 19 22:59:52 web2 Keepalived_vrrp[8425]: Sending gratuitous ARP on eth0 for 10.12.166.80
Feb 19 22:59:52 web2 Keepalived_vrrp[8425]: VRRP_Instance(VI_1) Sending/queueing gratuitous ARPs on eth0 for 10.12.166.80
Sau đó nếu dịch vụ Nginx trên WEB1 hoạt động trở lại, thì trọng số priority trên WEB1 sẽ khôi phục lại như lúc ban đầu. Lúc này priority WEB1 (104) sẽ lớn hơn (102) của WEB2, nên hoạt động bầu chọn MASTER lại diễn ra. WEB1 sẽ khôi phục lại quyền làm MASTER và nắm giữa VIP. WEB2 sẽ quay về làm BACKUP.
6. Cấu hình Server không khôi phục quyền MASTER
Trong một số trường hợp, chúng ta không muốn server WEB1 vừa chết xong quay lại chiếm quyền làm MASTER trong giữa 2 máy chủ Keepalived.
chúng ta sẽ lưu ý một số cấu hình sau, có thể tự mình trải nghiệm cấu hình :
- STATE của các server đều là BACKUP.
- Cấu hình thêm ‘nopreempt‘.
- Các priority chênh nhau một ít.
Cấu hình Keepalved trên Web1
vrrp_script chk_nginx {
script "killall -0 nginx"
interval 2
weight 4
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
mcast_src_ip 10.12.166.81
virtual_router_id 50
priority 51
advert_int 1
nopreempt
authentication {
auth_type AH
auth_pass cuongquach
}
virtual_ipaddress {
10.12.166.90
}
track_script
{
chk_nginx
}
}
Cấu hình Keepalived trên Web2
vrrp_script chk_nginx {
script "killall -0 nginx"
interval 2
weight 4
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
mcast_src_ip 10.12.166.82
virtual_router_id 50
priority 50
advert_int 1
nopreempt
authentication {
auth_type AH
auth_pass cuongquach
}
virtual_ipaddress {
10.12.166.90
}
track_script
{
chk_nginx
}
}
Recap
Trên đây là cách để thực hiện cấu hình Keepalived cho hoạt động IP Failover với Virtual IP nhằm đảm bảo tính sẵn sàng cao High Availability cho các dịch vụ trên Linux.
Nguồn tham khảo:
Nguồn: viblo.asia