網絡服務簡介mysql
OpenStack網絡(neutron)容許您建立和將其餘OpenStack服務管理的接口設備附加到網絡中。插件能夠適應不一樣的網絡設備和軟件,爲OpenStack的架構和部署提供靈活性。linux
它包括如下組件:sql
neutron-server:接受並將API請求路由到相應的OpenStack網絡插件以進行操做。數據庫
OpenStack Networking plug-ins and agent:即插即用端口,建立網絡或者子網,提供IP地址。這些插件和代理根據特定雲使用的供應商和技術而有所不一樣。OpenStack網絡附帶插件和代理有思科虛擬和物理交換機,NEC OpenFlow產品,Open vSwitch,Linux網橋和VMware的NSX產品。常見的代理是L3(layer 3)、DHCP和插件代理(plug-in agent)。vim
Messaging queue:被大多數的openstack網絡安裝使用,用於在neutron server和各類agent之間路由信息。也能夠做爲數據庫存儲特定插件的網絡狀態。api
OpenStack網絡服務主要與OpenStack計算服務交互,爲其實例提供網絡和鏈接。安全
Neutron網絡概念bash
OpenStack的網絡(neutron)在你的OpenStack環境中管理全部虛擬網絡基礎設施(VNI)的網絡方面,並負責到物理網絡基礎設施(PNI)的接入。OpenStack網絡在項目(projects)中可以建立高級的虛擬網絡拓撲,其中可能包括諸如防火牆、負載均衡器和虛擬專用網(×××)等服務。網絡
網絡提供網絡、子網和路由器做爲抽象的對象。每一個抽象都有模仿其物理對應的功能:網絡包含子網,路由器在不一樣的子網和網絡之間路由通訊。架構
任何給定的網絡設置至少有一個外部網絡。與其餘網絡不一樣,外部網絡不單單是一個虛擬定義的網絡。相反,它表明一個到OpenStack安裝以外可訪問的物理外部網絡的一部分。外部網絡上的IP地址能夠由任何物理上的外部網絡訪問。
除了外部網絡,任何網絡都有一個或多個內部網絡。這些軟件定義的網絡直接鏈接到VM。只有給定的內部網絡中的VM,或經過相似於路由器的接口鏈接的子網,才能直接訪問鏈接到該網絡的VM。
若是從外部網絡訪問VM,反之亦然,網絡之間須要路由器。每一個路由器都有一個網關,鏈接到外部網絡,有一個或多個接口鏈接到內部網絡。與物理路由器同樣,子網能夠訪問鏈接到同一路由器上的其餘子網上的機器,而且能夠經過路由器的網關訪問外部網絡。
此外,能夠將外部網絡上的IP地址分配到內部網絡的端口。您能夠將外部網絡IP地址與端口關聯到VM。經過這種方式,外部網絡上的實體能夠訪問VM。
網絡也支持安全組。安全組使管理員能夠按組定義防火牆規則。VM能夠屬於一個或多個安全組,網絡在這些安全組中應用規則來阻止或容許端口,端口範圍,或者是虛擬機的流量類型。
網絡使用的每一個插件都有本身的概念。這些概念的理解能夠幫助您設置網絡。全部網絡安裝都使用核心插件和安全組插件(或只是非安全組插件)。此外,firewall-as-a-service(FWaaS)和load-balancer-as-a-service(lbaas)插件是可使用的。
在controller節點上部署neutron
前提準備工做:
在配置neutron以前,你必需要建立一個數據庫、service credentials和API endpoints
1、建立數據庫,完成如下配置
鏈接到數據庫
mysql -u root -p 123456
建立neutron數據庫
MariaDB [(none)]> create database neutron; Query OK, 1 row affected (0.09 sec)
建立數據庫用戶並賦予權限
MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'localhost' identified by '123456'; Query OK, 0 rows affected (0.16 sec) MariaDB [(none)]> grant all privileges on neutron.* to 'neutron'@'%' identified by '123456'; Query OK, 0 rows affected (0.16 sec)
2、賦予admin用戶執行命令行環境權限
[root@controller /]# source admin-openrc
3、爲了建立service credentials,完成如下步驟:
建立neutron用戶
[root@controller /]# openstack user create --domain default --password-prompt neutron
添加neutron用戶到admin角色,次命令沒有任何輸出
[root@controller /]# openstack role add --project service --user neutron admin
建立neutron服務項
建立網絡服務API endpoints。
[root@controller /]# openstack endpoint create --region RegionOne network public http://controller:9696
[root@controller /]# openstack endpoint create --region RegionOne network internal http://controller:9696
[root@controller /]# openstack endpoint create --region RegionOne network admin http://controller:9696
在controller節點上安裝Self-service networks
安裝組件:
[root@controller /]# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y
配置服務組件:
編輯配置文件/etc/neutron/neutron.conf並完成如下設置
在[database]部分配置到數據庫的訪問鏈接:
[root@controller /]# vim /etc/neutron/neutron.cnf
[database] 添加
connection = mysql+pymysql://neutron:123456@controller/neutron
在[DEFAULT]部分配置:
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
在[DEFAULT]部分配置到RabbitMQ的訪問:
[DEFAULT]
transport_url = rabbit://openstack:123456@controller
[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
在[DEFAULT]和[nova]部分配置網絡去通知計算服務網絡拓撲發生的變化
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
[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]部分配置鎖定路徑
[oslo_concurrency] 添加
lock_path = /var/lib/neutron/tmp
配置ML2插件
ML2插件使用Linux網橋機制來構建instance的虛擬網絡基礎架構。
編輯/etc/neutron/plugins/ml2/ml2_conf.ini文件來完成如下設置:
[root@controller /]# vim /etc/neutron/plugins/ml2/ml2_conf.ini
[ml2]
type_drivers = flat,vlan,vxlan
在[ml2]部分激活VXLAN self-service networks
[ml2]
tenant_network_types = vxlan
在[ml2]部分激活Linux bridge 和layer-2 population mechanisms:
mechanism_drivers = linuxbridge,l2population
在[ml2]部分激活port security擴展驅動
extension_drivers = port_security
在[ml2_type_flat]部分配置provider virtual network 做爲a flat network:
[ml2_type_flat]
flat_networks = provider
在[ml2_type_vxlan]部分配置vni範圍
vni_ranges = 1:1000
在[securitygroup]部分配置激活ipset來增長安全組規則效率
[securitygroup]
enable_ipset = true
配置Linux網橋代理
Linux網橋代理構建2層虛擬網絡架構並處理安全組
配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件並完成如下配置:
[root@controller /]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
在[linux_bridge]部分配置提供商虛擬網絡和提供商物理網絡的映射
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
PROVIDER_INTERFACE_NAME替換爲控制節點外網網卡名字:eno16777736
例如:physical_interface_mappings = provider:eno16777736
在[vxlan]部分配置啓用VXLAN覆蓋網絡,配置處理覆蓋網絡的物理網絡接口的IP地址,並啓動L2 population
[vxlan]
enable_vxlan = true
local_ip = 10.0.0.11
l2_population = true
將OVERLAY_INTERFACE_IP_ADDRESS修改成控制節點內部管理接口IP地址,10.0.0.11。
在[securitygroup]部分激活安全組並配置Linux防火牆驅動
配置3層代理
3層代理提供路由和NAT服務
編輯配置文件/etc/neutron/l3_agent.ini並完成如下設置:
在[DEFAULT]部分配置Linux網橋驅動和外部網絡橋接
[root@controller /]# vim /etc/neutron/l3_agent.ini
Inteface_driver - linuxbridge 去掉#號
配置DHCP代理
DHCP代理爲虛擬網絡提供DHCP服務
配置/etc/neutron/dhcp_agent.ini文件完成如下設置:
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
配置元數據代理
元數據代理將配置信息(如憑據)提供給實例。
配置/etc/neutron/metadata_agent.ini配置文件並完成如下配置:
[root@controller /]# vim /etc/neutron/metadata_agent.ini
DEFAULT]
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET
配置計算服務使用網絡服務
配置/etc/nova/nova.conf文件完成如下配置,主要是配置訪問參數、激活元數據代理及配置共享密碼
[root@controller /]# vim /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
完成配置
1、建立網絡初始化腳本連接文件
[root@controller /]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
二、初始生成數據庫
[root@controller /]# 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
二、重啓計算服務
[root@controller /]# systemctl restart openstack-nova-api.service
二、啓動網絡服務並設置開機啓動
[root@controller /]# systemctl enable neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service [root@controller /]# systemctl start neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service
若是是自服務網絡,還須要啓動3層服務:
[root@controller /]# systemctl enable neutron-l3-agent.service [root@controller /]# systemctl start neutron-l3-agent.service
在compute節點上部署neutron
計算節點處理實例的連通性和安全性。
安裝組件
[root@compute1 ~]# yum install openstack-neutron-linuxbridge ebtables ipset -y
配置通用部分:
通用配置部分包含認證機制、消息隊列和插件
一、編輯/etc/neutron/neutron.conf文件完成如下設置
在[database]部分註釋掉全部的鏈接設置,由於計算節點不須要直接訪問數據庫
在[DEFAULT] 部分配置和消息隊列的鏈接
[root@compute1 /]# vim /etc/neutron/neutron.conf
DEFAULT]
transport_url = rabbit://openstack:123456@controller
在[DEFAULT] 和[keystone_authtoken]部分配置身份驗證服務訪問
[DEFAULT]
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]配置鎖定路徑
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
配置自服務網絡類型的網絡選項
配置linux網橋代理
Linux網橋代理構建2層虛擬網絡架構並處理安全組
配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件並完成如下配置:
在[linux_bridge]部分配置提供商虛擬網絡和提供商物理網絡的映射
[root@compute1 ~]# vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
[linux_bridge]
physical_interface_mappings = eno16777736
eno16777736E替換爲計算節點外網網卡名字:
在[vxlan]部分配置啓用VXLAN覆蓋網絡,配置處理覆蓋網絡的物理網絡接口的IP地址,並啓動L2 population
[vxlan]
enable_vxlan = true
local_ip = 10.0.0.31
l2_population = true
將OVERLAY_INTERFACE_IP_ADDRESS修改成計算節點內部管理接口IP地址,本實驗爲10.0.0.31。
在[securitygroup]部分激活安全組並配置Linux防火牆驅動
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置計算服務使用網絡服務
配置/etc/nova/nova.conf文件完成如下配置。在[neutron]部分配置訪問參數
[root@compute1 ~]# vim /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
完成配置
1、重啓計算服務
[root@compute1 ~]# systemctl restart openstack-nova-compute.service
2、啓動Linux網橋代理並設置開機啓動
[root@compute1 ~]# systemctl enable neutron-linuxbridge-agent.service [root@compute1 ~]# systemctl start neutron-linuxbridge-agent.service
檢查操做:
檢查成功啓動的neutron代理,在控制節點
[root@controller /]# source admin-openrc
[root@controller /]# openstack network agent list
dashboard在控制節點 Cinder安裝 後期繼續更新