Keepalived
- 一、工作原理
- 二、部署服務
-
- 2.1 IP配置設定
- 2.2 配置主負載排程器
- 2.3 配置備負載排程器
- 2.3 web1 設定
- 2.4 web2 設定
- 2.5 測試
一、工作原理
基于VRRP協定來實作的LVS服務高可用方案
- VRRP 虛拟路由備援協定
- 可以解決靜态路由出現的單點故障問題
在一個LVS服務叢集中通常有主伺服器(MASTER) 和備份伺服器(BACKUP) 兩種角色的伺服器,但是對外表現為一個虛拟IP,主伺服器會發送VRRP通告資訊給備份伺服器,當備份伺服器收不到VRRP消息的時候,即主伺服器異常的時候,備份伺服器就會接管虛拟IP,繼續提供服務,進而保證了高可用性
二、部署服務
2.1 IP配置設定
主DR負載排程伺服器:192.168.253.11
備DR負載排程伺服器:192.168.253.22
web1 伺服器:192.168.253.33
web2 伺服器:192.168.253.44
VIP :192.168.253.111
客戶機:192.168.253.123
2.2 配置主負載排程器
關閉防火牆
systemctl stop firewalld
setenforce 0
軟體開啟
# 安裝
yum -y install keepalived
# 開啟
modprobe ip_vs
# 檢視
cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
配置檔案
# 進入目錄
cd /etc/keepalived/
# 備份原配置檔案
cp keepalived.conf keepalived.conf.bak
- vim keepalived.conf
# 定義全局參數
3 global_defs {
# 第10行 修改郵件服務指向本地
10 smtp_server 127.0.0.1
# 第12行 修改伺服器名稱,主備不能一樣
12 router_id LVS_01
# 第14行 注釋,取消遵守vrrp協定功能,否則VIP無法連接配接
14 # vrrp_strict
}
# 定義vrrp熱備執行個體參數
19 vrrp_instance VI_1 {
# 第20行 修改熱備狀态指定,主是master,備是backup
20 state MASTER
# 第21行 修改承載VIP位址的實體接口
21 interface ens33
# 第22行 修改虛拟路由器的IP号,每個熱備組保持一緻
22 virtual_router_id 10
# 第23行 修改優先級,越大級别越高
23 priority 100
24 advert_int 1 # 通告間隔秒數(心跳頻率)
25 authentication { # 定義認證資訊,每個熱備足保持一緻
26 auth_type PASS # 認證類型
# 第27行 修改驗證密碼,主備需要一緻
27 auth_pass 123456
28 }
29 virtual_ipaddress { # 指定群集VIP位址
30 192.168.253.111
}
第36行 修改虛拟伺服器位址、端口、定義虛拟伺服器和web伺服器池參數
36 virtual_server 192.168.253.111 80 {
37 delay_loop 6 # 健康檢查的間隔時間(秒)
38 lb_algo rr # 指定排程算法,輪詢(rr)
# 第39行 修改群集工作模式輪詢(rr)
39 lb_kind DR
40 persistence_timeout 50 # 連接配接保持時間(秒)
41 protocol TCP # 應用服務采用的TCP協定
# 第43行 修改第一個web節點的位址、端口
43 real_server 192.168.253.33 80 {
44 weight 1 # 節點的權重
# 第45行 删除45-53行,添加以下内容
45 TCP_CHECK {
46 connect_port 80 # 添加檢查的目标端口
47 connect_timeout 3 # 添加連接配接超市(秒)
48 nb_get_retry 3 # 添加重試次數
49 delay_before_retry 3 # 添加重試間隔
50 }
# 複制43-51行,添加在下面
# 添加第二個web節點的位址、端口
52 real_server 192.168.253.44 80 {
53 weight 1
54 TCP_CHECK {
55 connect_port 80
56 connect_timeout 3
57 nb_get_retry 3
58 delay_before_retry 3
59 }
60 }
關閉核心重定向參數響應
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
重新開機
- systemctl restart keepalived.service
2.3 配置備負載排程器
關閉防火牆
systemctl stop firewalld
setenforce 0
軟體開啟
# 安裝
yum -y install ipvsadm
yum -y install keepalived
# 開啟
modprobe ip_vs
# 檢視
cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
配置檔案
-
主負載伺服器直接複制檔案發送到備用
scp keepalived.conf [email protected]:/etc/keepalived/
vim keepalived.conf
# 更改以下幾行
12 router_id LVS_02
20 state BACKUP
23 priority 90
關閉核心重定向參數響應
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p
重新開機
- systemctl restart keepalived.service
2.3 web1 設定
# 進入網卡配置目錄
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
# 編輯虛拟ip
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.253.111
NETMASK=255.255.255.255
ONBOOT=yes
route add -host 192.168.253.111 dev lo:0
ifup lo:0
ifconfig lo:0
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p
配置網頁内容
vim /var/www/html/index.html
内容
- systemctl restart httpd
2.4 web2 設定
# 進入網卡配置目錄
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
# 編輯虛拟ip
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.253.111
NETMASK=255.255.255.255
ONBOOT=yes
route add -host 192.168.253.111 dev lo:0
ifup lo:0
ifconfig lo:0
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p
配置網頁内容
vim /var/www/html/index.html
内容
- systemctl restart httpd
2.5 測試
切斷主伺服器
備用頂上