OpenStack juno版 安裝配置——第六章(Neutron)

OpenStack juno版 安裝配置——第六章(Neutron)

來自專欄 大數據技術

第六章——安裝配置網路組件Neutron

基礎知識:

  • Neutron簡介

Openstack的設計理念是把所有的組件當做服務來註冊的,Neutron作為OpenStack的核心項目之一,提供雲計算環境下的虛擬網路功能,實現了「網路即服務」的功能。Neutron將網路、子網、埠和路由器抽象化,之後啟動的虛擬主機就可以連接到這個虛擬網路上。

  • 創建Neutron網路過程

  1. 首先管理員拿到一組可以在互聯網上定址的IP地址,並且創建一個外部網路和子網。

  2. 租戶創建一個網路和子網。

  3. 租戶創建一個路由器並且連接租戶子網和外部網路。

  4. 租戶創建虛擬機。

  • Neutron網路的典型結構如圖5-1所示

  • Neutron三種網路類型

  1. 扁平網路 (FlatNetwork):在創建虛擬主機時,nova-network會從指定子網中取一個空閑IP並將它寫入此虛擬主機的配置文件。

  2. 帶DHCP功能的扁平網路(Flat DHCP Network):顧名思義,此種模式相對於扁平網路加入了DHCP功能。

  3. VLAN網路(VLAN Network):這是nova-network的默認模型。針對每個項目(Project,如今Openstack把項目改稱租戶Tenant),都會對應一個vlan。每個項目里的私有IP地址只能在本項目的vlan里訪問。

6.1、控制節點上安裝和配置Neutron

注意:以下操作均在控制節點

1.創建資料庫

1)登錄mysql

相關命令:

  1. mysql -uroot -p

2)創建 neutron 資料庫

相關命令:

  1. CREATEDATABASE neutron;

3)授權

相關命令:

  1. GRANT ALLPRIVILEGES ON neutron.* TO neutron@localhost

  2. IDENTIFIED BY NEUTRON_DBPASS;

  3. GRANT ALLPRIVILEGES ON neutron.* TO neutron@%

  4. IDENTIFIED BY NEUTRON_DBPASS;

4)退出mysql

相關命令:

  1. exit

2.環境變數生效

相關命令:

  1. sourceadmin-openrc.sh

3.創建服務憑證

1)創建neutron用戶

相關命令:

  1. keystoneuser-create --name neutron --pass NEUTRON_PASS

2)給neutron用戶授予admin角色

相關命令:

  1. keystoneuser-role-add --user neutron --tenant service --role admin

3)創建neutron 服務實例

相關命令:

  1. keystoneservice-create --name neutron --type network

  2. --description "OpenStackNetworking"

4.創建網路服務 API endpoints

相關命令:

keystone endpoint-create --service-id $(keystone service-list | awk / network / {print $2}) --publicurl http://controller:9696 --adminurl http://controller:9696 --internalurl http://controller:9696 --region regionOne

5.安裝網路組件

相關命令:

  1. apt-getinstall neutron-server neutron-plugin-ml2 python-neutronclient

6.配置網路服務組件

網路伺服器組件配置包括資料庫,認證機制,消息代理,拓撲改變報警,和插件。

  • 編輯文件neutron.conf

相關命令:

  1. gedit /etc/neutron/neutron.conf

1)在 [database] 部分, 配置資料庫訪問:

[database]

connection= mysql://neutron:NEUTRON_DBPASS@controller/neutron

注意:注釋掉connection =sqlite:////var/lib/neutron/neutron.sqlite

2)在 [DEFAULT] 部分, 配置 RabbitMQ 消息代理訪問:

[DEFAULT]

rpc_backend= rabbit

rabbit_host= controller

rabbit_password= RABBIT_PASS

3)在 [DEFAULT] 和 [keystone_authtoken] 部分,配置認證服務

[DEFAULT]auth_strategy = keystone[keystone_authtoken]auth_uri = http://controller:5000/v2.0identity_uri = http://controller:35357admin_tenant_name = serviceadmin_user = neutronadmin_password = NEUTRON_PASS

注意:注釋掉其它默認項

4)在[DEFAULT]部分配置 Modular Layer 2 (ML2) plug-in,router service, and overlapping IP addresses:

[DEFAULT]

core_plugin= ml2

service_plugins= router

allow_overlapping_ips= True

5)在 [DEFAULT] 部分, 配置網路的網路計算拓撲變化通知:

