OpenStack juno版 安裝配置——第六章(Neutron)
來自專欄 大數據技術
第六章——安裝和配置網路組件Neutron
基礎知識:
- Neutron簡介
Openstack的設計理念是把所有的組件當做服務來註冊的,Neutron作為OpenStack的核心項目之一,提供雲計算環境下的虛擬網路功能,實現了「網路即服務」的功能。Neutron將網路、子網、埠和路由器抽象化,之後啟動的虛擬主機就可以連接到這個虛擬網路上。
- 創建Neutron網路過程
- 首先管理員拿到一組可以在互聯網上定址的IP地址,並且創建一個外部網路和子網。
- 租戶創建一個網路和子網。
- 租戶創建一個路由器並且連接租戶子網和外部網路。
- 租戶創建虛擬機。
- Neutron網路的典型結構如圖5-1所示
- Neutron三種網路類型
- 扁平網路 (FlatNetwork):在創建虛擬主機時,nova-network會從指定子網中取一個空閑IP並將它寫入此虛擬主機的配置文件。
- 帶DHCP功能的扁平網路(Flat DHCP Network):顧名思義,此種模式相對於扁平網路加入了DHCP功能。
- VLAN網路(VLAN Network):這是nova-network的默認模型。針對每個項目(Project,如今Openstack把項目改稱租戶Tenant),都會對應一個vlan。每個項目里的私有IP地址只能在本項目的vlan里訪問。
6.1、在控制節點上安裝和配置Neutron
注意:以下操作均在控制節點
1.創建資料庫
1)登錄mysql
相關命令:
- mysql -uroot -p
2)創建 neutron 資料庫
相關命令:
- CREATEDATABASE neutron;
3)授權
相關命令:
- GRANT ALLPRIVILEGES ON neutron.* TO neutron@localhost
- IDENTIFIED BY NEUTRON_DBPASS;
- GRANT ALLPRIVILEGES ON neutron.* TO neutron@%
- IDENTIFIED BY NEUTRON_DBPASS;
4)退出mysql
相關命令:
- exit
2.環境變數生效
相關命令:
- sourceadmin-openrc.sh
3.創建服務憑證
1)創建neutron用戶
相關命令:
- keystoneuser-create --name neutron --pass NEUTRON_PASS
2)給neutron用戶授予admin角色
相關命令:
- keystoneuser-role-add --user neutron --tenant service --role admin
3)創建neutron 服務實例
相關命令:
- keystoneservice-create --name neutron --type network
- --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.安裝網路組件
相關命令:
- apt-getinstall neutron-server neutron-plugin-ml2 python-neutronclient
6.配置網路服務組件
網路伺服器組件配置包括資料庫,認證機制,消息代理,拓撲改變報警,和插件。
- 編輯文件neutron.conf
相關命令:
- 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
相關命令:
- 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
相關命令:
- 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.同步資料庫
相關命令:
- su -s/bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf
- --config-file/etc/neutron/plugins/ml2/ml2_conf.ini upgrade juno" neutron
10.重啟計算服務
相關命令:
- servicenova-api restart
- servicenova-scheduler restart
- servicenova-conductor restart
11.重啟網路服務
相關命令:
- serviceneutron-server restart
12.驗證是否成功
1)生效環境變數
相關命令:
- sourceadmin-openrc.sh
2)列出創建的載入擴展的 neutron-server進程
相關命令:
- neutronext-list
6.2、在網路節點上安裝和配置Neutron
網路節點主要處理內部和外部的虛擬路由和DHCP服務。
注意:以下操作均在網路節點
1.修改文件 sysctl.conf
相關命令與內容:
- gedit /etc/sysctl.conf
- ------------------------------內 容------------------------------
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.rp_filter=0
- net.ipv4.conf.default.rp_filter=0
- ------------------------------內 容------------------------------
2.生效
相關命令:
- sysctl -p
3. 安裝網路組件
相關命令:
- apt-getinstall neutron-plugin-ml2 neutron-plugin-openvswitch-agent
- neutron-l3-agent neutron-dhcp-agent
4. 配置網路組件
網路通用組件配置包括:認證機制、消息代理、和插件
- 編輯文件neutron.conf
相關命令:
- 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
相關命令:
- 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
相關命令:
- 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
相關命令:
- 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
相關命令:
- gedit /etc/neutron/dhcp_agent.ini
在 [DEFAULT]部分,啟用 the dnsmasq 配置文件:
[DEFAULT]
dnsmasq_config_file= /etc/neutron/dnsmasq-neutron.conf
2)創建文件dnsmasq-neutron.conf並添加下面內容
相關命令與內容:
- vim /etc/neutron/dnsmasq-neutron.conf
- ------------------------------內 容------------------------------
- dhcp-option-force=26,1454
- ------------------------------內 容------------------------------
3)殺死已經存在的dnsmasq進程
相關命令:
- pkilldnsmasq
8. 配置元數據代理
元數據代理提供配置信息,比如實例憑證.。
補充:
metadataagent(元數據代理)
openstack網路代理為實例提供元數據服務
1.編輯metadata_agent.ini
相關命令:
- 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
注意:以下操作均在控制節點
相關命令:
- gedit /etc/nova/nova.conf
1)在[neutron]部分,啟動元數據代理和配置密碼
[neutron]
service_metadata_proxy= True
metadata_proxy_shared_secret= METADATA_SECRET
2)在控制節點重啟api服務
相關命令:
- servicenova-api restart
10. 配置Open vSwitch (OVS) 服務
OVS服務為實例提供底層虛擬網路框架,集成網橋br-int處理OVS內實例內部網路的流通。外部網橋br-ex處理ovs內實例外部網路的流通。外部網橋需要提供外部網路介面來訪問實例外部網路。本質上,在你的環境中,連接著虛擬外部網路和物理外部網路。
注意:以下操作均在網路節點
1)重啟ovs服務
相關命令:
- serviceopenvswitch-switch restart
2)添加外部網橋
相關命令:
- ovs-vsctladd-br br-ex
替換 INTERFACE_NAME 用實際網卡 ,本文為eth2
ovs-vsctladd-port br-ex INTERFACE_NAME
替換為:
- ovs-vsctladd-port br-ex eth2
注意:根據網路介面驅動程序,你需要停掉generic receive offload (GRO),來獲得合適網路流量,在實例和外部網路之間
- 在測試環境中,需要禁用GRO
相關命令:
- ethtool-K eth2 gro off
3. 重啟服務
相關命令:
- serviceneutron-plugin-openvswitch-agent restart
- serviceneutron-l3-agent restart
- serviceneutron-dhcp-agent restart
- serviceneutron-metadata-agent restart
6.3、檢驗安裝
注意:以下操作均在控制節點
1.生效環境變數
相關命令:
- sourceadmin-openrc.sh
2.列出創建成功的neutron 代理
相關命令:
- neutronagent-list
6.4、在計算節點上安裝和配置Neutron
注意:以下操作均在計算節點
1.在配置openstack neutron之前,需要配置一定的核心網路參數
- 修改文件/etc/sysctl.conf
相關命令與內容:
- gedit /etc/sysctl.conf
- ------------------------------內 容------------------------------
- net.ipv4.conf.all.rp_filter=0
- net.ipv4.conf.default.rp_filter=0
- ------------------------------內 容------------------------------
2. 生效修改內容
相關命令:
- sysctl -p
3. 安裝網路組件
相關命令:
- apt-getinstall neutron-plugin-ml2 neutron-plugin-openvswitch-agent
4. 配置網路通用組件
網路組件的配置包括:認證機制、消息代理、和插件。
- 修改文件neutron.conf
相關命令:
- 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
相關命令:
- 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 服務
相關命令:
- serviceopenvswitch-switch restart
7.配置計算節點使用網路
默認情況下,分散式包配置使用傳統網路,你必須重新配置計算節點管理網路。
- 修改文件 nova.conf
相關命令:
- 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.重啟計算服務
相關命令:
- servicenova-compute restart
9.重啟Open vSwitch (OVS) 代理
相關命令:
- serviceneutron-plugin-openvswitch-agent restart
6.5、驗證網路服務Neutron
注意:以下操作均在控制節點
1.生效環境變數
相關命令:
- sourceadmin-openrc.sh
2.列出創建的neutron 代理
相關命令:
- neutronagent-list
推薦閱讀:
※第十三章:HDFS的數據流
※MaxCompute MapReduce的7個性能優化策略
※支持向量機(SVM)——原理篇
※如何成為大數據產品經理
※今日數據行業日報(2017.03.10)