关于ECS 无法使用VIP的问题 - SDN , openflow
背景
给ECS虚拟机配置VIP,无法通讯,原因?
HOST A
[root@pg11 ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:16:3e:0a:5c:f1 brd ff:ff:ff:ff:ff:ff
inet 172.17.20.29/20 brd 172.17.31.255 scope global dynamic eth0
valid_lft 313883835sec preferred_lft 313883835sec
HOST B
postgres@pg11-> ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:16:3e:12:2f:48 brd ff:ff:ff:ff:ff:ff
inet 172.17.20.30/20 brd 172.17.31.255 scope global dynamic eth0
valid_lft 313883847sec preferred_lft 313883847sec
互相在同一个VPC(vswitch , hub)
相互可以访问
a ping b
ping 172.17.20.29
PING 172.17.20.29 (172.17.20.29) 56(84) bytes of data.
64 bytes from 172.17.20.29: icmp_seq=1 ttl=64 time=0.156 ms
64 bytes from 172.17.20.29: icmp_seq=2 ttl=64 time=0.102 ms
b ping a
ping 172.17.20.30
PING 172.17.20.30 (172.17.20.30) 56(84) bytes of data.
64 bytes from 172.17.20.30: icmp_seq=1 ttl=64 time=0.166 ms
64 bytes from 172.17.20.30: icmp_seq=2 ttl=64 time=0.112 ms
配置VIP,无法跨机访问
host a
[root@pg11 ~]# ip addr add 172.17.20.39/20 brd + dev eth0 label eth0:1
[root@pg11 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.20.29 netmask 255.255.240.0 broadcast 172.17.31.255
ether 00:16:3e:0a:5c:f1 txqueuelen 1000 (Ethernet)
RX packets 22221492822 bytes 33552649055304 (30.5 TiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 631860042 bytes 42907936724 (39.9 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.20.39 netmask 255.255.240.0 broadcast 172.17.31.255
ether 00:16:3e:0a:5c:f1 txqueuelen 1000 (Ethernet)
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1 (Local Loopback)
RX packets 959417 bytes 111291935 (106.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 959417 bytes 111291935 (106.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@pg11 ~]# ping 172.17.20.39
PING 172.17.20.39 (172.17.20.39) 56(84) bytes of data.
64 bytes from 172.17.20.39: icmp_seq=1 ttl=64 time=0.012 ms
64 bytes from 172.17.20.39: icmp_seq=2 ttl=64 time=0.008 ms
host b
[root@pg11 ~]# ping 172.17.20.39
PING 172.17.20.39 (172.17.20.39) 56(84) bytes of data.
无防火墙
[root@pg11 ~]# iptables -L -v -n
Chain INPUT (policy ACCEPT 8 packets, 528 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 6 packets, 1000 bytes)
pkts bytes target prot opt in out source destination
原因
宿主机通过openflow进行流控,未注册的vm+ip可以被拒绝。具体可参考SDN文档。
删除VIP
[root@pg11 ~]# ip addr del 172.17.20.39/20 brd + dev eth0 label eth0:1
[root@pg11 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.20.29 netmask 255.255.240.0 broadcast 172.17.31.255
ether 00:16:3e:0a:5c:f1 txqueuelen 1000 (Ethernet)
RX packets 22221492889 bytes 33552649060975 (30.5 TiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 631860095 bytes 42907943783 (39.9 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1 (Local Loopback)
RX packets 959424 bytes 111292619 (106.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 959424 bytes 111292619 (106.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
参考
A Virtual Switch Platform for Host SDN in the Public Cloud
https://www.microsoft.com/en-us/research/wp-content/uploads/2017/09/login_fall17_02_firestone.pdf
https://www.opennetworking.org/
https://www.cisco.com/c/en/us/about/press/internet-protocol-journal/back-issues/table-contents-59/161-sdn.html
https://en.wikipedia.org/wiki/OpenFlow