Openstack Juno 报错:
Router 65c9b753-35fd-421c-b808-9c3c389bcb13 failed to connect to 182.150.27.112:9090.
原因分析:
路由上端口存在IP地址冲突,绑定到路由端口上的IP地址已经被其他网络设备占用,导致路由器公网出口无法连通到外网。
排查思路及方法:
1.引用环境变量及设置python字符集:
. openrc
export PYTHONIOENCODING=utf8
2.查看路由器所在的网络节点:
neutron l3-agent-list-hosting-router 65c9b753-35fd-421c-b808-9c3c389bcb13
3.登录到网络节点:
ssh node-3
4.在网络节点执行ip netns |grep 路由器ID找到路由器的namespace
ip netns |grep 65c9b753-35fd-421c-b808-9c3c389bcb13
5.执行ip netns 命令查看虚拟路由器上的接口信息,尤其需要确定qg-xxx接口的MAC地址。
ip netns exec qrouter-65c9b753-35fd-421c-b808-9c3c389bcb13 ip a
6.执行neutron router-show查看路由器的子网IDsubnet_id信息。
neutron router-show 65c9b753-35fd-421c-b808-9c3c389bcb13
7.执行neutron subnet-show 查看路由器子网所对应的公网IP段内的地址,包括起始地址、DNS和网关。
neutron subnet-show 52f22cdc-1384-49aa-970f-6633184e070b
8.查看52f22cdc-1384-49aa-970f-6633184e070b网络下的虚拟路由器,选择一个和出问题的路由器在同一个子网下的虚拟路由器。
neutron router-list |grep "52f22cdc-1384-49aa-970f-6633184e070b"
9.这里选择一个虚拟路由器qrouter-059d6475-dd0c-4980-b379-383d75d7bf15,执行ping 公网IP的命令。
ip nents exec qrouter-059d6475-dd0c-4980-b379-383d75d7bf15 ping x.x.x.x
打开另外一个窗口,执行ip netns exec qrouter-XXX arp -n查看虚拟路由器的qg-xxx接口的MAC地址。
ip netns exec qrouter-059d6475-dd0c-4980-b379-383d75d7bf15 arp -n
10.如果第5步骤查看的qg接口的MAC地址和第9步arp -n查看的MAC地址一致,证明不存在IP地址冲突的情况。否则,说明存在IP地址冲突,需要重新绑定浮动IP地址。