[DEFAULT]notify_nova_on_port_status_changes = Truenotify_nova_on_port_data_changes = Truenova_url = http://controller:8774/v2nova_admin_auth_url = http://controller:35357/v2.0nova_region_name = regionOnenova_admin_username = novanova_admin_tenant_id = SERVICE_TENANT_IDnova_admin_password = NOVA_PASS

注意:這裡SERVICE_TENANT_ID是keystone service 租戶id 。通過命令sourceadmin-openrc.sh,keystone tenant-get service,得知租戶id

上面配置替換為下面:

[DEFAULT]notify_nova_on_port_status_changes = Truenotify_nova_on_port_data_changes = Truenova_url = http://controller:8774/v2nova_admin_auth_url = http://controller:35357/v2.0nova_region_name = regionOnenova_admin_username = novanova_admin_tenant_id = d789ea28a4c843098d89046318a2bb74nova_admin_password = NOVA_PASS

6)為幫助排除問題,在[DEFAULT]啟用verbose

[DEFAULT]

verbose =True

7. 配置Modular Layer 2 (ML2) 插件

ML2插件使用 Open vSwitch (OVS)機制,為實例創建虛擬網路框架。儘管如此控制節點不需要OVS 組件,因為它不處理實例網路互通。

  • 編輯文件ml2_conf.ini

相關命令:

  1. gedit /etc/neutron/plugins/ml2/ml2_conf.ini

1)在 [ml2]部分,配置啟用 flat 和 generic routing encapsulation (GRE) 網路驅動,GRE 租戶網路和ovs驅動

[ml2]

type_drivers= flat,gre

tenant_network_types= gre

mechanism_drivers= openvswitch

注意:一旦配置ML2 插件,禁用網路驅動和重啟,將會導致資料庫不一致。

2)在 [ml2_type_gre] 部分, 配置 tunnel identifier (id) 範圍:

[ml2_type_gre]

tunnel_id_ranges= 1:1000

3)在 [securitygroup] 部分,配置安全組,ipset,配置OVS防火牆驅動

[securitygroup]

enable_security_group= True

enable_ipset= True

firewall_driver= neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

8. 使用網路配置計算

默認情況下,分配包配置使用傳統網路計算。你不許通過網路重新配置管理網路計算。

  • 編輯文件nova.conf

相關命令:

  1. gedit /etc/nova/nova.conf

1)在 [DEFAULT]默認部分,配置api和驅動

[DEFAULT]

network_api_class= nova.network.neutronv2.api.API

security_group_api= neutron

linuxnet_interface_driver= nova.network.linux_net.LinuxOVSInterfaceDriver

firewall_driver= nova.virt.firewall.NoopFirewallDriver

注意:默認,計算使用內部防火牆網路,自從網路包含網路防火牆服務,你必須使用nova.virt.firewall.NoopFirewallDriver防火牆驅動停掉計算防火牆服務

2)在 [neutron] 部分,配置訪問參數(沒有就手動添加)

[neutron]url = http://controller:9696auth_strategy = keystoneadmin_auth_url = http://controller:35357/v2.0admin_tenant_name = serviceadmin_username = neutronadmin_password = NEUTRON_PASS

9.同步資料庫

相關命令:

  1. su -s/bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf

  2. --config-file/etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno" neutron

10.重啟計算服務

相關命令:

  1. servicenova-api restart

  2. servicenova-scheduler restart

  3. servicenova-conductor restart

11.重啟網路服務

相關命令:

  1. serviceneutron-server restart

12.驗證是否成功

1)生效環境變數

相關命令:

  1. sourceadmin-openrc.sh

2)列出創建的載入擴展的 neutron-server進程

相關命令:

  1. neutronext-list

6.2、網路節點上安裝和配置Neutron

網路節點主要處理內部和外部的虛擬路由和DHCP服務。

注意:以下操作均在網路節點

1.修改文件 sysctl.conf

相關命令與內容:

  1. gedit /etc/sysctl.conf

  2. ------------------------------內 容------------------------------

  3. net.ipv4.ip_forward=1

  4. net.ipv4.conf.all.rp_filter=0

  5. net.ipv4.conf.default.rp_filter=0

  6. ------------------------------內 容------------------------------

2.生效

相關命令:

  1. sysctl -p

3. 安裝網路組件

相關命令:

  1. apt-getinstall neutron-plugin-ml2 neutron-plugin-openvswitch-agent

  2. neutron-l3-agent neutron-dhcp-agent

