使用 keepalived 設置虛擬 IP 環境
准備
准備三個機器,IP地址信息如下:
host1: 192.168.2.206
host2: 192.168.2.205
hots3: 192.168.2.177
安裝 keepalived
在兩台機器上分別安裝 keepalived
$ sudo yum install -y keepalived
1
配置 keepalived
host1 上 keepalived 配置
$ cat /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER
interface ens160
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.2.98
}
}
host2 上 keepalived 配置
$ cat /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.2.98
}
}
Host3 上 keepalived 配置
$ cat /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state BACKUP
interface ens160
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.2.98
}
}
啟動 keepalived 服務
$ sudo service keepalived start
$ sudo chkconfig keepalived on
查看IP地址信息
host1 上 IP 地址信息
$ ip addr show ens160
3: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:32:83:82 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.205/24 brd 192.168.2.255 scope global eth2
inet 192.168.2.98/32 scope global eth2
inet6 fe80::a00:27ff:fe32:8382/64 scope link
valid_lft forever preferred_lft forever
7
其中可以看到 inet 192.168.2.98/32 scope global ens160,說明現在host1是作為虛擬IP的master來運行的。
host2 上 IP 地址信息
$ ip addr show eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:ec:90:7b brd ff:ff:ff:ff:ff:ff
inet 192.168.2.206/24 brd 192.168.56.255 scope global eth2
inet6 fe80::a00:27ff:feec:907b/64 scope link
valid_lft forever preferred_lft forever
此時host2上ip地址信息中不包含虛擬IP “192.168.56.105” 信息。
驗證 IP 地址 Failover
現在手動停止host1上的 keepalived 服務
$ sudo service keepalived stop
1
host1 上 IP 地址信息
$ ip addr show eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:32:83:82 brd ff:ff:ff:ff:ff:ff
inet 192.168.2.205 /24 brd 192.168.56.255 scope global eth2
inet6 fe80::a00:27ff:fe32:8382/64 scope link
valid_lft forever preferred_lft forever
此時 host1 上 ip 地址信息中不再包含虛擬IP “192.168.56.105” 信息。
host2 上 IP 地址信息
$ ip addr show eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:ec:90:7b brd ff:ff:ff:ff:ff:ff
inet 192.168.2.206/24 brd 192.168.56.255 scope global eth2
inet 192.168.2.98/32 scope global eth2
inet6 fe80::a00:27ff:feec:907b/64 scope link
valid_lft forever preferred_lft forever
現在可以看到 host2 上 ip 地址信息中已經包含虛擬IP “192.168.2.98” 信息了。
此時如果再把 host1 上的 keepalived 服務啟動,會發現虛擬IP “192.168.2.98” 又重新綁定到 host1 上了。
參考鏈接:https://blog.csdn.net/wexiaoword/java/article/details/81364488