必须了解的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私有云布署实践12.2 网络Neutron-controller节点配置(办公网环境)