4. 配置網路組件

網路通用組件配置包括:認證機制、消息代理、和插件

  • 編輯文件neutron.conf

相關命令:

  1. gedit /etc/neutron/neutron.conf

1)在 [database]部分

注釋掉connection =sqlite:////var/lib/neutron/neutron.sqlite

2)在 [DEFAULT] 部分,配置消息代理訪問

[DEFAULT]

rpc_backend= rabbit

rabbit_host= controller

rabbit_password= RABBIT_PASS

3)在 [DEFAULT] 和 [keystone_authtoken] 部分, 配置身份服務訪問:

[DEFAULT]auth_strategy = keystone[keystone_authtoken]auth_uri = http://controller:5000/v2.0identity_uri = http://controller:35357admin_tenant_name = serviceadmin_user = neutronadmin_password = NEUTRON_PASS

注意:注釋掉其餘默認項

4)在 [DEFAULT] 部分,啟用 Modular Layer 2 (ML2)插件,路由服務,和ip地址

[DEFAULT]

core_plugin= ml2

service_plugins= router

allow_overlapping_ips= True

5)(可選)協助排除故障,詳細記錄在[DEFAULT]部分使:

[DEFAULT]

verbose =True

5. 配置Modular Layer 2 (ML2)插件

ML2 插件使用 Open vSwitch (OVS)機製為實例建立虛擬網路架構。

  • 修改文件ml2_conf.ini

相關命令:

  1. gedit /etc/neutron/plugins/ml2/ml2_conf.ini

1)在 [ml2] 部分,啟用 flat 和 generic routing encapsulation (GRE)網路類型驅動, GRE 租戶網路, 和 OVS 機制驅動:

[ml2]

type_drivers= flat,gre

tenant_network_types= gre

mechanism_drivers= openvswitch

2)在 [ml2_type_flat] 部分,配置flat_networks為external

[ml2_type_flat]

flat_networks= external

3)在 [ml2_type_gre] 部分,配置tunnel id的範圍

[ml2_type_gre]

tunnel_id_ranges= 1:1000

4) 在 [securitygroup]部分,啟用 安全組, ipset, 和 配置 OVS防火牆驅動:

[securitygroup]

enable_security_group= True

enable_ipset= True

firewall_driver= neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

5)在 [ovs] 部分,啟用tunnels,配置本地tunnel endpoint,和bridge_mappings

bridge_mappings:mapthe external flat provider network to the br-ex external network bridge:

[ovs]

local_ip =INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS

enable_tunneling= True

bridge_mappings= external:br-ex

注意:INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS是網路節點上的實例隧道網路的ip地址

即替換為下面內容:

[ovs]

local_ip= 10.0.1.21

enable_tunneling= True

bridge_mappings= external:br-ex

注意:[ovs]未找不到,直接添加

6)在 [agent] 部分,啟動GRE tunnels

[agent]

tunnel_types= gre

注意:[agent]未找不到,直接添加

6. 配置Layer-3 (L3) 代理

Layer-3(L3) agent為虛擬網路提供路由服務。

  • 編輯文件l3_agent.ini

相關命令:

  1. gedit /etc/neutron/l3_agent.ini

1)在 [DEFAULT] 部分,配置驅動,啟用 network namespaces,配置外部網橋,使失效的路由器名稱刪除

[DEFAULT]

interface_driver= neutron.agent.linux.interface.OVSInterfaceDriver

use_namespaces= True

external_network_bridge= br-ex

router_delete_namespaces= True

2)(可選)協助排除故障,詳細記錄在[DEFAULT]部分:

[DEFAULT]

verbose =True

7.配置DHCP代理

DHCP 代理為虛擬網路提供DHCP服務。

注意:如果這裡配置錯誤,openstack產生實例,會獲取不到ip地址

  • 編輯文件dhcp_agent.ini

相關命令:

  1. gedit /etc/neutron/dhcp_agent.ini

1)在 [DEFAULT] 部分,配置驅動,啟用命名空間和啟用刪除廢棄的命名空間

[DEFAULT]

interface_driver= neutron.agent.linux.interface.OVSInterfaceDriver

dhcp_driver= neutron.agent.linux.dhcp.Dnsmasq

use_namespaces= True

dhcp_delete_namespaces= True

2)可選為排除錯誤,啟用verbose 在[DEFAULT] 部分:

[DEFAULT]

verbose =True

2.可選

1)編輯文件dhcp_agent.ini

