zhangguanzhang's Blog

基于openstack的ecs上使用VIP

字数统计: 437阅读时长: 1 min
2018/07/18 Share

客户需要在云上使用vip,后面发现不通,查询了后发现openstack的neutron会存在ip和mac绑定的关系,可以阅读下面的链接查看说明
https://blog.codecentric.de/en/2016/11/highly-available-vips-openstack-vms-vrrp/
即如果网卡上有不是下发的ip在向外发包后包会被drop掉,需要用neutron的cli解绑ip和mac的绑定,我们这这个功能已经做在了web上了,所以可以直接解绑
1

存在绑定的关系,意味着flanneld不能使用host-gw模式,除非云厂商实现了cni-plugins

后面发现另一个客户两台机器都出现了VIP,看了下他的检查脚本是检测mysql存活,以为是脑裂造成的,后面才发现是组播被SDN禁止的原因,让用户改成单播即可,写unicast_peer就是单播,不写就是组播

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
vrrp_instance haproxy-vip {
state BACKUP
priority 101
interface eth0
virtual_router_id 47
advert_int 3

unicast_peer {
172.16.0.2
172.16.0.7
172.16.0.8
}

virtual_ipaddress {
172.16.0.5
}

track_script {
haproxy-check
}
}

calico的话不了解,但是官方yaml在openstack的虚机上能跑通的, https://docs.projectcalico.org/v3.5/usage/configuration/mtu 如果openstack底层网络是基于vxlan的话。ecs的网卡mtu是1450,正常公有云的网卡mtu是1500,ipip需要额外的20字节,所以可以更改下yaml把MTU更改为1480, 同事安全组放行下pod和宿主机的cidr的any,亲测了只放tcp和udp不行,只有放行any后,ipip模式下跨节点pod才通(协议号94,不行就试试4, https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml )。bgp模式没有玩过不清楚
calicoctl的一些操作可以看下面官方文档
https://docs.projectcalico.org/v3.7/reference/calicoctl/resources/
https://docs.projectcalico.org/reference/node/configuration

CATALOG