1、VRRP協議
VRRP協議被稱為虛擬路由冗余協議
- 虛擬路由器簡介
VRRP將局域網內的一組路由器劃分在一起,形成一個VRRP備份組,它在功能上相當于一臺虛擬路由器,使用虛擬路由器號進行標識。以下使用虛擬路由器代替VRRP備份組進行描述。
虛擬路由器有自己的虛擬IP地址和虛擬MAC地址,它的外在表現形式和實際的物理路由器完全一樣。局域網內的主機將虛擬路由器的IP地址設置為默認網關,通過虛擬路由器與外部網絡進行通信。虛擬路由器是工作在實際的物理路由器之上的。它由多個實際的路由器組成,包括一個Master路由器和多個Backup路由器。Master路由器正常工作時,局域網內的主機通過Master與外界通信。當Master路由器出現故障時,Backup路由器中的一臺設備將成為新的Master路由器,接替轉發報文的工作,如圖下圖
Paste_Image.png
- VRRP工作過程
VRRP的工作過程為:
(1) 虛擬路由器中的路由器根據優先級選舉出Master。Master 路由器通過發送免費ARP 報文,將自己的虛擬MAC 地址通知給與它連接的設備或者主機,從而承擔報文轉發任務;
(2) Master 路由器周期性發送VRRP 報文,以公布其配置信息(優先級等)和工作狀況;
(3) 如果Master 路由器出現故障,虛擬路由器中的Backup 路由器將根據優先級重新選舉新的Master;
(4) 虛擬路由器狀態切換時,Master 路由器由一臺設備切換為另外一臺設備,新的Master 路由器只是簡單地發送一個攜帶虛擬路由器的MAC 地址和虛擬IP地址信息的免費ARP 報文,這樣就可以更新與它連接的主機或設備中的ARP 相關信息。網絡中的主機感知不到Master 路由器已經切換為另外一臺設備。
(5) Backup 路由器的優先級高于Master 路由器時,由Backup 路由器的工作方式(搶占方式和非搶占方式)決定是否重新選舉Master。
由此可見,為了保證Master路由器和Backup路由器能夠協調工作,VRRP需要實現以下功能:
Master 路由器的選舉;
Master 路由器狀態的通告;
同時,為了提高安全性,VRRP 還提供了認證功能; - VRRP提供了三種認證方式:
無認證:不進行任何 VRRP 報文的合法性認證,不提供安全性保障。
簡單字符認證:在一個有可能受到安全威脅的網絡中,可以將認證方式設置
為簡單字符認證。發送VRRP 報文的路由器將認證字填入到VRRP 報文中,
而收到VRRP 報文的路由器會將收到的VRRP 報文中的認證字和本地配置的
認證字進行比較。如果認證字相同,則認為接收到的報文是合法的VRRP 報
文;否則認為接收到的報文是一個非法報文。
MD5 認證:在一個非常不安全的網絡中,可以將認證方式設置為MD5 認
證。發送VRRP 報文的路由器利用認證字和MD5 算法對VRRP 報文進行加
密,加密后的報文保存在Authentication Header(認證頭)中。收到VRRP
報文的路由器會利用認證字解密報文,檢查該報文的合法性。 - VRRP優先級
VRRP優先級的取值范圍為0到255(數值越大表明優先級越高),可配置的范圍是
1到254,優先級0為系統保留給路由器放棄Master位置時候使用,255則是系統保
留給IP地址擁有者使用。當路由器為IP地址擁有者時,其優先級始終為255。因
此,當虛擬路由器內存在IP地址擁有者時,只要其工作正常,則為Master路由器。 - 術語:
虛擬路由器:Virtual Router
虛擬路由器標識:VRID(0-255),唯一標識虛擬路由器
物理路由器:
master:主設備
backup:備用設備
priority:優先級
VIP:Virtual IP
VMAC:VirutalMAC (00-00-5e-00-01-VRID)
總結:VRRP協議可以實現ip地址的漂移,在兩個物理路由器上虛擬的配置一個VIP,并且VIP剛開始時由master使用,當master損壞時備用的路由器根據優先級進行選舉,選舉為master路由器的使用此虛擬VIP
2、KeepAlived的配置準備
(1) 各節點時間必須同步
在兩臺物理路由器上做如下配置,本次實驗使用centos7和centos6兩臺主機做為物理的路由器
在centos7上
ntpdate 172.18.0.1
vim /etc/chrony.conf
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
server 172.18.0.1 iburst ---加上這一行與誰同步的
systemctl start chronyd ---啟動同步時間的服務
systemctl enable chronyd
在centos6上
ntpdate 172.18.0.1
vim /etc/ntp.conf
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
172.18.0.1 iburst
service ntpd start ---啟動同步時間的服務,我們發現在centos6和centos7上同步時間的服務是不同的
chkconfig ntpd on
為什么要先同步時間再去修改配置文件,因為如果時間相差的太多是不會同步的。必須用命令將時間先同步后再去修改配置文件
(2) 確保iptables及selinux不會成為阻礙
getenfoce
iptables -vnL
(3) 各節點之間可通過主機名互相通信(對KA并非必須)
建議使用/etc/hosts文件實現
在centos7上
hostnamectl set-hostname node1
vim /etc/hosts
192.168.74.106 node2
在centos6上
vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=node2
vim /etc/hosts
192.168.74.107 node1
將兩臺主機退出后重新登錄發現主機名改變了
[root@node2 network-scripts]#ping node1
PING node1 (192.168.74.107) 56(84) bytes of data.
64 bytes from node1 (192.168.74.107): icmp_seq=1 ttl=64 time=1.14 ms
64 bytes from node1 (192.168.74.107): icmp_seq=2 ttl=64 time=0.453 ms
(4) 各節點之間的root用戶可以基于密鑰認證的ssh服務完成互相通信(對KA并非必須)
在centos7上
ssh-keygen ---生成公鑰私鑰對
ssh-copy-id -i id_rsa.pub node2: ---將公鑰傳給對方,不用加-i也可以,會默認將公鑰轉給對方的
在centos6上
ssh-keygen
ssh-copy-id -i id_rsa.pub node1:
測試
在cenots7上測試ssh node2
在centos6上測試ssh node1
3、KeepAlived實現
- 實現單主模式vip的地址轉移
yum install keepalived
1、在主上的配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { ---這里一定要注意所有的大括號前都有空格,并且大括號要一一對應,不然實現不了
notification_email { ---給哪個郵箱地址發通知
root@localhost
}
notification_email_from node1@localhost ---郵件來自己于誰
smtp_server 127.0.0.1 ---郵件服務器地址
smtp_connect_timeout 30
router_id node1 ----真實的物理路由器的id
vrrp_mcast_group4 224.21.21.21 ---加一個多播地址,用于主master向這個多播地址發送消息,證明自己還活著,當主master壞了的時候,多個從路由器向這個多播地址內發送信息,通過比較優先級選舉出來一個master做為主來代替壞了的master工作
}
vrrp_instance VI_1 {
state MASTER
interface ens33 ----綁定為當前虛擬路由器使用的物理接口
virtual_router_id 88 ---當前虛擬路由器惟一標識,范圍是0-255
priority 100 ---當前物理節點在此虛擬路由器中的優先級,范圍1-254
advert_int 1 ---vrrp通告的時間間隔,默認1s
authentication { ----認證機制
auth_type PASS
auth_pass 783b7339 ---僅前8位有效,可以用openssl rand -hex 4 取個隨機數
}
virtual_ipaddress {
192.168.74.88/24 dev ens33 ---vip的地址
}
}
track_interface{ ---配置監控網絡接口,一旦出現故障,則轉為FAULT狀態實現地址轉移
ens33
}
systemctl start keepalived.service
2、在從上的設置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from node2@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2
vrrp_mcast_group4 224.21.21.21
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 88
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 783b7339
}
virtual_ipaddress {
192.168.74.88/24 dev eth0
}
}
track_interface{
eth0
}
3、測試
在主上輸入ip a命令發現vip已經配置成功
在從上輸入ip a命令發現沒有vip
此時把主的網卡斷開,在從上抓包
tcpdump -i eth0 -nn host 224.21.21.21可以看到切換的過程,通過向多播內發送優先級選舉出master
并在從上查看ip a發現vip已經轉移到從上了
ip link set dev eth0 multicast off ---可以使用如下命令關閉多播,默認都是開啟的,一般不需要關閉,此服務如果關閉多播就無法選舉master了和進行實時監控主master是否是活著的了
nopreempt:定義工作模式為非搶占模式,也就是原來的主master修好后即使優先級比現在的高也不會成為master
preempt_delay 300:搶占式模式,節點上線后觸發新選舉操作的延遲時長,默認模式
- 實現日志功能
1、vim /etc/sysconfig/keepalived ---定義一個日志設施為local2
KEEPALIVED_OPTIONS="-D -S 2"
2、vim /etc/rsyslog.conf
local2.* /var/log/keepalived.log
systemctl restart rsyslog
systemctl restart keepalived
3、cat /var/log/keepalived.log ---發現已經有日志記錄了
- 定義通知腳本
也就是發生vip轉移時會給本機的root發郵件
1、定義一個通知腳本
vim /app/notify.sh
#!/bin/bash
#
contact='root@localhost'
notify () {
mailsubject="`hostname` to be $1, vip floating"
mailbody="`date +'%F %T'`: vrrp transition, `hostname` changed to be $1"
echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
;;
backup)
notify backup
;;
fault)
notify fault
;;
*)
echo "Usage: `basename $0` {master|backup|fault}"
exit 1
;;
esac
2、在主路由器和從路由器的配置文件中調用這個腳本
vim /etc/keepalived/keepalived.conf ---加到vrrp_instance VI_1語句塊里
notify_master "/app/notify.sh master" ---表示當切換到主的時候會自動給本機的root發郵件
notify_backup "/app/notify.sh backup" ---表示切換為備用的時候會自動給本機的root發郵件
notify_fault "/app/notify.sh fault"
3、測試
在主路由器上關閉keepalived服務,在從路由器上會發現root收到一封郵件,變成主的通知的郵件,當主路由器開啟keepalived服務時會發現從路由器上的root收到一封變成backup的郵件
輸入mail命令就可以看到發給root的郵件
- 實現雙主模式
上面的示例只是實現了一個虛擬vip,當主工作時,從不會工作,只有當主不工作了從才會變成master,得到vip開始工作,如果要實現主和從都工作,就需要配置兩個虛擬的vip
實現如下圖所示
無標題5.png
實現過程如下:
1、在node1上的設置
vim /etc/keepalived/keepalived.conf ---在上面的配置中增加一個實例
vrrp_instance VI_2 {
state BACKUP ---將node1設置為備份
interface ens33
virtual_router_id 66 ---虛擬路由標識改一下
priority 90 ---優先級要調低
advert_int 1
authentication {
auth_type PASS
auth_pass 683b7339 ---此項也改一下
}
virtual_ipaddress {
192.168.74.66/24 dev ens33 ---設置一個新的vip地址
}
notify_master "/app/notify.sh master"
notify_backup "/app/notify.sh backup"
notify_fault "/app/notify.sh fault"
}
track_interface{
ens33
}
2、在node2上的設置
vim /etc/keepalived/keepalived.conf
vrrp_instance VI_2 {
state MASTER ---將node2設置為主
interface eth0
virtual_router_id 66
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 683b7339
}
virtual_ipaddress {
192.168.74.66/24 dev eth0
}
notify_master "/app/notify.sh master"
notify_backup "/app/notify.sh backup"
notify_fault "/app/notify.sh fault"
}
track_interface{
eth0
}
3、將兩個主機重新啟動一下服務
systemctl restart keepalived.service
service keepalived restart
ip a 發現新的vip綁定到rode2上了
[root@node2 ~]#tcpdump -i eth0 -nn host 224.21.21.21 ---抓包可以看到有兩個主在多播內發送優先級等信息,證明自己還活著
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
15:22:35.826209 IP 192.168.74.106 > 224.21.21.21: VRRPv2, Advertisement, vrid 66, prio 100, authtype simple, intvl 1s, length 20
15:22:35.858820 IP 192.168.74.107 > 224.21.21.21: VRRPv2, Advertisement, vrid 88, prio 100, authtype simple, intvl 1s, length 20
15:22:36.832800 IP 192.168.74.106 > 224.21.21.21: VRRPv2, Advertisement, vrid 66, prio 100, authtype simple, intvl 1s, length 20
4、KeepAlived實現IPVS-DR的高可用集群
- 常用參數
delay_loop <INT>:服務輪詢的時間間隔
lb_algo rr|wrr|lc|wlc|lblc|sh|dh:定義調度方法
lb_kind NAT|DR|TUN:集群的類型
persistence_timeout <INT>:持久連接時長
protocol TCP:服務協議,僅支持TCP
sorry_server <IPADDR> <PORT>:所有RS故障時,備用服務器地址
real_server<IPADDR> <PORT> {
weight <INT> RS權重
notify_up <STRING>|<QUOTED-STRING> RS上線通知腳本
notify_down <STRING>|<QUOTED-STRING> RS下線通知腳本
HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHEC K { ... }:定義當前主機的健康狀態檢測方法
}
- KeepAlived配置檢測
①HTTP_GET|SSL_GET:應用層檢測
HTTP_GET|SSL_GET {
url{
path <URL_PATH>:定義要監控的URL
status_code <INT>:判斷上述檢測機制為健康狀態的響應碼
digest <STRING>:判斷為健康狀態的響應的內容的校驗碼
}
connect_timeout <INTEGER>:連接請求的超時時長
nb_get_retry <INT>:重試次數
delay_before_retry <INT>:重試之前的延遲時長
connect_ip <IP ADDRESS>:向當前RS哪個IP地址發起健康狀態檢測請求
connect_port <PORT>:向當前RS的哪個PORT發起健康狀態檢測請求
bindto <IP ADDRESS>:發出健康狀態檢測請求時使用的源地址
bind_port <PORT>:發出健康狀態檢測請求時使用的源端口
}
②如果后端的rs不是httpd服務。健康性檢查利用tcp協議進行檢查
TCP_CHECK {
connect_ip <IP ADDRESS>:向當前RS的哪個IP地址發起健康狀態檢測請求
connect_port <PORT>:向當前RS的哪個PORT發起健康狀態檢測請求
bindto <IP ADDRESS>:發出健康狀態檢測請求時使用的源地址
bind_port <PORT>:發出健康狀態檢測請求時使用的源端口
connect_timeout <INTEGER>:連接請求的超時時長
}
無標題6.png
1、在兩個webserver上的設置
systemctl start httpd
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ip addr add 192.168.74.88 dev lo ---在兩個webserver上配置vip
2、在主和從LVS服務器上的設置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from node1@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.21.21.21
}
vrrp_instance VI_1 {
state MASTER ---在另外一臺上設置為BACKUP
interface ens33 ---另外一臺上網卡可能不同需要修改
virtual_router_id 88
priority 100 ----在另外一臺上設置為90
advert_int 1
authentication {
auth_type PASS
auth_pass 783b7339
}
virtual_ipaddress {
192.168.74.88/24 dev ens33
}
notify_master "/app/notify.sh master"
notify_backup "/app/notify.sh backup"
}
track_interface{
ens33 ---另外一臺上網卡可能不同,需要修改
}
virtual_server 192.168.74.88 80 { ----在上面的配置中增加一個virtual_server的語句塊,主和從LVS都要加這個語句塊
delay_loop 6 ---服務輪詢的時間間隔
lb_algo wrr ----定義調度方法rr|wrr|lc|wlc|lblc|sh|dh
lb_kind DR ----NAT|DR|TUN:集群的類型
# persistence_timeout <INT>:持久連接時長,此項最好不要加上,加上好測試不出來輪詢,因為會保持持久連接到第一個調度的rs服務器
protocol TCP ----服務協議,僅支持TCP
sorry_server 127.0.0.1 80 ---所有RS故障時,備用服務器地址
real_server 192.168.74.133 80 {
weight 1 ---RS權重
HTTP_GET { ----應用層檢測
url {
path / ----定義要監控的URL
status_code 200 ----判斷上述檢測機制為健康狀態的響應碼
}
connect_timeout 3 ----連接請求的超時時長
nb_get_retry 3 ----重試次數
delay_before_retry 3 ----重試之前的延遲時長
}
}
real_server 192.168.74.129 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
在主和從上都搭建一個httpd服務器做為sorry_server
systemctl restart keepalived ---主和從都重啟服務
yum install ipvsadm
[root@node1 app]#ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.74.88:80 wrr
-> 192.168.74.129:80 Route 1 0 0
-> 192.168.74.133:80 Route 1 0 0
3、測試
關閉主LVS的keeplived服務,從LVS就開始工作
在客戶端 curl 192.168.74.88 ---發現輪詢
5、雙主模式的lVS-DR集群
雙主模式就是在兩個物理的LVS上配置兩個虛擬的VIP,當客戶端訪問192.168.74.88時node1是主,node2是備份,當客戶端訪問是192.168.74.66時node2是主,node1是備份,利用防火墻打標簽,當無論客戶端訪問的是192.168.74.88還是192.168.74.66時都調度到后端的rs服務器上
實現過程如下
1、在兩個rs服務器上的設置
systemctl start httpd
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ip addr add 192.168.74.88 dev lo ---在兩個webserver上配置兩個vip
ip addr add 192.168.74.66 dev lo
2、在主和從LVS服務器上的設置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from node1@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.21.21.21
}
vrrp_instance VI_1 { ---定義一個虛擬的vip1
state MASTER ---在另外一臺LVS上設置為BACKUP
interface ens33 ---另外一臺上網卡可能不同需要修改
virtual_router_id 88
priority 100 ----在另外一臺LVS上設置為90
advert_int 1
authentication {
auth_type PASS
auth_pass 783b7339
}
virtual_ipaddress {
192.168.74.88/24 dev ens33 ---另外一臺網卡要修改
}
notify_master "/app/notify.sh master"
notify_backup "/app/notify.sh backup"
notify_fault "/app/notify.sh fault"
}
track_interface{
ens33 ---網卡可能不同需要修改
}
vrrp_instance VI_2 { ---定義一個虛擬的vip2
state BACKUP ---在另外一臺LVS服務上設置為MASTER
interface ens33 ----在另外一臺上網卡可能不同需要修改
virtual_router_id 66
priority 90 ----在另外一臺LVS服務上設置為100
advert_int 1
authentication {
auth_type PASS
auth_pass 683b7339
}
virtual_ipaddress {
192.168.74.66/24 dev ens33 ---另外一臺網卡名要修改
}
notify_master "/app/notify.sh master"
notify_backup "/app/notify.sh backup"
notify_fault "/app/notify.sh fault"
}
track_interface{
ens33 ---另外一臺上網卡名要修改
}
virtual_server fwmark 20 { ---只要訪問的是打標簽為20的地址就轉發到后面的rs服務器上
delay_loop 6
lb_algo wrr
lb_kind DR
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.74.133 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.74.129 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
iptables -t mangle -A PREROUTING -d 192.168.74.88,192.168.74.66 -p tcp --dport 80 -j MARK --set-mark 20 ---無論訪問哪個vip地址都打標簽為20
在兩個主從服務器上安裝httpd服務做為sorry_server
systemctl restart keepalived.service
3、測試
在客戶端測試
curl 192.168.74.66
curl 192.168.74.88
停止一個LVS上keeplived服務,繼續訪問這兩個地址,仍然可以調度
6、高可用nginx服務
1、在后端的兩個rs上搭建好httpd服務
2、在兩個nginx服務器上搭建好nginx服務,并做好轉發
vim /etc/nginx/nginx.conf
upstream webserver { ---在http語句塊里添加
server 192.168.74.133:80;
server 192.168.74.129:80;
}
vim /etc/nginx/conf.d/vhost.conf
server{
listen 80 default_server;
server_name www.a.com;
root /app/website1;
location / {
proxy_pass http://webserver;
}
nginx -t ---檢查語法
nginx ---啟動服務
3、在兩臺nginx服務器上修改keepalived的配置文件
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from node1@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.21.21.21
}
vrrp_script chk_down { ---創建一個測試的腳本,如果這個文件存在就把優先級減20,這樣備用的就開始工作了,這個可以不加,只是測試用的
script "[ -f /etc/keepalived/down ] &&exit 1||exit 0"
interval 1
weight -20
}
vrrp_script chk_nginx { ---這個腳本是用來監控nginx服務是否正常工作,如果不正常優先級就減20,備用的開始工作
script "killall -0 nginx &>/dev/null &&exit 0||exit 1"
interval 1
weight -20 ---如果腳本的返回值為1,優先級就減20
fall 2 #2次檢測失敗為失敗
rise 2 #2次檢測成功為成功
}
vrrp_instance VI_1 {
state MASTER ---另外一臺nginx上設置為BACKUP
interface ens33 ---另外一臺網卡名要改
virtual_router_id 88
priority 100 ---另外一臺優先級為90
advert_int 1
authentication {
auth_type PASS
auth_pass 783b7339
}
virtual_ipaddress {
192.168.74.88/24 dev ens33 ---在另外一臺上網卡名要改
}
track_script { ----調用上面的兩個腳本
chk_down
chk_nginx
}
notify_master "/app/notify.sh master"
notify_backup "/app/notify.sh backup"
notify_fault "/app/notify.sh fault"
}
systemctl start keepalived ----啟動服務
4、測試
curl 192.168.74.88
停止一臺nginx服務,發現仍可以調度,因為vip已經轉移到備用的服務上了
7、同步組
LVS NAT模型VIP和DIP都需要同步,需要同步組
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from node1@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node1
vrrp_mcast_group4 224.21.21.21
}
vrrp_sync_group VG_1 {
group {
VI_1
VI_2
}
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 88
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 783b7339
}
virtual_ipaddress {
192.168.74.88/24 dev ens33 ---定義一個vip
}
notify_master "/app/notify.sh master"
notify_backup "/app/notify.sh backup"
notify_fault "/app/notify.sh fault"
}
vrrp_instance VI_2 {
state MASTER
interface ens37
virtual_router_id 87
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 683b7339
}
virtual_ipaddress {
172.18.21.88/16 dev ens37 ---定義dip
}
notify_master "/app/notify.sh master"
notify_backup "/app/notify.sh backup"
notify_fault "/app/notify.sh fault"
}