5.场景3:高可用性使用分布式虚拟路由(DVR)
这个场景描述了使用ML2插件和Open vSwitch的OpenStack网络服务的高可用性分布式虚拟路由(DVR)实现。示例配置创建了一个Flat外部网络和一个VXLAN项目(租户)网络。然而,这种配置也支持VLAN外部网络、VLAN项目网络和GRE项目网络。
DVR架构通过直接连接到计算节点上的外部网络来增强遗留体系结构。
对于具有浮动IP地址的实例,项目和外部网络之间的路由完全驻留在计算节点上,以消除遗留网络节点的单点故障和性能问题。路由也完全驻留在计算节点上,这些节点使用相同的分布式虚拟路由器上的项目网络来固定或浮动IP地址。然而,具有固定IP地址的实例仍然依赖于项目和外部网络之间的路由和SNAT服务的网络节点。
注意:在Juno版本中,DVR支持VXLAN和GRE项目网络。在Kilo版本中,DVR增加了对VLAN项目网络的支持。所有的版本支持Flat和VLAN外部网络。
一、先决条件
这些先决条件定义了部署此场景所需的最小物理基础设施和立即的OpenStack服务依赖关系。
例如,网络服务直接依赖于身份服务,而计算服务直接依赖于网络服务。而像镜像服务没有依赖性的服务,是因为网络服务没有直接依赖它。
然而,计算服务依赖于镜像服务来启动一个实例。本场景中的示例配置假定了网络服务组件的基本配置知识。
基础设施
一个具有网络管理接口的控制器节点。
一个具有四个网络接口的网络节点:管理、项目隧道网络、VLAN项目网络和外部(通常是Internet)。Open vSwitch网桥br-vlan必须在VLAN接口上包含一个端口,而Open vSwitch网桥br- ex必须在外部接口上包含一个端口。
至少有两个具有四个网络接口的计算节点:管理、项目隧道网络、项目VLAN网络和外部(通常是Internet)。Open vSwitch网桥br-vlan必须在VLAN接口上包含一个端口,而Open vSwitch网桥br- ex必须在外部接口上包含一个端口。
在示例配置中,管理网络使用10.0.0 / 24,隧道网络使用10.0.1.0 / 24,外部网络使用203.0.113.0 / 24。VLAN网络不需要IP地址范围,因为它只处理第二层连接。
硬件要求:
网络布局
服务布局
注意:对于VLAN外部和项目网络,物理网络基础设施必须支持VLAN标记。为了获得VXLAN项目网络的最佳性能,网络基础设施应该支持巨型帧。
控制节点的OpenStack服务
- 在neutron.conf文件中具有数据库服务器的合适配置
- 在neutron.conf文件中具有消息队列服务的合适配置。
在neutron.conf文件中具有openstack keystone服务的合适配置
在nova.conf文件中具有openstack计算 控制/管理服务的合适配置去使用neutron
neutron服务器服务、ML2插件和任何依赖关系。
网络节点的Openstack服务
- 在neutron.conf文件中具有openstack keystone服务的合适配置
Open vSwitch服务、ML2插件、打开的vSwitch代理、L3代理、DHCP代理、元数据代理和任何依赖关系。
计算节点的Openstack服务
- 在neutron.conf文件中具有openstack keystone服务的合适配置
- 在nova.conf文件中具有openstack计算 控制/管理服务的合适配置去使用neutron
- Open vSwitch服务、ML2插件、打开的vSwitch代理、L3代理、元数据代理和任何依赖项。
体系结构
一般架构
注意:“北南”一词通常定义了网络流量,即在一个实例和外部网络(通常是因特网)之间传输的网络流量,术语“东西”通常定义了在实例之间传输的网络流量。
网络节点包含以下网络组件:
1.Open vSwitch代理管理虚拟交换机之间的连接,以及通过虚拟端口与其他网络组件(如名称空间、Linux网桥和底层接口)进行交互。
2.管理qdhcp名称空间的DHCP代理。dhcp名称空间为使用项目网络的实例提供dhcp服务。
3.L3代理管理qrouter和snat名称空间。
- 对于在遗留路由器上使用项目网络的实例,qrouter名称空间路由南北和东西网络流量,并执行DNAT / SNAT,类似于遗留场景。
它们还在实例和元数据代理之间路由元数据通信。- 对于在分布式路由器上使用项目网络的固定IP地址的实例,snat命名空间为南北网络流量执行snat。
4.元数据代理在遗留路由器上使用项目网络处理实例的元数据操作。
网络节点组件回顾
网络节点组件连接
计算节点包含以下网络组件:
1.Open vSwitch代理管理虚拟交换机之间的连接,以及通过虚拟端口与其他网络组件(如名称空间、Linux网桥和底层接口)进行交互。
2.L3代理管理qrouter和fip名称空间。
- 对于在分布式路由器上使用项目网络的浮动IP地址的实例,fip命名空间路由南北向网络流量并执行DNAT / SNAT。
- 对于有固定或浮动IP地址的实例,在分布式路由器上使用项目网络,qrouter命名空间路由东西向流量。
3.元数据代理在分布式路由器上使用项目网络来处理实例的元数据操作。
4.Linux网桥处理安全组
注意:由于Open vSwitch和iptables的限制,网络服务使用Linux网桥来管理实例的安全组。
计算节点组件回顾
计算节点组件连接
二、Packet flow
对于在分布式路由器上使用项目网络固定IP地址的实例,网络节点在项目和外部网络之间传输南北网络流量。
外部网络
- 网络203.0.113.0/24
IP地址分配从203.0.113.101到203.0.113.200
带有203.0.113.101的项目网络路由器接口TR
项目网络SNAT接口192.168.1.2与MAC地址TN
项目网络
- 网络192.168.1.0/24
- 带有192.168.1.1与MAC地址TG的网关
计算节点1:
- 带有192.168.1.11与MAC地址I1的实例1
DVR MAC地址D1
实例1驻留在计算节点1上,并使用一个项目网络。
实例向外部网络的主机发送一个包。
注意:这个场景支持VLAN和GRE / VXLAN项目网络。但是,数据包流只考虑使用VXLAN项目网络来简化的一个实例。
以下步骤涉及计算节点1:
1.实例1的tap接口(1)将包转发到Linux网桥qbr。该包包含目标MAC地址TG,因为目的地驻留在另一个网络上。
2.安全组规则(2)在Linux网桥qbr上处理数据包的状态跟踪。
3.Linux网桥qbr将数据包转发到Open vSwitch集成网桥br-int。
4.Open vSwitch集成网桥br-int修该改包含项目网络1的内部标记的数据包。
5.在分布式路由器名称空间qrouter中,Open vSwitch集成网桥将数据包(3)转发到项目网络1网关TG接口qr。
6.分布式路由器qrouter名称空间解决了在SNAT命名空间SNAT上的sg接口(4)的项目网络1 SNAT接口MAC地址TN,并将数据包转发到Open vSwitch集成网桥br-int。
7.Open vSwitch集成网桥br-int将数据包转发到Open vSwitch tunnel网桥br-tun上。
8.Open vSwitch tunnel网桥br-tun用D1取代了信息包源MAC地址I1。
9.Open vSwitchtunnel网桥br-tun将包封装在VXLAN隧道中,其中包含项目网络1的标签。
10.Open vSwitchtunnel网桥br-tun通过隧道接口将数据包转发到网络节点。
以下步骤涉及网络节点:
1.tunnel接口将数据包转发到Open vSwitch tunnel 网桥br-tun。
2.Open vSwitch tunnel网桥br-tun打开包,并为项目网络1添加内部标签。
3.Open vSwitchtunnel网桥br-tun将包转发到Open vSwitch集成网桥br-int。
4.Open vSwitch集成网桥br-int用TG替换了包源MAC地址D1。
5.Open vSwitch集成网桥br-int将包转发到SNAT命名空间SNAT中的sg接口(4)。
6.iptables服务(5)在qg接口上使用project network 1路由器接口IP地址TR在包上执行SNAT。
7.qg接口将包转发给Open vSwitch外部网桥br-ex。
8.Open vSwitch外部网桥br- ex通过外部接口将包转发到外部网络。
返回的流量也遵循类似的步骤。
有固定ip地址的实例的南北网络流量流向
案例2:具有浮动IP地址的实例的南北流量
对于使用分布式路由器的IP地址的实例,计算节点包含了实例路由项目和外部网络之间的南北网络通信,避开了网络节点。
考虑到这种情况的复杂性,下面的案例涵盖了从外部网络到实例的网络流量以及从实例到外部网络的流量。
外部网络
- 网络203.0.113./
- 带有MAC地址EG的网关203.0.113.,
- 浮动IP范围203.0.113.101至203.0.113.
- 带有203.0.113.的项目网络路由器接口 TR
项目网络
- 网络192.168.1./
- 带有MAC地址TG的网关192.168.1.1
计算节点
- 带有MAC地址I1和浮动IP地址为203.0.113. F1的实例1 192.168.1.11
- DVR MAC地址D1
- DVR内部IP地址DA1和DA2
实例1驻留在计算节点1上,并使用一个项目网络。
实例1向外部网络的主机发送数据包。
请注意:这个场景支持VLAN和GRE / VXLAN项目网络。但是,数据包流只考虑使用VXLAN项目网络来简化的一个实例。
下面的步骤涉及到从外部网络到计算节点1的实例的数据包:
1.外部接口将包转发给Open vSwitch外部网桥br-ex。该包包含目标IP地址F1。
2.Open vSwitch外部网桥br-ex将数据包转发到浮动IP名称空间fip中的fg接口(1)。fg接口对实例浮动IP地址F1的任何ARP请求作出响应。
3.浮动IP名称空间fip将数据包(2)路由到使用DVR内部IP地址DA1和DA2的分布式路由器名称空间qrouter。fpr接口(3)包含DVR内部IP地址DA1,rfp接口(4)包含DVR内部IP地址DA2。
4.浮动IP名称空间fip将数据包转发到分布式路由器名称空间qrouter中的rfp接口(5)。rfp接口还包含实例浮动IP地址F1。
5.分布式路由器名称空间qrouter中的iptables服务(6)使用目标IP地址在包上执行DNAT。qr接口(7)包含项目网络网关IP地址TG。
6.分布式路由器名称空间qrouter将数据包转发到Open vSwitch集成网桥br-int。
7.Open vSwitch集成网桥br-int将包转发到Linux网桥qbr。
8.安全组规则(8)在Linux网桥qbr上处理数据包的防火墙和状态跟踪。
9.Linux网桥qbr将包转发到实例tap接口(9)。
下面的步骤涉及到从计算节点1的实例到外部网络的数据包出站:
1.实例1的tap接口(9)将包转发到Linux网桥qbr。该包包含目标MAC地址TG1,因为目的地驻留在另一个网络上。
2.安全组规则(8)在Linux网桥qbr上处理数据包的状态跟踪。
3.Linux网桥qbr将数据包转发到Open vSwitch集成网桥br-int。
4.在分布式路由器名称空间qrouter中,Open vSwitch集成网桥br-int将包转发到qr接口(7)。qr接口包含了TG项目网络网关IP地址。
5.iptables服务(6)使用rfp接口(5)作为源IP地址在包上执行SNAT。rfp接口包含实例浮动IP地址F1。
6.分布式路由器名称空间qrouter(2)使用DVR内部IP地址DA1和DA2将数据包路由到浮动IP名称空间fip。rfp接口(4)包含DVR内部IP地址DA2,fpr接口(3)包含DVR内部IP地址DA1。
7.在浮动IP名称空间fip中,fg接口(1)将包转发给Open vSwitch外部网桥br-ex。fg接口包含项目路由器外部IP地址TE。
8.OpenvSwitch外部桥br-ex通过外部接口将包转发到外部网络。
有固定ip地址的实例的南北网络流量流向
案例3:在同一路由器上使用不同网络的实例的东/西向流量
对于用分布式路由器的项目网络使用固定或浮动IP地址的实例,计算节点将在同一分布式虚拟路由器的项目网络中,连接的项目网络之间的东西网络传输,避开网络节点。
项目网络1
- 网络192.168.1./
- 带有MAC地址TG1的网关192.168.1.1
项目网络2
- 网络192.168.2./
- 带有MAC地址TG2的网关192.168.2.1
计算节点1
- 带有MAC地址I1的实例1 192.168..11
- DVR MAC地址D1
计算节点2
- 带有MAC地址为I2的实例2 192.168.2.11
- DVR MAC地址D2
实例1驻留在计算节点1上,并使用project network 1。
实例2驻留在计算节点2上,并使用project network 2。
两个项目网络都位于相同的分布式虚拟路由器上。
实例1发送一个包到实例2。
注意:这个场景支持VLAN和GRE / VXLAN项目网络。但是,数据包流只考虑使用VXLAN项目网络来简化的一个实例。
以下步骤涉及计算节点1:
1.实例1的tap接口(1)将包转发到Linux网桥qbr。该包包含目标MAC地址TG1,因为目的地驻留在另一个网络上。
2.安全组规则(2)在Linux网桥qbr上处理数据包的状态跟踪。
3.Linux网桥qbr将数据包转发到Open vSwitch集成网桥br-int。
4.在分布式路由器名称空间qrouter中,Open vSwitch集成网桥br-int将包转发到项目网络1接口(3)。
5.分布式路由器名称空间qrouter将数据包路由到项目网络2。
6.在分布式路由器名称空间qrouter名称空间中,项目网络2接口(4)将包转发给Open vSwitch集成网桥br-int。
7.Open vSwitch集成网桥br-int修改包含项目网络2的内部标记的数据包
8.Open vSwitch集成网桥br-int将数据包转发到Open vSwitchtunnel网桥br-tun上。
9.Open vSwitchtunnel网桥br-tun用D1取代了信息包源MAC地址I1。
10.Open vSwitch tunnel网桥br-tun将包封装在VXLAN隧道中,其中包含项目网络2的标签。
11.Open vSwitch隧道桥br-tun通过隧道接口将包转发给计算节点2。
以下步骤涉及计算节点2:
1.tunnel接口将数据包转发到Open vSwitch tunnel网桥br-tun。
2.Open vSwitch tunnel网桥br-tun打开包。
3.Open vSwitch tunnel网桥br-tun将包转发到Open vSwitch集成网桥br-int。
4.Open vSwitch集成网桥br-int用TG2替换了包源MAC地址D1。
5.Open vSwitch集成网桥br-int将包转发到Linux网桥qbr。
6.安全组规则(7)在Linux桥qbr上处理数据包的防火墙和状态跟踪。
7.Linux桥qbr将包转发给实例2 tap接口(8)。
注意:从计算节点1到达的数据包不会在计算节点2的qrouter名称空间中遍历项目网络接口(5、6)。然而,返回的流量会遍历它们。
在同一路由器上使用不同网络的实例的东/西向网络流量
示例配置
使用下面的示例配置作为在您的环境中部署该场景的模板。
注意:这个配置主要支持Kilo版本
控制节点
1.配置常见的选项。编辑/etc/neutron/neutron.配置文件:
- [DEFAULT]
- verbose = True
- router_distributed = True
- core_plugin = ml2
- service_plugins = router
- allow_overlapping_ips = True
请注意:
- 配置router_distributed = True选项为所有用户创建分布式路由器。没有它,只有特权用户才能在路由器创建过程中使用分布式的真选项来创建分布式路由器。
2.配置ML2插件。编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件:
- [ml2]
- type_drivers = flat,vlan,gre,vxlan
- tenant_network_types = vlan,gre,vxlan
- mechanism_drivers = openvswitch,l2population
- [ml2_type_flat]
- flat_networks = external
- [ml2_type_vlan]
- network_vlan_ranges = external,vlan:MIN_VLAN_ID:MAX_VLAN_ID
- [ml2_type_gre]
- tunnel_id_ranges = MIN_GRE_ID:MAX_GRE_ID
- [ml2_type_vxlan]
- vni_ranges = MIN_VXLAN_ID:MAX_VXLAN_ID
- vxlan_group = 239.1.1.1
- [securitygroup]
- firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
- enable_security_group = True
- enable_ipset = True
替换MIN_VLAN_ID、MAX_VLAN_ID、MIN_GRE_ID、MAX_GRE_ID、MIN_VXLAN_ID和MAX_VXLAN_ID和VLAN、GRE和VXLAN ID最小值,以及适合您的环境的最大值。
请注意
- tenant_network_types选项中的第一个值在常规用户创建网络时成为默认项目网络类型。
network_vlan_range选项中的外部值缺少VLAN ID范围,以支持管理用户使用任意VLAN ID。
3.启动服务
网络节点
1.配置内核以启用包转发和禁用反向路径过滤。编辑/etc/sysctl.配置文件:
- net.ipv4.ip_forward=1
- net.ipv4.conf.default.rp_filter=0
- net.ipv4.conf.all.rp_filter=
2.加载新内核配置:
- $ sysctl -p
3.配置常见的选项。编辑/etc/neutron/neutron.配置文件:
- [DEFAULT]
- verbose = True
4.配置Open vSwitch代理。编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件:
- [ovs]
- local_ip = TUNNEL_INTERFACE_IP_ADDRESS
- bridge_mappings = vlan:br-vlan,external:br-ex
- [agent]
- l2_population = True
- tunnel_types = gre,vxlan
- enable_distributed_routing = True
- arp_responder = True
- [securitygroup]
- firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
- enable_security_group = True
- enable_ipset = True
使用处理GRE / VXLAN项目网络的接口的IP地址替换TUNNEL_INTERFACE_IP_ADDRESS。
5.配置L3代理。编辑/etc/neutron/l3_agent.ini文件:
- [DEFAULT]
- verbose = True
- interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
- use_namespaces = True
- external_network_bridge =
- router_delete_namespaces = True
- agent_mode = dvr_snat
注意:external_network_bridge选项故意不包含任何值。
6.配置DHCP代理。编辑/etc/neutron/dhcp_agent.ini文件:
- [DEFAULT]
- verbose = True
- interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
- dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
- use_namespaces = True
- dhcp_delete_namespaces = True
7.(可选)为VXLAN项目网络减少MTU。
- 1.编辑/etc/neutron/dhcp_agent。ini文件:
- [DEFAULT]
- dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf
- 2.编辑/etc/neutron/dnsmasq-neutron.conf文件:
- dhcp-option-force=26,
8.配置元数据代理。编辑/etc/neutron/metadata_agent.ini文件:
- [DEFAULT]
- verbose = True
- nova_metadata_ip = controller
- metadata_proxy_shared_secret = METADATA_SECRET
用合适的环境值替换METADATA_SECRET。
9.开始以下服务:
- Open vSwitch
- Open vSwitch agent
- L3 agent
- DHCP agent
- Metadata agent
计算节点
1.配置内核以启用网桥上的iptables并禁用反向路径过滤。编辑/etc/sysctl.配置文件:
- net.ipv4.conf.default.rp_filter=0
- net.ipv4.conf.all.rp_filter=0
- net.bridge.bridge-nf-call-iptables=1
- net.bridge.bridge-nf-call-ip6tables=
2.加载新内核配置:
- $ sysctl -p
3.配置常见的选项。编辑/etc/neutron/neutron.配置文件:
- [DEFAULT]
- verbose = True
4.配置Open vSwitch代理。编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件:
- [ovs]
- local_ip = TUNNEL_INTERFACE_IP_ADDRESS
- bridge_mappings = vlan:br-vlan,external:br-ex
- [agent]
- l2_population = True
- tunnel_types = gre,vxlan
- enable_distributed_routing = True
- arp_responder = True
- [securitygroup]
- firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
- enable_security_group = True
- enable_ipset = True
使用处理GRE / VXLAN项目网络的接口的IP地址替换TUNNEL_INTERFACE_IP_ADDRESS。
5.配置L3代理。编辑/etc/neutron/l3_agent.ini文件:
- [DEFAULT]
- verbose = True
- interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
- use_namespaces = True
- external_network_bridge =
- router_delete_namespaces = True
- agent_mode = dvr
注意:external_network_bridge选项故意不包含任何值。
6.配置元数据代理。编辑/etc/neutron/metadata_agent.ini文件:
- [DEFAULT]
- verbose = True
- nova_metadata_ip = controller
- metadata_proxy_shared_secret = METADATA_SECRET
用合适的环境值替换METADATA_SECRET。
7.启动以下服务:
- Open vSwitch
- Open vSwitch agent
- L3 agent
- Metadata agent
验证服务操作
1.提供管理项目凭据。
2.验证代理的存在和操作:
- $ neutron agent-list
- +--------------------------------------+--------------------+----------+-------+----------------+---------------------------+
- | id | agent_type | host | alive | admin_state_up | binary |
- +--------------------------------------+--------------------+----------+-------+----------------+---------------------------+
- | 10b084e5-4ab8-43d6-9b04-6d56f27f9cd4 | Metadata agent | network1 | :-) | True | neutron-metadata-agent |
- | 2f90ef81-3eed-4ecf-b6b9-2d2c21dda85c | Open vSwitch agent | compute2 | :-) | True | neutron-openvswitch-agent |
- | 319563ac-88f9--b63e-e55beb673372 | DHCP agent | network1 | :-) | True | neutron-dhcp-agent |
- | 3345723e-16e8-4b74-9d15-d7f1f977a3bd | Open vSwitch agent | compute1 | :-) | True | neutron-openvswitch-agent |
- | 4643c811-a54a-41da-91a8-c2328bcaeea3 | Open vSwitch agent | network1 | :-) | True | neutron-openvswitch-agent |
- | 5ad81671-efc3-4acc-9d5d-030a1c4f6a25 | L3 agent | compute1 | :-) | True | neutron-l3-agent |
- | 641337fa-99c2-468d-8d7e-89277d6ba144 | Metadata agent | compute1 | :-) | True | neutron-metadata-agent |
- | 9372e008-bd29--8e01-8ddfd50d2b74 | L3 agent | network1 | :-) | True | neutron-l3-agent |
- | af9d1169---9de2-778c8fce21b9 | L3 agent | compute2 | :-) | True | neutron-l3-agent |
- | ee59e3ba-ee3c--b3d5-c9d8123b6cc5 | Metadata agent | compute2 | :-) | True | neutron-metadata-agent |
- +--------------------------------------+--------------------+----------+-------+----------------+---------------------------+
创建初始网络
这个示例创建了一个flat外部网络和一个VXLAN项目网络。
1.提供管理项目凭据。
2.创建外部网络:
- $ neutron net-create ext-net --router:external \
- --provider:physical_network external --provider:network_type flat
- Created a new network:
- +---------------------------+--------------------------------------+
- | Field | Value |
- +---------------------------+--------------------------------------+
- | admin_state_up | True |
- | id | 893aebb9-1c1e-48be--6b947f3237b3 |
- | name | ext-net |
- | provider:network_type | flat |
- | provider:physical_network | external |
- | provider:segmentation_id | |
- | router:external | True |
- | shared | False |
- | status | ACTIVE |
- | subnets | |
- | tenant_id | 54cd044c64d5408b83f843d63624e0d8 |
- +---------------------------+--------------------------------------+
3.在外部网络上创建子网:
- $ neutron subnet-create ext-net 203.0.113.0/ --allocation-pool \
- start=203.0.113.101,end=203.0.113.200 --disable-dhcp \
- --gateway 203.0.113.1
- Created a new subnet:
- +-------------------+------------------------------------------------------+
- | Field | Value |
- +-------------------+------------------------------------------------------+
- | allocation_pools | {"start": "203.0.113.101", "end": "203.0.113.200"} |
- | cidr | 203.0.113.0/ |
- | dns_nameservers | |
- | enable_dhcp | False |
- | gateway_ip | 203.0.113.1 |
- | host_routes | |
- | id | 9159f0dc-2b63-41cf-bd7a-289309da1391 |
- | ip_version | |
- | ipv6_address_mode | |
- | ipv6_ra_mode | |
- | name | ext-subnet |
- | network_id | 893aebb9-1c1e-48be--6b947f3237b3 |
- | tenant_id | 54cd044c64d5408b83f843d63624e0d8 |
- +-------------------+------------------------------------------------------+
示例配置包含vlan作为第一个项目网络类型。只有管理用户才能创建其他类型的网络,如VXLAN。下面的命令使用admin项目凭证创建一个VXLAN项目网络。
1.获得常规项目的ID。例如使用demo项目:
- $ openstack project show demo
- +-------------+----------------------------------+
- | Field | Value |
- +-------------+----------------------------------+
- | description | Demo Project |
- | enabled | True |
- | id | cdef0071a0194d19ac6bb63802dc9bae |
- | name | demo |
- +-------------+----------------------------------+
2.创建项目网络:
- $ neutron net-create demo-net --tenant-id cdef0071a0194d19ac6bb63802dc9bae \
- --provider:network_type vxlan
- Created a new network:
- +---------------------------+--------------------------------------+
- | Field | Value |
- +---------------------------+--------------------------------------+
- | admin_state_up | True |
- | id | ac108952---adf4-bb6615b3de28 |
- | name | demo-net |
- | provider:network_type | vxlan |
- | provider:physical_network | |
- | provider:segmentation_id | |
- | router:external | False |
- | shared | False |
- | status | ACTIVE |
- | subnets | |
- | tenant_id | cdef0071a0194d19ac6bb63802dc9bae |
- +---------------------------+--------------------------------------+
3.提供常规项目凭证。下面的步骤使用demo项目。
4.在项目网络上创建子网:
- $ neutron subnet-create demo-net --name demo-subnet --gateway 192.168.1.1 \
- 192.168.1.0/
- Created a new subnet:
- +-------------------+------------------------------------------------------+
- | Field | Value |
- +-------------------+------------------------------------------------------+
- | allocation_pools | {"start": "192.168.1.2", "end": "192.168.1.254"} |
- | cidr | 192.168.1.0/ |
- | dns_nameservers | |
- | enable_dhcp | True |
- | gateway_ip | 192.168.1.1 |
- | host_routes | |
- | id | 69d38773-794a-4e49-b887-6de6734e792d |
- | ip_version | |
- | ipv6_address_mode | |
- | ipv6_ra_mode | |
- | name | demo-subnet |
- | network_id | ac108952---adf4-bb6615b3de28 |
- | tenant_id | cdef0071a0194d19ac6bb63802dc9bae |
- +-------------------+------------------------------------------------------+
5.创建一个分布式项目路由器:
- $ neutron router-create demo-router
- Created a new router:
- +-----------------------+--------------------------------------+
- | Field | Value |
- +-----------------------+--------------------------------------+
- | admin_state_up | True |
- | distributed | True |
- | external_gateway_info | |
- | ha | False |
- | id | 635660ae-a254-4feb--295aa9ec6418 |
- | name | demo-router |
- | routes | |
- | status | ACTIVE |
- | tenant_id | cdef0071a0194d19ac6bb63802dc9bae |
- +-----------------------+--------------------------------------+
注意:默认策略可能会防止"distributed"标志出现在非特权用户的命令输出中。
6.将项目网络连接到路由器:
- $ neutron router-interface-add demo-router demo-subnet
- Added interface b1a894fd-aee8-475c--4342afdc1b58 to router demo-router.
7.在路由器上为项目网络添加到外部网络的网关:
- $ neutron router-gateway-set demo-router ext-net
- Set gateway for router demo-router
验证网络操作
1.在网络节点上,验证snat、qrouter和qdhcp名称空间的创建:
- $ ip netns
- snat-4d7928a0-4a3c-4b99-b01b-97da2f97e279
- qrouter-4d7928a0-4a3c-4b99-b01b-97da2f97e279
- qdhcp-353f5937-a2d3-41ba--fa1af2538141
注意:在启动实例之前,qdhcp名称空间可能不存在。
2.提供管理项目凭据。
3.在路由器上确定项目网络的外部网络网关IP地址,通常是外部子网IP分配范围内的最低IP地址:
- $ neutron router-port-list demo-router
- +--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
- | id | name | mac_address | fixed_ips |
- +--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
- | b1a894fd-aee8-475c--4342afdc1b58 | | fa::3e:c1:: | {"subnet_id": "69d38773-794a-4e49-b887-6de6734e792d", "ip_address": "192.168.1.1"} |
- | ff5f93c6---a401-af78ff61ce99 | | fa::3e::d7:8c | {"subnet_id": "9159f0dc-2b63-41cf-bd7a-289309da1391", "ip_address": "203.0.113.101"} |
- +--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+
4.在控制器节点或任何有访问外部网络的主机上,在项目路由器上ping外部网络网关IP地址:
- $ ping -c 203.0.113.101
- PING 203.0.113.101 (203.0.113.101) () bytes of data.
- bytes from 203.0.113.101: icmp_req= ttl= time=0.619 ms
- bytes from 203.0.113.101: icmp_req= ttl= time=0.189 ms
- bytes from 203.0.113.101: icmp_req= ttl= time=0.165 ms
- bytes from 203.0.113.101: icmp_req= ttl= time=0.216 ms
- --- 203.0.113.101 ping statistics ---
- packets transmitted, received, % packet loss, time 2999ms
- rtt min/avg/max/mdev = 0.165/0.297/0.619/0.187 ms
5.提供常规项目凭证。
6.在项目网络上启动一个具有接口的实例。
7.在实例的计算节点上,验证qrouter名称空间的创建:
- $ ip netns
- qrouter-4d7928a0-4a3c-4b99-b01b-97da2f97e279
8.获得对实例的控制台访问。
- .测试连接到项目路由器:
- $ ping -c 192.168.1.1
- PING 192.168.1.1 (192.168.1.1) () bytes of data.
- bytes from 192.168.1.1: icmp_req= ttl= time=0.357 ms
- bytes from 192.168.1.1: icmp_req= ttl= time=0.473 ms
- bytes from 192.168.1.1: icmp_req= ttl= time=0.504 ms
- bytes from 192.168.1.1: icmp_req= ttl= time=0.470 ms
- --- 192.168.1.1 ping statistics ---
- packets transmitted, received, % packet loss, time 2998ms
- rtt min/avg/max/mdev = 0.357/0.451/0.504/0.055 ms
- .测试连接到互联网:
- $ ping -c openstack.org
- PING openstack.org (174.143.194.225) () bytes of data.
- bytes from 174.143.194.225: icmp_req= ttl= time=17.4 ms
- bytes from 174.143.194.225: icmp_req= ttl= time=17.5 ms
- bytes from 174.143.194.225: icmp_req= ttl= time=17.7 ms
- bytes from 174.143.194.225: icmp_req= ttl= time=17.5 ms
- --- openstack.org ping statistics ---
- packets transmitted, received, % packet loss, time 3003ms
- rtt min/avg/max/mdev = 17.431/17.575/17.734/0.143 ms
9.创建适当的安全组规则,允许ping和SSH访问实例。例如:
- $ nova secgroup-add-rule default icmp - - 0.0.0.0/
- +-------------+-----------+---------+-----------+--------------+
- | IP Protocol | From Port | To Port | IP Range | Source Group |
- +-------------+-----------+---------+-----------+--------------+
- | icmp | - | - | 0.0.0.0/ | |
- +-------------+-----------+---------+-----------+--------------+
- $ nova secgroup-add-rule default tcp 0.0.0.0/
- +-------------+-----------+---------+-----------+--------------+
- | IP Protocol | From Port | To Port | IP Range | Source Group |
- +-------------+-----------+---------+-----------+--------------+
- | tcp | | | 0.0.0.0/ | |
- +-------------+-----------+---------+-----------+--------------+
10.在外部网络上创建浮动IP地址:
- $ neutron floatingip-create ext-net
- Created a new floatingip:
- +---------------------+--------------------------------------+
- | Field | Value |
- +---------------------+--------------------------------------+
- | fixed_ip_address | |
- | floating_ip_address | 203.0.113.102 |
- | floating_network_id | 9bce64a3-a963-4c05-bfcd-161f708042d1 |
- | id | 05e36754-e7f3-46bb-9eaa-3521623b3722 |
- | port_id | |
- | router_id | |
- | status | DOWN |
- | tenant_id | 7cf50047f8df4824bc76c2fdf66d11ec |
- +---------------------+--------------------------------------+
11.将浮动IP地址与实例关联:
- $ nova floating-ip-associate demo-instance1 203.0.113.102
2.验证添加到实例的浮动IP地址:
- $ nova list
- +--------------------------------------+----------------+--------+------------+-------------+-----------------------------------------+
- | ID | Name | Status | Task State | Power State | Networks |
- +--------------------------------------+----------------+--------+------------+-------------+-----------------------------------------+
- | 05682b91-81a1-464c-8f40-8b3da7ee92c5 | demo-instance1 | ACTIVE | - | Running | demo-net=192.168.1.3, 203.0.113.102 |
- +--------------------------------------+----------------+--------+------------+-------------+-----------------------------------------+
13.在使用实例的计算节点上,验证fip名称空间的创建:
- $ ip netns
- fip-2c7bd9c2-8ab0-46ef-b7c1-023ce0452c24
14.在控制器节点或任何访问外部网络的主机上,ping与实例关联的浮动IP地址:
- $ ping -c 203.0.113.102
- PING 203.0.113.102 (203.0.113.112) () bytes of data.
- bytes from 203.0.113.102: icmp_req= ttl= time=3.18 ms
- bytes from 203.0.113.102: icmp_req= ttl= time=0.981 ms
- bytes from 203.0.113.102: icmp_req= ttl= time=1.06 ms
- bytes from 203.0.113.102: icmp_req= ttl= time=0.929 ms
- --- 203.0.113.102 ping statistics ---
- packets transmitted, received, % packet loss, time 3002ms
- rtt min/avg/max/mdev = 0.929/1.539/3.183/0.951 ms
5.场景3:高可用性使用分布式虚拟路由(DVR)的更多相关文章
- 理解 OpenStack 高可用(HA)(3):Neutron 分布式虚拟路由(Neutron Distributed Virtual Routing)
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
- 理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
- 虚拟路由冗余协议VRRP
一.VRRP简介 虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网 ...
- Keepalived 双主虚拟路由配置实例
Keepalived 双主虚拟路由配置实例 演示前说明: 2台centos7.2 主机:node-00,node-01 VIP1:10.1.38.19预定node-00占有 VIP2:10.1.38. ...
- kafka分布式虚拟机群部署配置方法
1 配置jdk8 假设安装(解压)路径:jdk1.8.0 修改/etc/profile,增加以下设置并保存 Export JAVA_HOME=jdk1.8.0 Export PATH=$JAVA_HO ...
- 虚拟路由冗余(VRRP)协议
1. 前言 VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,最新协议在RFC3768中定义,原来的定义RFC2338被废除,新协议相对还 ...
- 【多服务场景化解决方案】AR虚拟技术助力智能家装
1 .介绍 总览 本应用采用了华为图形引擎服务的AR虚拟技术,您可以在手机相机里摆放想要购置的家具家电,交互式体验让您可以轻松操控它们的3D图例,以此来确定这些家具家电是否适合摆放在您的家里. 特 ...
- x86 openwrt虚拟路由代理上网
一.代理服务器设置 1.下载代理软件CCProxy 6.8 Build 2.设置如下 二.x86 路由设置 1.在/etc目录下编辑profile http_proxy= https_proxy= f ...
- keepalived双主虚拟路由配置
我使用了两台虚拟机做测试 系统centos7.3 主机A:172.16.1.123 主机B:172.16.1.124 其实和普通配置keepalived差不多,就是复制多了一个vrrp_instanc ...
随机推荐
- 快速傅里叶变换与快速数论变换瞎学笔记$QwQ$
$umm$先预警下想入门$FFT$就不要康我滴学习笔记了,,, 就,我学习笔记基本上是我大概$get$之后通过写$blog$加强理解加深记忆这样儿的,有些姿势点我可能会直接$skip$什么的,所以对除 ...
- Redis远程连接报错解决
今天测试了一下在本机(win10系统)远程连接 centos下的redis,结果报了以下错误: Exception in thread "main" redis.clients.j ...
- 鼠标右键新建Markdown文档
首先放一张github某项目中.md文件中的内容图片 Windows系统下,使用 Typora 软件来进入Markdown文档的编写非常容易,而且入门门槛非常的低 存在的问题: 习惯了使用Markdo ...
- 基于springboot+thymeleaf+springDataJpa自带的分页插件实现完整的动态分页
实现百度搜索使用的前五后四原则,效果如下. 下面贴出代码,复制到前端即可,只需要域中放置page对象就可以.(springdatajpa自带的page 注意:第一页是按0开始算的) <div c ...
- 《【面试突击】— Redis篇》--Redis都有哪些数据类型?分别在哪些场景下使用比较合适?
能坚持别人不能坚持的,才能拥有别人不能拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>--Redis都有哪些数据类型?分别在哪些场景下使用 ...
- Vue CLI及其vue.config.js(一)
有时候我们为了快速搭建一个vue的完整系统,经常会用到vue-cli,vue-cli用起来很方便而且命令简单容易上手,但缺点是在构建的时候我感觉有一些慢,因为CLI 服务 (@vue/cli-serv ...
- wannafly camp day1
题目描述: 恬恬的生日临近了.宇扬给她准备了一个大 蛋糕. 正如往常一样,宇扬在蛋糕上插了nnn支蜡烛,并把蛋糕分为mmm个区域.因为某种原因,他必须把第iii根蜡烛插在第aia\_iai个区域或第 ...
- C#中的委托是什么
1.什么是委托?(方法作另一个方法的参数)delegate void MyDel(int value); //声明委托类型和类一样,委托是用户自定义的类型,但是类是数据和方法的集合,而委托是持有 ...
- nrm npm nvm
1.nvm: node version manager node版本管理器 可以来回切换node.js版本号,而直接使用node的.msi安装则版本比较固定,无法实现node版本的自行切换nvm安装方 ...
- Flash 上下文管理
1.Local() 作用:为每个协程或线程创建一个独立的内存空间 储存格式: { 唯一标识: {'stack': []} } 代码 try: from greenlet import getcurre ...