文章目錄
- 一、Keepalived 雙擊熱備基礎知識
- 1.1 Keepalived 案例分析
- 1.2 Keepalived 工具介紹
- 1.3 Keepalived 實作原理剖析
- 二、Keepalived 的部署
- 2.1 Keepalived 案例講解
- 2.2 Keepalived 安裝與啟動
- 2.3 配置 Keepalived master 服務器
- 2.4 配置 Keepalived slave 服務器
- 三、實驗
- 3.1 實驗準備
- 3.2 步驟
- 3.2.1 配置主調度器(192168.100.21)
- 3.2.2 配置輔調度器(192.168.100.25)
- 3.2.3 配置存盤服務器(192.168.100.24)
- 3.2.4 配置節點服務器(192.168.100.22)
- 3.2.5 配置節點服務器(192.168.100.23)
- 3.3測驗
一、Keepalived 雙擊熱備基礎知識
1.1 Keepalived 案例分析
- 企業應用中,單臺服務器承擔應用存在單點故障的危險
- 單點故障一旦發生,企業服務將發生中斷,造成極大的危害

1.2 Keepalived 工具介紹
專為 LVS 和 HA 設計的一款健康檢查工具
- 支持故障自動切換(Failover)
- 支持節點健康狀態檢查(Health Checking)
- 官方網站:http://www.keepalived.org/

1.3 Keepalived 實作原理剖析

Keepalived 采用 VRRP 熱備份協議
- 實作 Linux 服務器的多機熱備功能
VRRP(虛擬路由冗余協議)是針對路由器的一種備份解決方案
- 由多臺路由器組成一個熱備組,通過共用的虛擬 IP 地址對外提供服務
- 每個熱備組內同時只有一臺主路由器提供服務,其他路由器處于冗余狀態
- 若當前在線的路由器失敗,則其他路由器會根據設定的優先級自動接替虛擬 IP 地址,繼續提供服務
二、Keepalived 的部署
2.1 Keepalived 案例講解

- Keepalived 可實作多機熱備,每個熱備組有多臺服務器
- 雙擊熱備的故障切換是由虛擬 IP 地址的漂移來實作的,適用于各種應用服務器
- 實作基于 Web 服務的雙機熱備
2.2 Keepalived 安裝與啟動
- 在 LVS 群集環境中應用時,也需用到 ipvsadm 管理工具
- YUM 安裝 Keepalived
- 啟用 Keepalived 服務
2.3 配置 Keepalived master 服務器
- Keepalived 配置目錄位于/etc/keepalived/
- keepalived.conf 是主組態檔:
◆ global_defs {…} 區段指定全域引數
◆ vrrp_instance 實體名稱 {…} 區段指定 VRRP 熱備引數
◆ 注釋文字以 “!” 符號開頭
◆ 目錄 samples ,提供了許多配置樣例作為參考 - 常用配置選項:
◆ router_id HA_TEST_R1:本路由器(服務器)的名稱
◆ vrrp_instance VI_1:定義 VRRP 熱備實體
◆ state MASTER :熱備狀態,MASTER 表示主服務器
◆ interface ens33:承載 VIP 地址的物理介面
◆ virtual_router_ip 1:虛擬路由器的 ID 號,每個熱備組保持一致
◆ priority 100:優先級,數值越大優先級越高
◆ advert_int 1:通告間隔秒數(心跳頻率)
◆ auth_type PASS:認證型別
◆ auth_pass 123456:密碼子串
◆ virtual_ipaddress {vip}:指定漂移地址(VIP),可以有多個
2.4 配置 Keepalived slave 服務器
- Keepalived 備份服務器的配置與 master 的配置有三個選項不同
◆ router_id:設為自有名稱
◆ state:設為 BACKUP
◆ priority:值低于主服務器 - 其它選項與 master 相同
三、實驗
3.1 實驗準備
IP地址規劃:
漂移地址(VIP):192.168.100.100
主調度器:192.168.100.21
輔調度器:192.168.100.25
WEB服務器1:192.168.100.22
WEB服務器2:192.168.100.23
存盤服務器:192.168.100.24
3.2 步驟
3.2.1 配置主調度器(192168.100.21)
'【1】調整/proc回應引數'
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p ###生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
'【2】清除負載分配策略'
[root@localhost /]# ipvsadm -C
'【3】調整keepalived引數'
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
router_id HA_TEST_R1
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 1
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.100.100
}
}
virtual_server 192.168.100.100 80 {
delay_loop 15
lb_algo rr
lb_kind DR
persistence 60
protocol TCP
real_server 192.168.100.22 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
real_server 192.168.100.23 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
[root@localhost keepalived]# systemctl start keepalived ####啟動keepalived
[root@localhost keepalived]# systemctl enable keepalived ####開機啟動keepalived
[root@localhost keepalived]# ip addr show dev ens33 ####查看主控制IP地址和漂移地址

3.2.2 配置輔調度器(192.168.100.25)
'【1】調整/proc回應引數'
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@localhost network-scripts]# sysctl -p ###生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
'【2】清除負載分配策略'
[root@localhost /]# ipvsadm -C
'【3】調整keepalived引數'
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
router_id HA_TEST_R2
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 1
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.100.100
}
}
virtual_server 192.168.100.100 80 {
delay_loop 15
lb_algo rr
lb_kind DR
persistence 60
protocol TCP
real_server 192.168.100.22 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
real_server 192.168.100.23 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
[root@localhost keepalived]# systemctl start keepalived ####啟動keepalived
[root@localhost keepalived]# systemctl enable keepalived ####開機啟動keepalived
[root@localhost keepalived]# ip addr show dev ens33 ####查看主控制IP地址和漂移地址

3.2.3 配置存盤服務器(192.168.100.24)
rpm -q nfs-utils ###如果沒裝,yum -y install nfs-utils
rpm -q rpcbind ###如果沒裝,yum -y install rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24 (rw,sync)
/opt/52xit 192.168.100.0/24 (rw,sync)
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# echo "this is 51xit" >/opt/51xit/index.html
[root@localhost ~]# echo "this is 52xit" >/opt/52xit/index.html
3.2.4 配置節點服務器(192.168.100.22)
'【1】配置虛擬IP地址'
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# ifconfig

[root@localhost network-scripts]# vi /etc/rc.local
/sbin/route add -host 192.168.100.100 dev lo:0
[root@localhost network-scripts]# route add -host 192.168.100.100 dev lo:0
'【2】調整/proc回應引數'
[root@localhost network-scripts]# vi /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost network-scripts]# sysctl -p
'【3】安裝httpd 掛載測驗頁'
[root@localhost ~]# showmount -e 192.168.100.24 ####如果還沒發布,請到存盤服務器發布下,exportfs -rv
Export list for 192.168.100.44:
/opt/51xit (everyone)
/opt/52xit (everyone)
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 192.168.100.24:/opt/51xit /var/www/html/
[root@localhost ~]# vi /etc/fstab
192.168.100.24:/opt/51xit/ /var/www/html/ nfs rw,tcp,intr 0 1 ###開機自動掛載,注意格式對齊
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
3.2.5 配置節點服務器(192.168.100.23)
同 192.168.100.22 的配置,可以參考 3.2.4
3.3測驗
在網頁輸入如下:
192.168.100.22

在網頁輸入如下:
192.168.100.23

在網頁輸入如下:
192.168.100.100


打開抓包工具,會發現192.168.100.21主調度器,一直在發VRRP報文

打開抓包工具,會發現192.168.100.25從調度器,一直在發VRRP報文

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/124451.html
標籤:其他
