文章目录
概述
在之前工作中遇到的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 命令查看。
- 配置Secondary ip
# ip addr add 192.168.40.20/24 dev eth0
- 查看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
- 删除
# ip addr del 192.168.40.20/24 dev eth0
alias ip
ip alias 是由 Linux 系统的 ifconfig 命令来创建和维护的,别名IP就是在网卡设备上绑定的第二个及以上的IP
- 配置alias ip
# 使用下面两种方法都可以
# ifconfig eth0:1 192.168.40.20 netmask 255.255.255.0 up
# ifconfig eth0:1 192.168.40.20/24 up
- 查看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
- 删除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
- 让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的方式。希望以后工作中可以灵活的用上面两种方式。