相關命令:

  1. gedit /etc/neutron/dhcp_agent.ini

在 [DEFAULT]部分,啟用 the dnsmasq 配置文件:

[DEFAULT]

dnsmasq_config_file= /etc/neutron/dnsmasq-neutron.conf

2)創建文件dnsmasq-neutron.conf並添加下面內容

相關命令與內容:

  1. vim /etc/neutron/dnsmasq-neutron.conf
  2. ------------------------------內 容------------------------------

  3. dhcp-option-force=26,1454
  4. ------------------------------內 容------------------------------

3)殺死已經存在的dnsmasq進程

相關命令:

  1. pkilldnsmasq

8. 配置元數據代理

元數據代理提供配置信息,比如實例憑證.。

補充:

metadataagent(元數據代理)

openstack網路代理為實例提供元數據服務

1.編輯metadata_agent.ini

相關命令:

  1. gedit /etc/neutron/metadata_agent.ini

1)在[DEFAULT] 部分,配置訪問參數

[DEFAULT]auth_url = http://controller:5000/v2.0auth_region = regionOneadmin_tenant_name = serviceadmin_user = neutronadmin_password = NEUTRON_PASS

注意:不要忘記注釋掉其它授權,以免被覆蓋

2)在[DEFAULT] 部分,配置元數據主機

[DEFAULT]

nova_metadata_ip= controller

3)在[DEFAULT]部分,配置元數據代理共享密碼

[DEFAULT]

metadata_proxy_shared_secret= METADATA_SECRET

4) (可選)協助排除故障,詳細記錄在[DEFAULT]部分

[DEFAULT]

verbose =True

9.控制節點編輯文件nova.conf

注意:以下操作均在控制節點

相關命令:

  1. gedit /etc/nova/nova.conf

1)在[neutron]部分,啟動元數據代理和配置密碼

[neutron]

service_metadata_proxy= True

metadata_proxy_shared_secret= METADATA_SECRET

2)控制節點重啟api服務

相關命令:

  1. servicenova-api restart

10. 配置Open vSwitch (OVS) 服務

OVS服務為實例提供底層虛擬網路框架,集成網橋br-int處理OVS內實例內部網路的流通。外部網橋br-ex處理ovs內實例外部網路的流通。外部網橋需要提供外部網路介面來訪問實例外部網路。本質上,在你的環境中,連接著虛擬外部網路和物理外部網路。

注意:以下操作均在網路節點

1)重啟ovs服務

相關命令:

  1. serviceopenvswitch-switch restart

2)添加外部網橋

相關命令:

  1. ovs-vsctladd-br br-ex

替換 INTERFACE_NAME 用實際網卡 ,本文為eth2

ovs-vsctladd-port br-ex INTERFACE_NAME

替換為:

  1. ovs-vsctladd-port br-ex eth2

注意:根據網路介面驅動程序,你需要停掉generic receive offload (GRO),來獲得合適網路流量,在實例和外部網路之間

  • 在測試環境中,需要禁用GRO

相關命令:

  1. ethtool-K eth2 gro off

3. 重啟服務

相關命令:

  1. serviceneutron-plugin-openvswitch-agent restart

  2. serviceneutron-l3-agent restart

  3. serviceneutron-dhcp-agent restart

  4. serviceneutron-metadata-agent restart

6.3、檢驗安裝

注意:以下操作均在控制節點

1.生效環境變數

相關命令:

  1. sourceadmin-openrc.sh

2.列出創建成功的neutron 代理

相關命令:

  1. neutronagent-list

6.4、計算節點上安裝和配置Neutron

注意:以下操作均在計算節點

1.在配置openstack neutron之前,需要配置一定的核心網路參數

  • 修改文件/etc/sysctl.conf

相關命令與內容:

  1. gedit /etc/sysctl.conf

  2. ------------------------------內 容------------------------------

  3. net.ipv4.conf.all.rp_filter=0

  4. net.ipv4.conf.default.rp_filter=0

  5. ------------------------------內 容------------------------------

2. 生效修改內容

相關命令:

  1. sysctl -p

3. 安裝網路組件

相關命令:

  1. apt-getinstall neutron-plugin-ml2 neutron-plugin-openvswitch-agent

4. 配置網路通用組件

網路組件的配置包括:認證機制、消息代理、和插件。

  • 修改文件neutron.conf

相關命令:

  1. gedit /etc/neutron/neutron.conf

