高可用架构中 VIP/ Secondary IP/ alias IP

概述

在之前工作中遇到的HA的case,大部分还是通过在Linux上设置Secondary IP或者alias ip来向外暴露VIP(virtual IP)的方式提供北向的HA功能。这样保证某一个server down掉之后,还可以通过VIP来访问服务。前提条件是要有某种机制可以发现某个server down掉,并在另一台server上配置VIP。如下图。这里VIP可以用seconday ip或者alias ip 来实现。
在这里插入图片描述

Secondary ip

ip addr add 创建的辅助IP,不能通过ifconfig查看,但是通过ifconfig创建的别名IP却可以在ip addr show 命令查看。

  1. 配置Secondary ip
# ip addr add 192.168.40.20/24 dev eth0
  1. 查看VIP别名的方法
# ip addr
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
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:2c:5c:43 brd ff:ff:ff:ff:ff:ff
    inet 192.168.40.10/24 brd 192.168.40.255 scope global eth0
    inet 192.168.40.20/24 scope global secondary eth0
    inet6 fe80::20c:29ff:fe2c:5c43/64 scope link 
       valid_lft forever preferred_lft forever
  1. 删除
# ip addr del 192.168.40.20/24 dev eth0

alias ip

ip alias 是由 Linux 系统的 ifconfig 命令来创建和维护的,别名IP就是在网卡设备上绑定的第二个及以上的IP

  1. 配置alias ip
# 使用下面两种方法都可以
# ifconfig eth0:1 192.168.40.20 netmask 255.255.255.0 up
# ifconfig eth0:1 192.168.40.20/24 up 
  1. 查看alias ip
# 使用别名的方法配置的VIP可以通过ifconfig查看,也可以通过ip addr 查看
# ifconfig eth0:1
eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:2C:5C:43  
          inet addr:192.168.40.20  Bcast:192.168.40.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
  1. 删除alias ip
# 使用下面两种方法都可以
[root@crazy-acong ~]# ifconfig eth0:1 192.168.40.20 netmask 255.255.255.0 down
[root@crazy-acong ~]# ifconfig eth0:1 down

  1. 让alias ip永久生效
# 写入到网卡配置文件可以让别名IP永久生效,名字可以为ifcfg-eth0:x,x为0-255的任意数字,IP等内容格式和ifcfg-eth0一致,或者将命令写入/etc/rc.local

容器网络的应用

但其实secondary ip/alias ip的作用不仅仅如此,在容器领域中,也用这种方式来实现k8s 容器网络。AWS的vpc cni方案中就用到了secondary ip。具体原理是:通过弹性网卡为node节点绑定一个网卡,eth2,每创建一个pod就会创建一个绑定到eth2的secondary ip,这样就可以通过依赖的弹性网卡来实现k8s 容器网络。具体参考:https://github.com/aws/amazon-vpc-cni-k8s/blob/master/docs/cni-proposal.md

总结

以上两种方式都用来配置VIP,知名的高可用软件:heartbeat是用alias ip的方式,从heartbeat3开始,是用secondary ip,keepalived是用secondary ip的方式。希望以后工作中可以灵活的用上面两种方式。

猜你喜欢

转载自blog.csdn.net/u011563903/article/details/89463495
IP