neutron組件概述
neutron核心組件向用戶提供了雲平臺中定義網絡的功能,它負責管理虛擬網絡組件,包括Networks,Switches,Subnets和Routers,同時也會提供一些高級網絡服務,如Load Balance、Firewall和VPN。neutron中的組件一般分爲如下4種:
1.Server:對外提供API,管理數據庫等;
2.Plugins:管理neutron種的各種agents;
3.Agents:向虛擬機提供二層和三層的網絡聯通,處理邏輯網絡和物理網絡之間的轉換、同時也提供一些拓展服務。包括提供二層網絡聯通服務的Layer 2 agents,比如Linux Bridge和OVS;提供三層IP和路由服務的Layer 3 agents,比如L3和DHCP;提供一些雜項服務的Miscellaneous agents,比如Metadata
4.Services:提供高級網絡服務,包括提供三層路由功能的Routing Service;提供VPN功能的VPNaaS;提供負載均衡器功能的LBaas,一般是基於HAProxy實現;提供防火牆服務的FWaas,一般是基於iptables實現。
neutron部署中一般部署三種節點,即控制節點、網絡節點和計算節點。其中控制節點一般會部署Neutron Server和Layer 2 agent組件,網絡節點一般會部署Layer 2 agent和Layer 3 agent。通常情況下,控制節點和網絡節點會同時部署在同一個節點上,所以我們將控制節點和網絡節點都部署在控制節點所在的主機上。計算節點部署Layer 2 agent。本次部署所採用的Layer 2 agent爲Linux Bridge。
控制節點的部署
創建neutron數據庫,用戶,服務和endpoints
創建並配置neutron數據庫
mysql -u root -pwwwwww
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';
創建neutron用戶並添加admin角色
openstack user create --domain default --password-prompt neutron
openstack role add --project service --user neutron admin
創建neutron服務
openstack service create --name neutron --description "OpenStack Networking" network
創建neutron服務 API endpoints
openstack endpoint create --region RegionOne network public http://控制節點主機名:9696
openstack endpoint create --region RegionOne network internal http://控制節點主機名:9696
openstack endpoint create --region RegionOne network admin http://控制節點主機名:9696
安裝組件和進行網絡配置
官網安裝教程提供了兩種網絡架構的安裝配置方法,第一種爲 Provider network,第二種爲Self-service network。Provider network屬於最簡單的網絡架構,只允許將實例掛載到外部網絡上,無法提供私有網絡,路由,浮動ip等功能。只有admin用戶或者其他特權用戶能夠操作網絡。Self-service network相比較Provider network來說增加了能夠將實例掛載到私有網絡的3層服務,demo用戶和其他非特權用戶能夠創建管理通過路由器連接到外部網絡的私有網絡。本教程採用第二種網絡配置,具體配置如下:
安裝組件
yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
配置Server組件
編輯/etc/neutron/neutron.conf
cp /etc/neutron/neutron.conf /etc/neutron/neutron.conf.bak
vim /etc/neutron/neutron.conf
以下是/etc/neutron/neutron.conf中的內容
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
transport_url = rabbit://openstack:wwwwww@控制節點主機名
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[database]
connection = mysql://neutron:neutron@控制節點主機名/neutron
[keystone_authtoken]
www_authenticate_uri = http://控制節點主機名:5000
auth_url = http://控制節點主機名:35357
memcached_servers = 控制節點主機名:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron
[nova]
auth_url = http://控制節點主機名:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = nova
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
配置ML2 插件
ML2 plug-in是一個框架,允許OpenStack網絡同時使用在複雜的現實世界數據中心中發現的各種第2層網絡技術。
編輯/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
配置Linux bridge agent
Linux bridge agent爲實例創建2層虛擬網絡和提供安全組操作
編輯/etc/neutron/plugins/ml2/linuxbridge_agent.ini,其內容如下:
[linux_bridge]
physical_interface_mappings = provider:管理ip對應的物理網卡名稱(用ifconfig查看)
[vxlan]
enable_vxlan = true
local_ip = 控制節點ip
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置L3 agent
L3 agent爲Self-service虛擬網絡提供路由和nat地址轉換服務,其配置文件/etc/neutron/l3_agent.ini內容如下:
[DEFAULT]
interface_driver = linuxbridge
配置DHCP agent
DHCP agent爲虛擬網絡提供DHCP服務,其配置文件/etc/neutron/dhcp_agent.ini內容如下:
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
配置metadata agent
metadata agent爲neutron提供配置信息,其配置文件/etc/neutron/metadata_agent.ini的配置如下所示:
[DEFAULT]
nova_metadata_host = 控制節點主機名
metadata_proxy_shared_secret = metadata密碼
修改nova配置來使用網絡服務
修改/etc/nova/nova.conf中下面的內容來使用網絡服務
[neutron]
# ...
auth_url = http://控制節點主機名:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron
service_metadata_proxy = true
metadata_proxy_shared_secret = metadata密碼
完成安裝並啓動控制節點網絡服務
網絡服務的初始化腳本需要一個符號鏈接/etc/neutron/plugin.ini來指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini,需要建立如下符號鏈接:
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
同步數據庫
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
重啓控制節點計算服務
systemctl restart openstack-nova-api.service
開啓控制節點網絡服務
systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service
systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service neutron-l3-agent.service
計算節點的部署
計算節點主要負責處理虛擬機實例的網絡連接和安全組,其安裝配置如下所示:
安裝組件並進行通用組件配置
安裝組件
yum install openstack-neutron-linuxbridge ebtables ipset -y
修改通用組件配置文件/etc/neutron/neutron.conf,其內容如下所示:
[DEFAULT]
transport_url = rabbit://openstack:wwwwww@控制節點主機名
auth_strategy = keystone
[keystone_authtoken]
www_authenticate_uri = http://控制節點主機名:5000
auth_url = http://控制節點主機名:35357
memcached_servers = 控制節點主機名:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
配置Linux bridge agent
計算節點的Linux bridge agent配置文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini的配置內容如下所示:
[linux_bridge]
physical_interface_mappings = provider:控制節點的管理ip對應的網卡名稱
[vxlan]
enable_vxlan = true
local_ip = 本計算節點ip地址
l2_population = true
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
修改nova配置來使用網絡服務
修改/etc/nova/nova.conf中下面的內容來使用網絡服務
[neutron]
# ...
auth_url = http://控制節點主機名:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron
重啓計算節點計算服務並啓動網絡服務
systemctl restart openstack-nova-compute.service
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
neutron服務官方安裝文檔:https://docs.openstack.org/neutron/train/install/compute-install-rdo.html