OpenStack—Q Neutron安裝
一、網路服務概述
OpenStack Networking(neutron)允許你建立和附加由其他OpenStack服務管理的介面裝置到網路。外掛可以被實現,以適應不同的網路裝置和軟體,為OpenStack架構和部署提供了靈活性。 它包括以下元件: neutron-server 接受並將API請求路由到適當的OpenStack網路外掛以進行操作 OpenStack Networking plug-ins and agents 連線埠,建立網路或子網,並提供IP定址。這些外掛和代理根據特定雲中使用的廠商和技術的不同而有所不同。OpenStack網路為Cisco虛擬和物理交換機、NEC OpenFlow產品、Open vSwitch、Linux橋接和VMware NSX產品提供外掛和代理。 常見代理是L3(第三層)、DHCP(動態主機IP定址)和外掛代理。 Messaging queue
Networking(neutron)概念 OpenStack Networking(neutron)管理虛擬網路基礎設施(VNI)的所有網路方面,以及OpenStack環境中物理網路基礎設施(PNI)的訪問層方面。OpenStack網路使專案能夠建立高階虛擬網路拓撲,其中可能包括諸如防火牆、負載平衡器和虛擬專用網(VPN)等服務。 網路提供網路、子網和路由器作為物件抽象。每個抽象都有模仿其物理對等物的功能:網路包含子網,路由器在不同子網和網路之間路由通訊。 任何給定的網路設定都至少有一個外部網路。與其他網路不同,外部網路不僅僅是一個虛擬的網路。相反,它被視為物理機的一部分,外部網路可以讓OpenStack在外部被訪問。外部網路上的IP地址可以由任何物理上的外部網路訪問。 除了外部網路,任何網路服務都建立有一個或多個內部網路。這些軟體定義的網路直接連線到vm。只有在任何給定的內部網路上的vm,或者通過介面連線到類似路由器的子網上的vm,才能直接訪問連線到該網路的vm。 為了讓外部網路訪問vm,於是,網路之間需要路由器。每個路由器有一個連線到外部網路的閘道器和一個或多個連線到內部網路的介面。就像物理路由器一樣,子網可以訪問連線到同一路由器的其他子網上的機器,機器可以通過路由器的閘道器訪問外部網路。 另外,您可以將外部網路上的IP地址分配給內部網路上的埠。當某個東西連線到一個子網時,這個連線就稱為埠。您可以將外部網路IP地址與埠連線到vm。通過這種方式,外部網路中的實體可以訪問vm。 網路也支援安全小組。安全組使管理員能夠在組中定義防火牆規則。VM可以屬於一個或多個安全組,並且網路應用這些安全組中的規則來阻塞或解除該VM的埠、埠範圍或傳輸型別。 網路使用的每個外掛都有自己的概念。雖然對執行VNI和OpenStack環境並不重要,但是理解這些概念可以幫助你設計網路體系。所有的網路安裝都使用一個核心外掛和一個安全組外掛(或者僅僅是一個No-op安全組外掛)。另外,防火牆即服務(FWaaS)和負載均衡即服務(LBaaS)外掛是可用的。
二、基礎配置
Controller節點
1.建立nuetron資料庫和授權
# mysql -uroot -p123456 MariaDB [(none)]> create database neutron; MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'localhost' identified by '123456'; MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'%' identified by '123456'; MariaDB [(none)]> exit
2.生成環境變數
# . admin-openrc
3.建立服務憑證 1)建立neutron使用者
# openstack user create --domain default --password-prompt neutron
2)增加admin角色到neutron使用者中:(無返回值)
# openstack role add --project service --user neutron admin
3)建立neutron服務實體
# openstack service create --name neutron --description "OpenStack Networking" network
4)建立網路服務API端點
# openstack endpoint create --region RegionOne network public http://controller:9696
# openstack endpoint create --region RegionOne network internal http://controller:9696
# openstack endpoint create --region RegionOne network admin http://controller:9696
三、配置網路選項
您可以選擇方案一或二所表示的兩個架構之一來部署網路服務: 方案一:部署最簡單的架構,只支援將例項附加到提供者(外部)網路。沒有自助服務(私有)網路、路由器或浮動IP地址。只有管理員或其他特權使用者才能管理提供者網路。 方案二:增強方案一,使用支援附加例項到自助服務網路的layer-3服務。demo或其他非特權使用者可以管理自助服務網路,包括提供自助服務和提供者網路之間連線的路由器。此外,浮動IP地址通過Internet等外部網路使用自助服務網路提供對例項的連線。 自助服務網路通常使用overlay網路。像VXLAN這樣的overlay網路協議包括增加訊息頭,增加了開銷,減少了有效負載或使用者資料可用的空間。在不瞭解虛擬網路基礎設施的情況下,例項試圖使用1500位元組的預設乙太網最大傳輸單元(MTU)傳送資料包。網路服務通過DHCP自動為例項提供正確的MTU值。然而,有些雲映象不使用DHCP或忽略DHCP MTU選項,並需要使用元資料或指令碼進行配置。 注:方案二還支援將例項附加到提供者網路。 選擇下列網路選項之一來配置特定於它的服務。 Networking Option 1: Provider networks Networking Option 2: Self-service networks
這裡我選擇的方案二:
安裝配置Controller節點
1.安裝元件
# yum install -y openstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridge ebtables
2.配置服務元件
1)編輯/etc/neutron/neutron.conf 檔案
在[database]選項配置資料庫連結 在[DEFAULT] 選項,啟用模組層2 (ML2)外掛、路由器服務和重疊IP地址,配置RabbitMQ訊息佇列訪問 在[DEFAULT] 和 [keystone_authtoken] 選項配置身份認證服務訪問 在 [DEFAULT] 和 [nova]選項,配置網路以通知計算網路拓撲變化 在[oslo_concurrency] 選項配置lock路徑
# vi /etc/neutron/neutron.conf
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
transport_url = rabbit://openstack:[email protected]
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123456
[nova]
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = 123456
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
2)配置模組層2 (ML2)外掛 ML2外掛使用Linux橋接機制為例項構建第2層(橋接和交換)虛擬網路基礎結構。
編輯/etc/neutron/plugins/ml2/ml2_conf.ini檔案 在[ml2]選項,啟用flat、VLAN和VXLAN網路, 啟用VXLAN自助服務網路, 啟用Linux橋接模式和layer-2填充機制, 啟用埠安全擴充套件驅動程式 注:在配置ML2外掛之後,刪除type_drivers選項中的值可能導致資料庫不一致。
Linux bridge代理只支援VXLAN overlay網路。 在[ml2_type_flat]選項,將提供的虛擬網路配置為一個flat網路 在 [ml2_type_vxlan] 選項,為自助網路配置VXLAN網路識別符號範圍 在[securitygroup] 選項,啟用ipset提高安全組規則的效率
# vi /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
mechanism_drivers = linuxbridge,l2population
extension_drivers = port_security
[ml2_type_flat]
flat_networks = provider
[ml2_type_vxlan]
vni_ranges = 1:1000
[securitygroup]
enable_ipset = true
3) 配置Linux網橋代理 Linux bridge代理為例項構建layer-2(橋接和交換)虛擬網路基礎設施,並處理安全組。
編輯/etc/neutron/plugins/ml2/linuxbridge_agent.ini檔案 在[linux_bridge] 選項,啟用VXLAN overlay網路,配置處理overlay網路的物理網路介面的IP地址,並啟用layer-2填充, 在[securitygroup]選項中,啟用安全組並配置Linux bridge iptables防火牆驅動程式, 確保您的Linux作業系統核心支援網路橋接過濾器,通過驗證所有以下sysctl值設定為1 注:要啟用網路橋接支援,通常需要載入br_netfilter核心模組。
# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:ens33(網絡卡名)
[vxlan]
enable_vxlan = true
local_ip = 192.168.100.10(OVERLAY_INTERFACE_IP_ADDRESS)
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
# vi /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
# modprobe br_netfilter(使其生效)
# sysctl –p
用處理覆蓋網路的底層物理網路介面的IP地址替換OVERLAY_INTERFACE_IP_ADDRESS。該示例體系結構使用管理介面將流量隧道到其他節點。因此,將OVERLAY_INTERFACE_IP_ADDRESS替換為控制器節點的管理IP地址。
4)配置layer-3代理 layer-3 (L3)代理為自助虛擬網路提供路由和NAT服務。
編輯/etc/neutron/l3_agent.ini 檔案 在[DEFAULT]選項,配置Linux橋接介面驅動程式和外部網橋
# vi /etc/neutron/l3_agent.ini
[DEFAULT]
interface_driver = linuxbridge
5)配置DHCP代理 DHCP代理為虛擬網路提供DHCP服務。
編輯/etc/neutron/dhcp_agent.ini檔案 在[DEFAULT]選項,配置Linux橋接介面驅動程式,Dnsmasq DHCP驅動程式,並啟用隔離的元資料,以便提供者網路上的例項可以通過網路訪問元資料:
# vi /etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
6)配置元資料代理 元資料代理向例項提供配置資訊,比如憑證。
編輯/etc/neutron/metadata_agent.ini檔案 在[DEFAULT]選項,配置元資料主機和共享金鑰:
# vi /etc/neutron/metadata_agent.ini
[DEFAULT]
nova_medata_host = controller
metadata_proxy_shared_secret = 123456
7)配置計算服務以使用網路服務
注:必須安裝Nova計算服務來完成此步驟。 編輯/etc/nova/nova.conf檔案 在[neutron]選項,配置訪問引數,啟用元資料代理,配置secret:
# vi /etc/nova/nova.conf
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 123456
service_metadata_proxy = true
metadata_proxy_shared_secret = 123456
8)網路服務初始化指令碼需要一個符號連結/etc/neutron/plugin.ini指向ML2外掛配置檔案/etc/neutron/ plugins/ml2/ml2_con.ini
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
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 head" neutron
注:由於指令碼需要完整的伺服器和外掛配置檔案,所以稍後會出現網路資料庫填充。
3.重啟計算服務API
# systemctl restart openstack-nova-api.service
4.啟動網路服務,並配置它們在系統啟動時啟動。
# systemctl enable neutron-server.service \
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
neutron-metadata-agent.service
5.對於方案二,還可以啟用和啟動layer-3服務:
# systemctl enable neutron-l3-agent.service
# systemctl start neutron-l3-agent.service
安裝配置Compute節點
1.安裝元件
# yum install -y openstack-neutron-linuxbridge ebtables ipset
2.配置元件 1)編輯/etc/neutron/neutron.conf 檔案 網路公共元件配置包括身份驗證機制、訊息佇列和外掛。
在[database]選項,註釋掉任何連線選項,因為計算節點不直接訪問資料庫。 在[DEFAULT]選項,配置RabbitMQ訊息佇列訪問: 在[DEFAULT]和[keystone_authtoken]選項,配置身份服務訪問: 在[oslo_concurrency]選項,配置lock路徑
# vi /etc/neutron/neutron.conf
[DEFAULT]
transport_url = rabbit://openstack:[email protected]
auth_strategy = keystone
[keystone_authtoken]
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = 123456
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
2)配置Linux網橋代理 Linux bridge代理為例項構建layer-2層(橋接和交換)虛擬網路基礎設施,並處理安全組。
編輯/etc/neutron/plugins/ml2/linuxbridge_agent.ini檔案 在[linux_bridge]選項,將提供者的虛擬網路對映到提供者的物理網路介面: 在[vxlan]部分,啟用vxlan overlay網路,配置處理overlay網路的物理網路介面的IP地址,並啟用layer-2填充: 在[securitygroup]選項,啟用安全組並配置Linux bridge iptables防火牆驅動程式:
# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = provider:ens33
[vxlan]
enable_vxlan = true
local_ip = 192.168.100.20 (Compute節點的IPAddress)
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
3)確保您的Linux作業系統核心支援網路橋接過濾器,通過驗證所有以下sysctl值設定為1: 編輯/etc/sysctl.conf檔案,新增
# vi /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
# modprobe br_netfilter
# sysctl –p
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
注:要啟用網路橋接支援,通常需要載入br_netfilter核心模組。
4.配置計算服務以使用網路服務
編輯/etc/nova/nova.conf檔案 在[neutron]選項,配置訪問引數
# vi /etc/nova/nova.conf
[neutron]
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = 123456
5.重新啟動計算服務
# systemctl restart openstack-nova-compute.service
6.啟動Linux bridge代理,並將其配置為在系統啟動時啟動:
# systemctl enable neutron-linuxbridge-agent.service
# systemctl start neutron-linuxbridge-agent.service
四、驗證Neutron操作
# . admin-openrc
# openstack network agent lis
# openstack extension list --network