1)在 [database] 部分,注釋掉connection選項,因為網路組件不直接訪問資料庫

2)在 [DEFAULT] 部分,配置RabbitMQ 消息代理訪問

[DEFAULT]

rpc_backend= rabbit

rabbit_host= controller

rabbit_password= RABBIT_PASS

3)在 [DEFAULT] 和 [keystone_authtoken] 部分,配置身份服務訪問

[DEFAULT]auth_strategy = keystone[keystone_authtoken]auth_uri = http://controller:5000/v2.0identity_uri = http://controller:35357admin_tenant_name = serviceadmin_user = neutronadmin_password = NEUTRON_PASS

注意:不要忘記注釋掉其它授權,以免被覆蓋

4)在 [DEFAULT] 部分,啟用Layer 2 (ML2) 插件,路由服務,overlapping IP addresses

[DEFAULT]

core_plugin= ml2

service_plugins= router

allow_overlapping_ips= True

5)(可選)協助排除故障,開啟verbose 記錄在[DEFAULT]部分:

[DEFAULT]

verbose =True

5. 配置Modular Layer 2 (ML2) 插件

ML2插件使用Open vSwitch (OVS) 機制創建實例的虛擬網路

  • 編輯文件ml2_conf.ini

相關命令:

  1. gedit /etc/neutron/plugins/ml2/ml2_conf.ini

1)在[ml2]部分,啟用 flat 和 generic routing encapsulation (GRE)網路類型驅動,GRE 租戶網路和OVS機制驅動。

[ml2]

type_drivers= flat,gre

tenant_network_types= gre

mechanism_drivers= openvswitch

2)在 [ml2_type_gre] 部分,配置tunnel id範圍

[ml2_type_gre]

tunnel_id_ranges= 1:1000

3) 在[securitygroup] 部分,啟用安全組,啟用 ipset,配置OVS iptables,防火牆驅動

[securitygroup]

enable_security_group= True

enable_ipset= True

firewall_driver= neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver

4)在 [ovs] 部分,啟用tunnels ,配置本地tunnel endpoint:

[ovs]

local_ip= INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS

enable_tunneling= True

替換INSTANCE_TUNNELS_INTERFACE_IP_ADDRESS,為計算節點實例隧道ip.這裡管理網路為10.0.1.31,替換如下

[ovs]

local_ip= 10.0.1.31

enable_tunneling= True

注意:沒有找到,直接添加

5)在 [agent] 部分,啟用 GRE 隧道

[agent]

tunnel_types= gre

注意:沒有找到,直接添加

6. 配置 Open vSwitch (OVS) 服務

ovs服務為實例提供underlying 虛擬網路服務框架。

  • 重啟 OVS 服務

相關命令:

  1. serviceopenvswitch-switch restart

7.配置計算節點使用網路

默認情況下,分散式包配置使用傳統網路,你必須重新配置計算節點管理網路。

  • 修改文件 nova.conf

相關命令:

  1. gedit /etc/nova/nova.conf

1)在 [DEFAULT]部分,配置 APIs 和驅動 :

[DEFAULT]

network_api_class= nova.network.neutronv2.api.API

security_group_api= neutron

linuxnet_interface_driver= nova.network.linux_net.LinuxOVSInterfaceDriver

firewall_driver= nova.virt.firewall.NoopFirewallDriver

2)默認,計算使用內部防火牆服務,自從neutron包括防火牆服務,你必須使用

nova.virt.firewall.NoopFirewallDriver防火牆驅動,禁用計算防火牆服務

在[neutron] 部分,配置訪問參數

[neutron]url = http://controller:9696auth_strategy = keystoneadmin_auth_url = http://controller:35357/v2.0admin_tenant_name = serviceadmin_username = neutronadmin_password = NEUTRON_PASS

8.重啟計算服務

相關命令:

  1. servicenova-compute restart

9.重啟Open vSwitch (OVS) 代理

相關命令:

  1. serviceneutron-plugin-openvswitch-agent restart

6.5、驗證網路服務Neutron

注意:以下操作均在控制節點

1.生效環境變數

相關命令:

  1. sourceadmin-openrc.sh

2.列出創建的neutron 代理

相關命令:

  1. neutronagent-list


推薦閱讀:

第十三章:HDFS的數據流
MaxCompute MapReduce的7個性能優化策略
支持向量機(SVM)——原理篇
如何成為大數據產品經理
今日數據行業日報(2017.03.10)

TAG:雲計算 | 大數據 | OpenStack |