最近做数据库HA(热备份)的时候需要用到虚拟IP 之前只在路由器上配过 这里演示如何用Linux实现
虽然听起来很高大上 实际上配置起来非常简单 这里用CentOs7作为演示系统
配置的目的是 172.30.16.6
172.30.16.7
两台主机 共用IP 172.30.16.10
注: 但同一时间只能有一台使用
- 网卡原地址为
172.30.16.6
现在需要配置一个172.30.16.10
的虚拟IP - 查看网卡接口名称
ip a
可以看到除了环回地址之外就是一个enp2s0
注意: 不同机器这个接口名称是不同的 一般默认是eth0
1
2
3
4
5
6
7
8
9
10
11
12
13[root@localhost ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 1c:1b:0d:02:20:1b brd ff:ff:ff:ff:ff:ff
inet 172.30.16.6/24 brd 172.30.16.255 scope global enp2s0
valid_lft forever preferred_lft forever
inet6 fe80::1e1b:dff:fe02:201b/64 scope link
valid_lft forever preferred_lft forever - 开启
17.6
网卡的虚拟IP 输入命令ifconfig enp2s0:0 172.30.16.10 netmask 255.255.255.0 up
- 我们到
17.7
上 Ping 一下172.30.16.10
可以看到很快就 Ping 通了1
2
3
4
5
6
7
8[root@localhost ~]$ ping 172.30.16.10
PING 172.30.16.10 (172.30.16.10) 56(84) bytes of data.
64 bytes from 172.30.16.10: icmp_seq=1 ttl=64 time=0.378 ms
64 bytes from 172.30.16.10: icmp_seq=2 ttl=64 time=0.234 ms
^C
--- 172.30.16.10 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.234/0.306/0.378/0.072 ms 17.7
上的配置同理 但是开启之前需要在17.6
上输入ifconfig enp2s0:0 down
关闭虚拟IP- 生产环境中 先给主机配置虚拟IP 然后给备机配置虚拟IP 主机关机或者关闭接口之后 访问虚拟IP会自动跳转到备机