在生产环境中我们有些虚拟机需要同时需要接入两个二层网络,一个生产网络,一个DMZ网络,通常情况下这两个网络也是对应两个不同的物理交换机的,所以对应的计算节点也应该是两个不同的物理出口。
以上图的环境为例
compute-2上的虚拟机需要同时接入两个网络,生产网和DMZ网络,所以在对compute-2接完线后,还需要配置neutron,让br-int根对应的br-dmz桥通过ovs的patch口连接起来,同时生成对应的流表控制,修改openvswitch配置文件使得physnetX根br-dmz mapping。
需要注意的是
这里control-1接dmz的网络主要是为了dhcp 地址、metadata注入、和根三层网络的NAT。你可以通过neutron availability zone的方式把把dhcp和metadata和l3部署在网络能通的计算节点,这样就不需要控制节点接线了。
配置方法(组件为openvswitch)
这里假设compute-2的br-dmz物理出口为br-ovs-bond2
控制节点和计算节点都执行
创建ovs桥
1 | ovs-vsctl add-br br-dmz |
添加端口
1 | ovs-ovsctl add-port br-dmz br-dmz--br-ovs-bond2 |
设置端口类型为patch
1 | ovs-vsctl set interface br-dmz--br-ovs-bond2 type=patch |
设置patch口的peer端
1 | ovs-vsctl set interface br-dmz--br-ovs-bond2 options:peer=br-ovs-bond2--br-dmz |
在br-ovs-bond2上配置另外一个path口
添加端口
1 | ovs-vsctl add-port br-ovs-bond2 br-ovs-bond2--br-dmz |
设置端口类型为patch
1 | ovs-vsctl set interface br-ovs-bond2--br-dmz type=patch |
设置patch口的peer端
1 | ovs-vsctl set interface br-ovs-bond2--br-dmz options:peer=br-dmz--br-ovs-bond2 |
控制节点配置
vim /etc/neutron/plugins/ml2/ml2_conf.ini
1 | network_vlan_ranges =physnet2:1000:2000,physnet3 #在原来基础上新增个physnet3为我新增的,没有明确vlan-id范围可以不写 |
vim /etc/neutron/plugins/ml2/openvswitch_agent.ini
1 | bridge_mappings=physnet2:br-prv,physnet3:br-dmz #在原来基础上新增个physnet3:br-dmz |
重启neutron-server和neutron-openvswitch-agent
1 | systemctl restart neutron-server |
1 | systemctl restart neutron-openvswitch-agent |
计算节点配置
vim /etc/neutron/plugins/ml2/openvswitch_agent.ini
1 | bridge_mappings=physnet2:br-prv,physnet3:br-dmz #在原来基础上新增个physnet3:br-dmz |
重启neutron-openvswitch-agent
1 | systemctl restart neutron-openvswitch-agent |
创建网络,输入对应的physnet
1 | neutron net-create dmz_net --router:external=true --provider:network_type=vlan --provider:physical_network=physnet3 --provider:segmentation_id=108 |
1 | neutron subnet-create --gateway 20.52.15.254 --allocation-pool start=20.52.15.30,end=20.52.15.40 --disable-dhcp dmz_net 20.52.15.0/24 |