iT邦幫忙

0

CentOS 使用 Keepalived 做雙機線上備援,兩端同時出現虛擬 IP ?

  • 分享至 

  • xImage

各位先進好:

小弟最近在兩台 CentOS 7 上安裝 keepalived 要做線上備援
但發現兩台同時啟動了虛擬 IP
這造成了我一個很大的困擾:

從外界看,兩台伺服器、一個虛擬 IP,外部電腦可正確連線,一切正常。

但從伺服器內部看,就出現問題了:
伺服器內部軟體或使用者要連接虛擬 IP 時
發現IP在自己電腦內,於是將連線導向各自電腦內部(類似 localhost)
這造成兩台電腦資料不同步。
請問,該如何設定 keepalived 虛擬 IP 只出現在一台就好?
或用什麼方法,可以讓 BACKUP 電腦上的程式,
在 MASTER 存在時,連接至 MASTER
當 MASTER 死掉時,才連接至本機?

以下是我的環境與設定資料

OS:CentOS 7.4
Keepalived 版本 1.3.5-1

兩部電腦實際IP分別為:192.168.1.106 、 192.168.1.110
共用的虛擬 IP 為:192.168.1.200

兩部的 keepalived.conf 的設定內容如下

MASTER 電腦:
! Configuration File for keepalived

global_defs {
router_id CentOS7
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_instance VI_1 {
state MASTER
interface enp0s8
virtual_router_id 51
mcast_src_ip 192.168.1.110
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.200
}
}

BACKUP 電腦:
! Configuration File for keepalived

global_defs {
router_id SAT-SIS
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_instance VI_1 {
state BACKUP
interface enp0s3
virtual_router_id 51
mcast_src_ip 192.168.1.106
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.200
}
}

啟動 keepalived 的 IP 使用情形

MASTER 電腦:
[root@CentOS7 ~]# systemctl start keepalived
[root@CentOS7 ~]# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 192.168.1.110/24 brd 192.168.1.255 scope global enp0s8
valid_lft forever preferred_lft forever
inet 192.168.1.200/32 scope global enp0s8
valid_lft forever preferred_lft forever
[root@CentOS7 ~]#

SLAVE 電腦:
[root@SAT-SIS ~]# systemctl start keepalived
[root@SAT-SIS ~]# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
inet 192.168.1.106/24 brd 192.168.1.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet 192.168.1.200/32 scope global enp0s3
valid_lft forever preferred_lft forever
[root@SAT-SIS ~]#

可以看到,兩台電腦都啟動了 192.168.1.200 這個虛擬 IP
該怎麼處理,讓只有一台電腦啟動虛擬 IP ?

kjfang iT邦新手 5 級 ‧ 2017-10-12 09:02:24 檢舉
再測試時的新發現:
根據以上的設定,
MASTER、BACKUP、以及priority的設定都沒作用
從外界連線虛擬IP發現:
哪一台後啟動 keepalived
就由該台取得虛擬 IP,
與設定檔中的MASTER、BACKUP、及priority無關。
為什麼會這樣?
有人可以幫忙回答嗎?
kjfang iT邦新手 5 級 ‧ 2017-10-12 09:02:30 檢舉
再測試時的新發現:
根據以上的設定,
MASTER、BACKUP、以及priority的設定都沒作用
從外界連線虛擬IP發現:
哪一台後啟動 keepalived
就由該台取得虛擬 IP,
與設定檔中的MASTER、BACKUP、及priority無關。
為什麼會這樣?
有人可以幫忙回答嗎?
kjfang iT邦新手 5 級 ‧ 2017-10-12 09:02:31 檢舉
再測試時的新發現:
根據以上的設定,
MASTER、BACKUP、以及priority的設定都沒作用
從外界連線虛擬IP發現:
哪一台後啟動 keepalived
就由該台取得虛擬 IP,
與設定檔中的MASTER、BACKUP、及priority無關。
為什麼會這樣?
有人可以幫忙回答嗎?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友回答

立即登入回答