各位先進好:
小弟最近在兩台 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 ?