必须了解的4种OpenStack Neutron网络(上)

Posted 开源云中文社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了必须了解的4种OpenStack Neutron网络(上)相关的知识,希望对你有一定的参考价值。

如果你的OpenStack托管虚拟实例需要网络连接,你将不得不创建一个网络。 有多种网络可以选择,为了做出正确的选择,你需要了解至少两个非常重要的网络属性:“路由器:外部”和“共享”。除非你知道这些属性及其组合的意义,否则很难做出最佳的选择。

在本文中,我们将介绍这些属性所对应的四种网络类型以及如何配置它们,并简要介绍一些典型用例。其中一些适用于租户,一些仅适用于管理员。通过KVM托管的Red Hat或RDO all-in-one OpenStack实例来举例。这些内容已经在Red Hat OpenStack Platform 8、9、10以及RDO Mitaka和Newton上进行了测试。


四种类型

下表概述了要创建的网络类型及其名称。



路由器-外部 共享 网络类型 名称 描述
false false vxlan private1-demo 典型的租户网络,只能由租户成员使用。通常是overlay(vxlan、gre)。
false true vxlan admin1-shared 这可以由可用RBAC的多个租户共享。通常是overlay(vxlan、gre)。
true false flat external1 典型的外部网络,范围是所有租户。只能由管理员创建。租户连接他们的路由器进行外部访问。通常是“flat”或“vlan”网络。 
true true flat external2-shared 范围是所有租户。只能由管理员创建。租户可以直接连接。通常被称为“provider“”网络,是“flat”或“vlan”网络。


逻辑网络拓扑



OpenStack all-in-one构建

