喵♂呜 的博客

一个刚毕业就当爹的程序猿 正在迷雾中寻找道路...

Linux下虚拟IP(Virtual Internet Protocol)配置

最近做数据库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会自动跳转到备机

欢迎关注我的其它发布渠道