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名稱空間。
?
3.元數據代理在分布式路由器上使用項目網絡來處理實例的元數據操作。
4.Linux網橋處理安全組
?
注意:由于Open vSwitch和iptables的限制,網絡服務使用Linux網橋來管理實例的安全組。
?
計算節點組件回顧
?
?
計算節點組件連接?
?
?
二、Packet flow
?
對于在分布式路由器上使用項目網絡固定IP地址的實例,網絡節點在項目和外部網絡之間傳輸南北網絡流量。
?
外部網絡
網絡203.0.113.0/24IP地址分配從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的實例1DVR 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地址的實例,計算節點包含了實例路由項目和外部網絡之間的南北網絡通信,避開了網絡節點。
考慮到這種情況的復雜性,下面的案例涵蓋了從外部網絡到實例的網絡流量以及從實例到外部網絡的流量。
?
?
外部網絡
?
項目網絡
?
計算節點
?
實例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.0/24帶有MAC地址TG1的網關192.168.1.1?
項目網絡2
?
計算節點1
計算節點2
實例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文件:
替換MIN_VLAN_ID、MAX_VLAN_ID、MIN_GRE_ID、MAX_GRE_ID、MIN_VXLAN_ID和MAX_VXLAN_ID和VLAN、GRE和VXLAN ID最小值,以及適合您的環境的最大值。
?
請注意
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=02.加載新內核配置:
$ 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.conf2.編輯/etc/neutron/dnsmasq-neutron.conf文件:dhcp-option-force=26,1450?
8.配置元數據代理。編輯/etc/neutron/metadata_agent.ini文件:
[DEFAULT] verbose = True nova_metadata_ip = controller metadata_proxy_shared_secret = METADATA_SECRET?
用合適的環境值替換METADATA_SECRET。
?
9.開始以下服務:
Open vSwitchOpen vSwitch agentL3 agentDHCP agentMetadata 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=12.加載新內核配置:
$ 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 vSwitchOpen vSwitch agentL3 agentMetadata 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-4352-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-4436-8e01-8ddfd50d2b74 | L3 agent | network1 | :-) | True | neutron-l3-agent | | af9d1169-1012-4440-9de2-778c8fce21b9 | L3 agent | compute2 | :-) | True | neutron-l3-agent | | ee59e3ba-ee3c-4621-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-8908-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/24 --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/24 | | dns_nameservers | | | enable_dhcp | False | | gateway_ip | 203.0.113.1 | | host_routes | | | id | 9159f0dc-2b63-41cf-bd7a-289309da1391 | | ip_version | 4 | | ipv6_address_mode | | | ipv6_ra_mode | | | name | ext-subnet | | network_id | 893aebb9-1c1e-48be-8908-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-6096-4243-adf4-bb6615b3de28 | | name | demo-net | | provider:network_type | vxlan | | provider:physical_network | | | provider:segmentation_id | 1 | | 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/24 Created a new subnet: +-------------------+------------------------------------------------------+ | Field | Value | +-------------------+------------------------------------------------------+ | allocation_pools | {"start": "192.168.1.2", "end": "192.168.1.254"} | | cidr | 192.168.1.0/24 | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 192.168.1.1 | | host_routes | | | id | 69d38773-794a-4e49-b887-6de6734e792d | | ip_version | 4 | | ipv6_address_mode | | | ipv6_ra_mode | | | name | demo-subnet | | network_id | ac108952-6096-4243-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-8993-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-9262-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-8225-fa1af2538141?
注意:在啟動實例之前,qdhcp名稱空間可能不存在。
?
2.提供管理項目憑據。
3.在路由器上確定項目網絡的外部網絡網關IP地址,通常是外部子網IP分配范圍內的最低IP地址:
$ neutron router-port-list demo-router +--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+ | b1a894fd-aee8-475c-9262-4342afdc1b58 | | fa:16:3e:c1:20:55 | {"subnet_id": "69d38773-794a-4e49-b887-6de6734e792d", "ip_address": "192.168.1.1"} | | ff5f93c6-3760-4902-a401-af78ff61ce99 | | fa:16:3e:54:d7:8c | {"subnet_id": "9159f0dc-2b63-41cf-bd7a-289309da1391", "ip_address": "203.0.113.101"} | +--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------+?
4.在控制器節點或任何有訪問外部網絡的主機上,在項目路由器上ping外部網絡網關IP地址:
$ ping -c 4 203.0.113.101 PING 203.0.113.101 (203.0.113.101) 56(84) bytes of data. 64 bytes from 203.0.113.101: icmp_req=1 ttl=64 time=0.619 ms 64 bytes from 203.0.113.101: icmp_req=2 ttl=64 time=0.189 ms 64 bytes from 203.0.113.101: icmp_req=3 ttl=64 time=0.165 ms 64 bytes from 203.0.113.101: icmp_req=4 ttl=64 time=0.216 ms--- 203.0.113.101 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2999ms rtt min/avg/max/mdev = 0.165/0.297/0.619/0.187 ms?
5.提供常規項目憑證。
6.在項目網絡上啟動一個具有接口的實例。
7.在實例的計算節點上,驗證qrouter名稱空間的創建:
?
8.獲得對實例的控制臺訪問。
1.測試連接到項目路由器: $ ping -c 4 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=0.357 ms 64 bytes from 192.168.1.1: icmp_req=2 ttl=64 time=0.473 ms 64 bytes from 192.168.1.1: icmp_req=3 ttl=64 time=0.504 ms 64 bytes from 192.168.1.1: icmp_req=4 ttl=64 time=0.470 ms--- 192.168.1.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2998ms rtt min/avg/max/mdev = 0.357/0.451/0.504/0.055 ms2.測試連接到互聯網: $ ping -c 4 openstack.org PING openstack.org (174.143.194.225) 56(84) bytes of data. 64 bytes from 174.143.194.225: icmp_req=1 ttl=53 time=17.4 ms 64 bytes from 174.143.194.225: icmp_req=2 ttl=53 time=17.5 ms 64 bytes from 174.143.194.225: icmp_req=3 ttl=53 time=17.7 ms 64 bytes from 174.143.194.225: icmp_req=4 ttl=53 time=17.5 ms--- openstack.org ping statistics --- 4 packets transmitted, 4 received, 0% 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 -1 -1 0.0.0.0/0+-------------+-----------+---------+-----------+--------------+| IP Protocol | From Port | To Port | IP Range | Source Group |+-------------+-----------+---------+-----------+--------------+| icmp | -1 | -1 | 0.0.0.0/0 | |+-------------+-----------+---------+-----------+--------------+$ nova secgroup-add-rule default tcp 22 22 0.0.0.0/0+-------------+-----------+---------+-----------+--------------+| IP Protocol | From Port | To Port | IP Range | Source Group |+-------------+-----------+---------+-----------+--------------+| tcp | 22 | 22 | 0.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 4 203.0.113.102 PING 203.0.113.102 (203.0.113.112) 56(84) bytes of data. 64 bytes from 203.0.113.102: icmp_req=1 ttl=63 time=3.18 ms 64 bytes from 203.0.113.102: icmp_req=2 ttl=63 time=0.981 ms 64 bytes from 203.0.113.102: icmp_req=3 ttl=63 time=1.06 ms 64 bytes from 203.0.113.102: icmp_req=4 ttl=63 time=0.929 ms--- 203.0.113.102 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3002ms rtt min/avg/max/mdev = 0.929/1.539/3.183/0.951 ms?
轉載于:https://www.cnblogs.com/zhongguiyao/p/8168762.html
總結
以上是生活随笔為你收集整理的5.场景3:高可用性使用分布式虚拟路由(DVR)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 刷脸支付代理可靠吗?挣钱吗?
- 下一篇: 求建筑物的高度