一个一体化的实例可以方便地了解不需要单独角色的新概念。故障排除和配置大大简化,这就是我们将要用于示例的。 如果你订阅了Red Hat,你可以按照这些说明(https://access.redhat.com/articles/1127153?intcmp=7016000000127cYAAQ)进行操作。你还可以注册60天的Red Hat OpenStack Platform评估。

对于RDO实例,请点击此处(https://www.rdoproject.org/install/quickstart/?intcmp=7016000000127cYAAQ)查看快速安装指南,并确保在此页面上(https://www.rdoproject.org/documentation/repositories/?intcmp=7016000000127cYAAQ)启用其他存储库。

当packstack构建完成后,以root身份登录,并运行以下命令来验证OpenStack部署是否正常工作:


. ./keystonerc_admin
openstack catalog list
neutron agent-list
nova service-list
nova boot --flavor m1.tiny --image cirros --nic net-name=private admin01


一旦正确地构建了OpenStack,就可以删除刚刚与“公有”和“私有”网络(及其子网)一起创建的虚拟实例,以及由packstack安装创建的“router1”。


KVM主机配置

此示例的KVM主机将有三个网络:



Linux桥名 KVM 网络名, VM nic 目的
virbr0 default, eth0 直接访问OpenStack虚拟主机。
virbr1 external1, eth1 可通过SNAT或浮动IP实现外部实例访问。
virbr2 external2, eth2 直接外部访问。


你的KVM主机可能已经在eth0上附带了一个使用bridge virbr0的默认网络。 我们将定义并创建另外两个外部网络。确保以root用户身份执行此操作:


cat > /tmp/external1.xml << EOF
<network>
 <name>external1</name>
 <forward mode='nat'>
   <nat>
     <port start='1024' end='65535'/>
   </nat>
 </forward>
 <bridge name='virbr1' stp='on' delay='0'/>
 <mac address='52:54:00:73:a0:8e'/>
 <ip address='172.16.0.1' netmask='255.255.255.192'>
 </ip>
</network>
EOF
 
cat > /tmp/external2.xml << EOF
<network>
 <name>external2</name>
 <forward mode='nat'>
   <nat>
     <port start='1024' end='65535'/>
   </nat>
 </forward>
 <bridge name='virbr2' stp='on' delay='0'/>
 <mac address='52:54:00:61:98:8c'/>
 <ip address='172.16.0.65' netmask='255.255.255.192'>
 </ip>
</network>
EOF


现在创建这些网络并启动它们:


virsh net-define /tmp/external1.xml; virsh net-define /tmp/external2.xml
virsh net-autostart external1; virsh net-autostart external2
virsh net-start external1; virsh net-start external2


现在,将VNIC添加到每个外部网络的OpenStack all-in-one实例。 从KVM主机执行此操作:


dom=<your Red Hat Enterprise Linux or RDO instance name from ‘virsh list’>
virsh attach-interface --domain $dom --type network --source external1 --model virtio --config --live
virsh attach-interface --domain $dom --type network --source external2 --model virtio --config --live   


验证KVM主机


$ virsh net-list
Name              State   Autostart Persistent
----------------------------------------------------------
default           active yes        yes
external1         active yes        yes
external2         active yes        yes
 
$ brctl show
bridge name    bridge id    STP enabled    interfaces
virbr0    8000.525400ce5983    yes    virbr0-nic
virbr1    8000.52540073a08e    yes    virbr1-nic
virbr2    8000.52540061988c    yes    virbr2-nic
 
$ route
Kernel IP routing table
Destination  Gateway      Genmask      Flags Metric Ref Use Iface
172.16.0.0   0.0.0.0      255.255.255.192 U 0   0     0 virbr1
172.16.0.64  0.0.0.0      255.255.255.192 U 0   0     0 virbr2
192.168.122.0  0.0.0.0            255.255.255.0     U      0          0          0 virbr0


OpenStack all-in-one配置

我们需要对packstack提供的Neutron配置进行一些更改,以删除单个Linux Bridge“br-ex”,并重新添加新桥br-ex和br-ex2以及将其联接到的flat网络:


yum install crudini -y
crudini --set /etc/neutron/l3_agent.ini DEFAULT external_network_bridge #blank this
crudini --set /etc/neutron/l3_agent.ini DEFAULT gateway_external_network_id  #blank this
crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 type_drivers  vxlan,flat
crudini --set /etc/neutron/plugins/ml2/ml2_conf.ini ml2 network_vlan_ranges physnet1,physnet2
crudini --set /etc/neutron/plugins/ml2/openvswitch_agent.ini ovs bridge_mappings physnet1:br-ex,physnet2:br-ex2


请注意,使用“flat“网络时,由你来决定network_vlan_ranges的名称。当创建外部网络时,这些将是“--provider:physical_network”的名称。外部桥名(br-ex *)也由你来选。

现在创建Open vSwitch的接口配置:


cat >  /etc/sysconfig/network-scripts/ifcfg-br-ex << EOF
DEVICE=br-ex
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
PEERDNS=no
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=172.16.0.1
NETMASK=255.255.255.192
EOF
 
cat >  /etc/sysconfig/network-scripts/ifcfg-eth1 << EOF
DEVICE=eth1
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
PEERDNS=no
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex
BOOTPROTO=none
EOF
 
cat >  /etc/sysconfig/network-scripts/ifcfg-br-ex2 << EOF
DEVICE=br-ex2
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
PEERDNS=no
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=172.16.0.65
NETMASK=255.255.255.192
EOF
 
cat >  /etc/sysconfig/network-scripts/ifcfg-eth2 << EOF
DEVICE=eth2
ONBOOT=yes
HOTPLUG=no
NM_CONTROLLED=no
PEERDNS=no
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex2
BOOTPROTO=none
EOF


验证Open vSwitch外部桥

完成以上配置步骤后,你需要重启虚拟主机。重启后,创建的桥应该如下所示:


ovs-vsctl list-ports br-ex
 
eth1
phy-br-ex
 
ovs-vsctl list-ports br-ex2
 
eth2
phy-br-ex2




编译:Jonathan Zhang

来源:https://opensource.com/article/17/4/openstack-neutron-networks


投稿邮箱:openstackcn@sina.cn


以上是关于必须了解的4种OpenStack Neutron网络(上)的主要内容,如果未能解决你的问题,请参考以下文章

带着问题了解Openstack Neutron安全组

中小企业openstack私有云布署实践12.2 网络Neutron-controller节点配置(办公网环境)

在OpenStack里怎样配置Neutron,让虚拟机访问外网

openstack桥接-内外网设置

OpenStack——Neutron组件

OpenStack——Neutron组件