OpenStack網絡服務

網絡服務簡介mysql

OpenStack網絡(neutron)容許您建立和將其餘OpenStack服務管理的接口設備附加到網絡中。插件能夠適應不一樣的網絡設備和軟件,爲OpenStack的架構和部署提供靈活性。linux

它包括如下組件:sql

neutron-server:接受並將API請求路由到相應的OpenStack網絡插件以進行操做。數據庫

OpenStack Networking plug-ins and agent即插即用端口,建立網絡或者子網,提供IP地址。這些插件和代理根據特定雲使用的供應商和技術而有所不一樣。OpenStack網絡附帶插件和代理有思科虛擬和物理交換機,NEC OpenFlow產品,Open vSwitchLinux網橋和VMwareNSX產品。常見的代理是L3layer 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-serviceFWaaS)和load-balancer-as-a-servicelbaas)插件是可使用的。

controller節點上部署neutron

前提準備工做:

在配置neutron以前,你必需要建立一個數據庫、service credentialsAPI 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

wKioL1nIeGXSrPWoAABv7zyvYYo815.png-wh_50

添加neutron用戶到admin角色,次命令沒有任何輸出

[root@controller /]# openstack role add --project service --user neutron admin

建立neutron服務項

wKioL1nIeIWSVmpnAABpuVq5bfY491.png-wh_50

建立網絡服務API endpoints

[root@controller /]# openstack endpoint create --region RegionOne network public http://controller:9696

wKiom1nIeNuxnVHEAACUPvsJvvM019.png-wh_50

[root@controller /]# openstack endpoint create --region RegionOne network internal http://controller:9696

wKioL1nIeOvDSFd7AACWpcNC56o205.png-wh_50

[root@controller /]# openstack endpoint create --region RegionOne network admin http://controller:9696

wKiom1nIeT_iqkQMAACVcA2MhkE658.png-wh_50

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

wKiom1nIeX_RBQ6HAAA8OC7cQtA562.png-wh_50

[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

wKiom1nIebLhD5AJAABiGhyW7bE690.png-wh_50

[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

wKiom1nIecPCUOO2AABNGyxN-PA114.png-wh_50

[oslo_concurrency]部分配置鎖定路徑

[oslo_concurrency]  添加

lock_path = /var/lib/neutron/tmp

wKioL1nIeZ3hW7l4AAAfJ-_Z814415.png-wh_50

配置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

wKioL1nIecWis3R5AAAa5ncRRUU474.png-wh_50

[ml2]部分激活Linux bridge layer-2 population mechanisms:

mechanism_drivers = linuxbridge,l2population

[ml2]部分激活port security擴展驅動

extension_drivers = port_security

wKioL1nIedTxcRBAAAAt92tkpuM026.png-wh_50

[ml2_type_flat]部分配置provider virtual network 做爲a flat network:

[ml2_type_flat]

flat_networks = provider

wKiom1nIeh7A5k6LAAAUuCSkPts725.png-wh_50

[ml2_type_vxlan]部分配置vni範圍

vni_ranges = 1:1000

wKioL1nIefjTEhwRAAASiX-Kke8386.png-wh_50

[securitygroup]部分配置激活ipset來增長安全組規則效率

[securitygroup]

enable_ipset = true

wKiom1nIekHDbaMuAAAUpIiWDaA990.png-wh_50

配置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

wKioL1nIeiWysilqAAArPIDa9uo827.png-wh_50

PROVIDER_INTERFACE_NAME替換爲控制節點外網網卡名字:eno16777736

例如:physical_interface_mappings = provider:eno16777736

wKiom1nIenzSGMJSAAAoKwQJCGo125.png-wh_50

[vxlan]部分配置啓用VXLAN覆蓋網絡,配置處理覆蓋網絡的物理網絡接口的IP地址,並啓動L2 population

[vxlan]

enable_vxlan = true

local_ip = 10.0.0.11

l2_population = true

wKiom1nIerCAkxB4AAAgYQscLn8802.png-wh_50

OVERLAY_INTERFACE_IP_ADDRESS修改成控制節點內部管理接口IP地址,10.0.0.11

[securitygroup]部分激活安全組並配置Linux防火牆驅動

wKioL1nIeoWSGbzFAAA5AN8bDng519.png-wh_50

配置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

wKiom1nIeyGDyHEoAAAwrBNzNKs081.png-wh_50

配置元數據代理

元數據代理將配置信息(如憑據)提供給實例。

配置/etc/neutron/metadata_agent.ini配置文件並完成如下配置:

[root@controller /]# vim /etc/neutron/metadata_agent.ini

DEFAULT]

nova_metadata_ip = controller

metadata_proxy_shared_secret = METADATA_SECRET

wKiom1nIe1DRoFKSAAAwrBNzNKs095.png-wh_50

配置計算服務使用網絡服務

配置/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

wKiom1nIe8WRbGRwAABzGuQioiA715.png-wh_50

完成配置

 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

wKioL1nIe7WTaabEAACVIEbALCA387.png-wh_50

二、重啓計算服務

[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

wKioL1nIfOWgcdH2AAANJP9z2GA925.png-wh_50

[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

wKiom1nIfZ3RrUvaAABi6PCLBko811.png-wh_50

一、[oslo_concurrency]配置鎖定路徑

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp

wKiom1nIfazyNC7OAAAgNgMPFDQ163.png-wh_50

配置自服務網絡類型的網絡選項

 配置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

wKioL1nIfamBrAzqAAAm9bkA3F4943.png-wh_50

eno16777736E替換爲計算節點外網網卡名字:

[vxlan]部分配置啓用VXLAN覆蓋網絡,配置處理覆蓋網絡的物理網絡接口的IP地址,並啓動L2 population

[vxlan]

enable_vxlan = true

local_ip = 10.0.0.31

l2_population = true

wKioL1nIfgKjN4aUAAAiVARR-3o842.png-wh_50

OVERLAY_INTERFACE_IP_ADDRESS修改成計算節點內部管理接口IP地址,本實驗爲10.0.0.31

[securitygroup]部分激活安全組並配置Linux防火牆驅動

[securitygroup]

enable_security_group = true

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

wKioL1nIfhPzVGn3AAA3SrqC6S4408.png-wh_50

配置計算服務使用網絡服務

配置/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

wKioL1nIfi3A3jHCAAAlQFcBHfY483.png-wh_50

完成配置

 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

wKiom1nIfpXyqyzGAADF1Rxjnzw270.png-wh_50

dashboard在控制節點 Cinder安裝 後期繼續更新