部署neturon控制節點和計算節點 組件 (PaaS+IaaS)
1.網絡服務 neutron組件服務 : 給雲環境提供虛擬網絡信息
1.Neutron概述 功能
雲計算時代數據中心物理網絡存在的問題
數據中心現有的物理網絡,無法承載雲計算機的超大規模
數據中心現有的物理網絡,無法滿足雲計算SDN的要求
Neutron 為整個 OpenStack 環境提供網絡支持,包括二層交換,三層路由,負載均衡,防火牆和 VPN 等。Neutron 提供了一個靈活的框架,通過配置,無論是開源還是商業軟件都可以被用來實現這些功能。
2.Neutron網絡基本概念
Network
網絡 192.168.0.0/24 廣播域
網絡類型local flat vlan vxlan gre
Subnet
子網(給實例分配IP)
Port
Port映射成為實例虛擬網卡
3Neutron組件構成
Neutron架構
neutron-server
neutron-plugin
neutron-agent
network provider
The queue
SQL database
組件解釋
1.neutron-server :接收處理網絡請求(vm),網絡類型、網絡的創建技術
2.neutron agrnt:調用network provider技術,具體實現網絡創建
3.queue:消息隊列,實現服務內部的通信
4.neutron lpugin:接收neutron-agent,寫入數據庫,並實現網絡規划,
lneutron-plugin插件包括兩種:core plugin和service plugin
5.neutron database:數據庫,存儲數據
6.network provider:網絡位置訪問接口
4.Neutron各組件協調工作
以創建一個 VLAN100 的 network 為例,假設 network provider 是 linux bridge,
流程如下:
Neutron Server 接收到創建 network 的請求,通過 Message Queue(RabbitMQ)通知已注冊的 Linux Bridge Plugin。
Plugin 將要創建的 network 的信息(例如名稱、VLAN ID等)保存到數據庫中,並通過 Message Queue 通知運行在各節點上的 Agent。
Agent 收到消息后會在節點上的物理網卡(比如 eth2)上創建 VLAN 設備(比如 eth2.100),並創建 bridge (比如 brqXXX) 橋接 VLAN 設備。
5.Neutron物理部署方案
neutron由很多子服務組成,同時我們也知道OpenStack是一個分布式系統,對於neutron這些服務會部署在三類節點上,控制節點、網絡節點和計算節點,計算節點上安裝了二層neutron-agent,供虛擬機進行二層通信,各neutron-agent放在網絡節點上,其他子服務則是放在控制節點上的。
2.網絡服務neutron安裝與配置
1.准備實驗用的物理環境
考慮幾個問題:
需要幾個節點
如何分配節點的角色
節點上部署哪些服務
配幾個網卡
物理網絡如何連接
配置多網卡區分不同類型的網絡數據
OpenStack 至少包含下面幾類網絡流量
Management
API
VM
External
2.Neutron控制節點安裝與配置
創建neutron數據庫並授權
注冊neutron在keystone認證相關信息
安裝neutron相關軟件包
修改neutron配置文件
同步neutron數據庫
啟動neutron相關服務
驗證網絡服務
3.Neutron計算節點安裝與配置
安裝網絡服務相關軟件包
修改配置文件
啟動服務
3.案例 控制節點 安裝neutron組件案例 修改配置文件
1.建庫授權
mysql -u root -p123
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'controller' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123';
. admin.sh來源admin憑據來訪問僅管理員CLI命令
openstack user create --domain default --password-prompt neutron創建neutron用戶
openstack role add --project service --user neutron adminadmin向neutron用戶添加角色:
openstack service create --name neutron --description "OpenStack Networking" network創建neutron服務實體
創建網絡服務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
2.選擇第二種方案 安裝ml2和linuxbridge 軟件包 修改四處配置文件
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables安裝的組件
1. 配置服務器組件
vim /etc/neutron/neutron.conf
1.
[database]
connection = mysql+pymysql://neutron:123@controller/neutron
2.
[DEFAULT]
core_plugin = ml2
service_plugins = router
allow_overlapping_ips = true
transport_url = rabbit://openstack:123@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
3.
[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 = 123
4.
[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 = 123
5.
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
2.
vim /etc/neutron/plugins/ml2/ml2_conf.ini
1.
[ml2]
type_drivers = flat,vlan,vxlan啟用平面,VLAN和VXLAN網絡:
tenant_network_types = vxlan啟用VXLAN自助服務網絡:
mechanism_drivers = linuxbridge,l2population啟用Linux橋接器和第2層填充機制
extension_drivers = port_security啟用端口安全擴展驅動程序
2.
[ml2_type_flat]
flat_networks = provider
3.
[ml2_type_vxlan]
vni_ranges = 1:1000
4.
[securitygroup]
enable_ipset = true
3.
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
1.
[linux_bridge]
physical_interface_mappings = provider:ens38
2.
[vxlan]
enable_vxlan = true
local_ip = 192.168.10.10
l2_population = true
3.
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
4.
vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
vim /etc/neutron/l3_agent.ini
[DEFAULT]
interface_driver = linuxbridge
vim /etc/neutron/dhcp_agent.ini
[DEFAULT]
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true
3.讀取打印內核參數
sysctl -p 如果未啟動則重啟服務即可
4.修改2處配置文件
1.
vim /etc/neutron/metadata_agent.ini
nova_metadata_host = controller
metadata_proxy_shared_secret = 123
2.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 = 123
service_metadata_proxy = true
metadata_proxy_shared_secret = 123
5.制作軟連接,讀取數據庫 啟動服務
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
mysql -uroot -p123登錄驗證
show databases;
use neutron
show tables;
systemctl restart openstack-nova-api.service
systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
systemctl status neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service
systemctl enable neutron-l3-agent.service
systemctl start neutron-l3-agent.service
4.案例計算節點 安裝neturon
1.計算節點安裝軟件包 修改配置文件
yum install openstack-neutron-linuxbridge ebtables ipset -y
vim /etc/neutron/neutron.conf
1.
[DEFAULT]
transport_url = rabbit://openstack:123@controller
auth_strategy = keystone
2.
[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 = 123
3.
[oslo_concurrency]
lock_path = /var/lib/neutron/tmp
2.選擇第二種方案,自助服務網絡 配置,修改配置文件
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
1.
[linux_bridge]外網
physical_interface_mappings = provider:ens38
2.
[vxlan]租戶網絡
enable_vxlan = true
local_ip = 192.168.10.20
l2_population = true
3.
[securitygroup]
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
3.支持功能 修改內核參數
vim /etc/sysctl.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
sysctl -p
4.修改nova主配置文件 增加neutron服務組件配置 啟動服務
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 = 123
systemctl restart openstack-nova-compute.service
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
systemctl status neutron-linuxbridge-agent.service
5.控制節點進行 驗證
https://docs.openstack.org/neutron/queens/install/verify.html驗證網址
openstack network agent list控制節點查看agent列表
5.控制節點安裝dashboard服務組件 修改配置文件
https://docs.openstack.org/horizon/queens/install/install-rdo.html網址
yum install openstack-dashboard -y安裝軟件包
vim /etc/openstack-dashboard/local_settings修改第一處配置
1.
OPENSTACK_HOST = "controller"
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
另開窗口 查看user是否更改
. admin.sh
openstack role list
2.
ALLOWED_HOSTS = ['*']
3.直接復制粘貼就行
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
}
}
4.
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
}
5.
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
6.
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"
7.默認即可
OPENSTACK_NEUTRON_NETWORK = {
'enable_router': True,
'enable_quotas': True,
'enable_ipv6': True,
'enable_distributed_router': False,
'enable_ha_router': False,
'enable_fip_topology_check': True,
8.默認即可
TIME_ZONE = "UTC"
2.修改第二處配置文件
vim /etc/httpd/conf.d/openstack-dashboard.conf 增加這一行
WSGIApplicationGroup %{GLOBAL}
systemctl restart httpd.service memcached.service重啟服務,查看狀態
systemctl status httpd.service memcached.service
配置完成
6.簡答實驗
1.簡答題
Neutron網絡服務的主要內部組件有哪些?
Neutron-plugin的作用是什么?
實驗過程中都用到了哪幾種neutron-agent?分別的作用是什么?
同一套雲環境中,可以有多個network provider嗎?是怎么實現的?
Ml2的作用是什么?網絡類型如何定義?不同的網絡類型分別適用於哪些場景?
Provider network和tenent network分別指什么?
2.實驗題
網絡服務在控制節點和計算節點的安裝與配置。