by 无若
这边以CentOS7+Liberty版本为例。
过去一段时间(Juno版本之前版本),OpenStack内的虚拟网络与真正的物理网络衔接主要使用openvswitch,其主要问题是在配置网桥时容易导致断开连接,另外也不好管理。
在L版本中,官方的配置文档中已经不再安装openvswitch,主要是通过flat网络方式与外部物理网络衔接,采用这种方式不会导致突然断开连接。
这里假设你应该完全安装好了各种组件。
(1)检查或编写配置
编辑/etc/neutron/plugins/ml2/ml2_conf.ini中的
[ml2_type_flat] flat_networks = public
再编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini中的
[linux_bridge] physical_interface_mappings = public:eth1
注意这里的eth1是你的网络接口名,可以用ip a查看
注意多网卡的时候,用此命令可以知道哪个网卡是连通的
例如:从这里查出eth0是UP的。
$ip a eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master brq070ed0ca-92 state UP qlen 1000 ...
(2)通过dashboard来配置flat网络
在 “管理员” 条目下选择 “网络”,再点击 “创建网络” ,在里面要注意选择 “Flat” ,物理网络为 “public” (注意这里与/etc/neutron/plugins/ml2/ml2_conf.ini内的[ml2_type_flat]的flat_networks对应),然后再把 “共享的” 和 “外部网络” 勾选起来,之后点击 “创建网络”。
之后,在 EXT_01 下 增加子网,注意此时需要在 “项目” 下的 “网络” 中增加子网。
子网配置,这里 192.168.29.0/24 为真实的物理网络:
配置子网详情,注意这里的 192.168.29.195~192.168.29.197 为真实物理网络中的一段:
创建成功后,创建 路由器 与 EXT_01 关联
查看网络拓扑,可以看到路由器在真实物理网络中的IP地址为 192.168.29.196 :
验证:使用ip netns命令找到这个虚拟路由器之后,用这个虚拟路由器ping真实物理网络中的网关(这里是192.168.29.254),ping通即证明OpenStack内部虚拟网络与真实物理网络衔接成功!