目錄
- 前言
- 一. Keepalived 雙機熱備基礎知識
- 1. Keepalived 概述及安裝
- (1)Keepalived 的熱備方式
- (2)Keepalived 的安裝與服務控制
- 2. 使用Keepalived 實現雙機熱備
- (1)主服務器的配置
- (2)備用服務器的配置
- (3)測試雙機熱備功能
- ①:連通性測試
- ②:Web訪問測試
- ③:查看日志記錄
- 二. 使用 Keepalived 實現雙機熱備
- 1. 基礎環境配置
- 2. 配置主調度器
- 3. 配置從調度器
- 4. 配置 Web 節點服務器
- 5. 測試 LVS+keepalived 高可用群集
前言
在這個高度信息化的 IT 時代,企業的生產系統、業務運營、銷售和支持,以及日常管理等環節越來越依賴于計算機信息和服務,對高可用(HA)技術的應用需求不斷提高,以便提供持續的、不間斷的計算機系統或網絡服務。本章將學習如何使用 Keepalived 實現雙機熱備,包括針對 IP 地址的故障切換,以及在LVS 高可用群集中的熱備應用
一. Keepalived 雙機熱備基礎知識
Keepalived 起初是專門針對 LVS 設計的一款強大的輔助工具,主要用來提供故障切換(Failover)和健康檢査(Health Checking)功能–判斷 LVS 負載調度器、節點服務器的可用性,當 master 主機出現故障及時切換到 backup節點保證業務正常,當 master 故障主機恢復后將其重新加入群集并且業務重新切換回 master 節點
1. Keepalived 概述及安裝
Keepalived 的官方網站位于 http://www.keepalived.org/,本章將以 YUM方式講解 Keepalived 的安裝、配置和使用過程。在非 LVS 群集環境中使用時,Keepalived 也可以作為熱備軟件使用
(1)Keepalived 的熱備方式
Keepalived 采用 VRRP(Virtual Router Redundancy Protocol,虛擬路由冗余協議)熱備份協議,以軟件的方式實現Linux 服務器的多機熱備功能。VRRP是針對路由器的一種備份解決方案–由多臺路由器組成一個熱備組,通過共用的虛擬IP地址對外提供服務;每個熱備組內同一時刻只有一臺主路由器提供服務,其他路由器處于冗余狀態。若當前在線的路由器失效,則其他路由器會自動接替(優先級決定接替順序)虛擬IP地址,以繼續提供服務
熱備組內的每臺路由器都可能成為主路由器,虛擬路由器的IP地址(VIP)可以在熱備組內的路由器之間進行轉移,所以也稱為漂移IP地址。使用Keepalived 時,漂移地址的實現不需要手動建立虛接口配置文件(如 ens33 :0),而是由 Keepalived 根據配置文件自動管理
操作系統 | 配置 | IP | 服務 |
---|---|---|---|
OpenEuler24 | 2C4G | 192.168.10.101 | Keepalived,apache |
OpenEuler24 | 2C4G | 192.168.10.102 | Keepalived,apache |
(2)Keepalived 的安裝與服務控制
在0penEuler24系統中,使用DNF方式安裝keepalived.x86642.2.8-1.oe2403sp1,會自動安裝 Keepalived 所需的軟件包。除此之外,在 LVS群集環境中應用時,也需要用到ipvsadm 管理工具
[root@localhost ~]# dnf install -y keepalived ipvsadm
2. 使用Keepalived 實現雙機熱備
基于 VRRP的熱備方式,Keepalived 可以用作服務器的故障切換,每個熱備組可以有 多臺服務器–當然,最常用的就是雙機熱備了。在這種雙機熱備方案中,故障切換主要針對虛擬IP地址的漂移來實現,因此能夠適用于各種應用服務器(不管是 Web、FTP、Mail,還是 SSH、DNS·)
本小節將通過一個簡單的案例來說明 Keepalived 雙機熱備的配置方法。其中,主、備服務器的IP地址分別為192.168.10.101和 192.168.10.102,基于漂移地址 192.168.10.100 提供 Web 服務主、備服務器中都需要安裝 Keepalived,使用 YUM 方式安裝 httpd 提供Web 服務。下面僅講解與 Keepalived 相關的配置及測試過程
(1)主服務器的配置
Keepalived 服務的配置目錄位于/etc/keepalived/。其中keepalived.conf 是主配置文件。另外包括一個子目錄 samples/,提供了許多配置樣例作為參考
在 Keepalived 的配置文件中,使用“global defs {…}”區段指定全局參數,使用“vrrp instance 實例名稱{…}”區段指定 VRRP 熱備參數,注釋文字以“!”符號開頭
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/keepalived
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.confsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_R1vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}
vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.100}
}
確認上述配置無誤,然后啟動 Keepalived 服務。實際狀態為 MASTER 的主服務器將為 ens33 接口自動添加 VIP 地址,通過 ip 命令可以查看。注意:ifconfig 命令看不到
[root@localhost ~]# systemctl restart keepalived
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:39:a6:11 brd ff:ff:ff:ff:ff:ffinet 192.168.10.101/24 brd 192.168.10.255 scope global noprefixroute ens160valid_lft forever preferred_lft foreverinet 192.168.10.100/32 scope global ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe39:a611/64 scope link noprefixroute valid_lft forever preferred_lft forever
(2)備用服務器的配置
在同一個 Keepalived 熱備組內,所有服務器的 Keepalived 配置文件基本相同,包括虛擬路由器的 ID 號、認證信息、漂移地址、心跳頻率等。不同之處主要在于路由器名稱、熱備狀態、優先級。
- 路由器名稱(router id):建議為每個參與熱備的服務器指定不同的名稱
- 熱備狀態(state):至少應有一臺主服務器,將狀態設為MASTER;可以有多臺備用的服務器,將狀態設為BACKUP
- 優先級(priority):數值越大則取得 VIP控制權的優先級越高,因此主服務器的優先級應設為最高;其他備用服務器的優先級可依次遞減,但不要相同,以免在爭奪 VIP 控制權時發生沖突
配置備用服務器(可以有多臺)時,可以參考主服務器的keepalived.conf配置文件內容,只需修改路由器名稱、熱備狀態、優先級
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# cd /etc/keepalived/[root@bogon keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.confnotification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_R2vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}
vrrp_instance VI_1 {state BACKUPinterface ens160virtual_router_id 51priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.100
確認配置無誤,一樣需要啟動Keepalived 服務。此時主服務器仍然在線,VIP地址實際上仍然由主服務器控制,其他服務器處于備用狀態。因此,在備用服務器中將不會為 ens33 接口添加 VIP 地址
[root@localhost ~]# systemctl restart keepalived
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host noprefixroute valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:0b:df:52 brd ff:ff:ff:ff:ff:ffinet 192.168.10.102/24 brd 192.168.10.255 scope global noprefixroute ens160valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe0b:df52/64 scope link noprefixroute valid_lft forever preferred_lft forever
(3)測試雙機熱備功能
Keepalived 的日志消息保存在/var/log/messages 文件中,在測試主、備故障自動切換功能時,可以跟蹤此日志文件來觀察熱備狀態的變化。以針對連通性和web 服務的測試為例
①:連通性測試
在客戶機中執行“ping -t 192.168.10.100”命令,能夠正常、持續 ping 通,根據以下操作繼續觀察測試結果
① 停止啟用主服務器的 Keepalived 服務,發現 ping 測試只中斷了 1或2個包即恢復正常,說明已有其他服務器接替 VIP地址,并及時響應客戶機請求
② 重新啟用主服務器的 Keepalived 服務,發現 ping 測試再次中斷1或2個包即恢復正常,說明主服務器已恢復正常,并奪回VIP地址的控制權
重啟主服務器的keepalived,測試連通性
②:Web訪問測試
在 keepalived 運行的主機上啟動 nginx 服務并寫入不通的測試頁面內容
在客戶機中訪問 http://192.168.10.100/,將看到由主服務器 192.168.10.101提供的網頁文檔。① 停止啟用主服務器的 Keepalived 服務,再次訪問上述 Web 服務,將看到由備用服務器 192.168.10.102 提供的網頁文檔,說明 VIP 地址已切換至備用服務器
② 重新啟用主服務器的 Keepalived 服務,再次訪問上述 Web 服務,將看到重新由主服
務器 192.168.10.101 提供的網頁文檔,說明主服務器已重新奪取 VIP 地址
(1)安裝兩臺測試網站
(2)為兩臺網站創建測試文件
(3)關閉主keepalived,測試環游地址測試文件為web2
③:查看日志記錄
在執行主、備服務器故障切換的過程中,分別觀察各自的/var/log/messages日志文件,可以看到 MASTER、SLAVE 狀態的遷移記錄
① 主服務器中,Keepalived 服務狀態先變為“stop”,移除 VIP 地址,恢復后重新變為 MASTER
② 備用服務器中,狀態先切換為MASTER,待主服務器恢復后再交回控制權
通過上述測試過程,可以發現雙機熱備已經正常。客戶機只要通過VIP地址就可以訪問服務器所提供的 Web 等應用。其中,任何一臺服務器失效,另一臺服務器將會立即接替服務,從而實現高可用性。實際應用時,注意主、備服務器所提供的 Web 服務內容要保持一致
二. 使用 Keepalived 實現雙機熱備
Keepalived 的設計目標是構建高可用的 LVS 負載均衡群集,可以調用ipvsadm 工具來創建虛擬服務器、管理服務器池,而不僅僅用作雙機熱備。使用Keepalived 構建 LVS 群集更加簡便易用,主要優勢體現在:對 LVS 負載調度器實現熱備切換,提高可用性;對服務器池中的節點進行健康檢查,自動移除失效節點,恢復后再重新加入
在基于 LVS+Keepalived 實現的 LVS 群集結構中,至少包括兩臺熱備的負載調度器,三臺以上的節點服務器。本節將以 DR模式的 LVS 群集為基礎,增加一臺從負載調度器,使用 Keepalived 來實現主、從調度器的熱備,從而構建兼有負載均衡、高可用兩種能力的 LVS 網站群集平臺
使用 Keepalived 構建 LVS 群集時,也需要用到 ipvsadm 管理工具。但大部分工作會由Keepalived 自動完成,不需要手動執行 ipvsadm(除了查看和監控群集以外)。下面主要講解 Keepalived 的服務器池設置,關于 NFS 共享服務的配置、Keepalived 的熱備配置等在此不再詳細闡述
資源列表
操作系統 | 配置 | 主機名 | IP | 服務 |
---|---|---|---|---|
OpenEuler24 | 2C4G | lb01 | 192.168.10.101 | Keepalived,ipvsadm |
OpenEuler24 | 2C4G | lb02 | 192.168.10.102 | Keepalived,ipvsadm |
OpenEuler24 | 2C4G | web01 | 192.168.10.103 | apache |
OpenEuler24 | 2C4G | web02 | 192.168.10.104 | apache |
OpenEuler24 | 2C4G | nfs-server | 192.168.10.105 | rpcbind,nfs-utils |
1. 基礎環境配置
為四臺服務器關閉防火墻,Selinux安全機制,并設為開機自關閉
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service".
Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service".
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
2. 配置主調度器
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# ls
keepalived.conf.sample
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.conf
①:全局配置、熱備配置
②:Web 服務器池配置
③:重啟服務,測試環游地址
3. 配置從調度器
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# ls
keepalived.conf.sample
[root@localhost keepalived]# cp keepalived.conf.sample keepalived.conf
[root@localhost keepalived]# vim keepalived.conf
①:全局配置、熱備配置
②:Web 服務器池配置
③:重啟服務,測試環游地址
4. 配置 Web 節點服務器
①:安裝web服務器
②:為網站制作測試網頁
③:為網站設置VIP地址
④:添加ARP參數
⑤:檢測環回地址
5. 測試 LVS+keepalived 高可用群集
打開客戶端測試
掛起keepalived01和103網站,測試高可用