openstack學習筆記7-網絡服務安裝與配置


目錄:

0 實驗環境
1 概述
2 控制節點配置
2.1 先決條件
2.2 安裝和配置組件
2.3 配置數據代理
2.4 配置網絡服務
2.5 完成安裝
3 創建網絡
4 計算節點配置
4.1 服務配置
4.2 網絡配置
4.3 配置計算服務使用網絡服務
4.4 配置服務狀態
5 驗證


 0 實驗環境

openstack版本:train

實驗平台:vmware workstation 15.1

實驗虛擬機:控制節點(centos 7.6,2核,4G內存),計算節點(centos 7.6,2核,2G內存)

虛擬機網絡:

網絡地址范圍:管理網絡192.168.223.0/24,營運商網絡192.168.0.0/24

控制節點

網卡1:ens33,管理網絡,192.168.223.11/24

網卡2:ens37,營運商網絡

計算節點

網卡1:ens33,管理網絡,192.168.223.31/24

網卡2:ens37,營運商網絡

操作節點:控制節點和計算節點

本文涉及的帳號密碼:

mysql數據庫管理員:root:samplepass

neutron數據庫用戶:neutron:dbpass

nova服務用戶:nova:npass

元數據metadata共享密碼:msecret

1 概述

Openstack的網絡服務neutron,可以適應不同的網絡設備和軟件,為OpenStack架構和部署提供靈活性。

網絡服務主要與OpenStack計算服務交互,為其實例提供網絡和連接。

網絡服務是一種虛擬化的網絡,通過各種插件(plugin),提供網絡基礎設施(VNI)的方方面面(如子網,交換路由等),並提供各種高級功能(如防火牆、vpn等)。

2 控制節點配置

Openstack的網絡服務提供兩種架構,一種是虛擬機的網絡通過通過與節點網絡接口橋接,直接訪問外部網絡,不能提供如虛擬防火牆等高級功能;另一種是虛擬機使用網絡服務提供的網絡,訪問外部網絡需要經過NAT地址轉換。

2.1 先決條件

a)數據庫配置

# mysql -u root -p    //使用root用戶登錄
MariaDB [(none)]> CREATE DATABASE neutron;    //創建數據庫neutron
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'dbpass'; //設置neutron用戶的本地登錄權限和密碼 
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'dbpass'; //設置neutron用戶的遠程登錄權限和密碼
MariaDB [(none)]> quit;

b)用戶和權限配置

# . admin-openrc
# openstack user create --domain default --password-prompt neutron    //新建用戶neutron,並設置密碼,我設置的是npass
# openstack role add --project g_service --user neutron admin    //設置用戶neutron在項目g_service中,角色為admin
# openstack service create --name neutron --description "OpenStack Networking" network    //為openstack創建網絡服務

 

 

 c)服務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.2 安裝和配置組件

網絡結構的不同,安裝和配置方式有區別,本文演示第一種,直接橋接到外部網絡的方式。

外部網絡為:192.168.0.0/24,網關:192.168.0.1,dns:61.139.2.69

a) 安裝軟件包

# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables

b)編輯配置文件/etc/neutron/neutron.conf

[DEFAULT]節點:

[DEFAULT]
# ...
core_plugin = ml2
service_plugins =
transport_url = rabbit://openstack:rabbitpass@controller
auth_strategy = keystone
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[database]節點:

[database]
#配置數據庫連接字符串,用戶名neutron,密碼dbpass
connection = mysql+pymysql://neutron:dbpass@controller/neutron

[keystone_authtoken]節點:

[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = g_service username = neutron password = npass

[nova]節點:

[nova]
# 該節點在配置文件中沒有,手動添加到最后
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = g_service
username = nova
password = npass

[oslo_concurrency]節點:

[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp

c)配置2層模塊插件(ML2 plugin)

編輯配置文件/etc/neutron/plugins/ml2/ml2_conf.ini,寫入如下內容

[ml2]
#文件里沒有該節點,手工增加
type_drivers = flat,vlan
tenant_network_types =
mechanism_drivers = linuxbridge
extension_drivers = port_security

[ml2_type_flat]
#文件里沒有該節點,手工增加
flat_networks = provider

[securitygroup]
#文件里沒有該節點,手工增加
enable_ipset = true

d)配置linux橋接代理

編輯配置文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
#配置橋接的物理網卡,在這里我的第二個網卡是ens37,第一個網卡用於管理網絡
physical_interface_mappings = provider:ens37

[vxlan]
#禁止xvxlan模式
enable_vxlan = false

[securitygroup]
# 開啟安全組,配置防火牆驅動
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

e)檢查橋接包過濾模塊:

# sysctl net.bridge.bridge-nf-call-iptables    //如果系統不支持就會出現下面的提示
sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables: No such file or directory
# sysctl net.bridge.bridge-nf-call-iptables      //正常會如下顯示值為1
net.bridge.bridge-nf-call-iptables = 1

正常情況下,安裝過程會自動配置該模塊,但是如果重啟系統后,還是沒有正常,可以做如下配置:

# modprobe br_netfilter    //臨時啟用
# echo br_netfilter > /etc/modules-load.d/openstack.conf    //在/etc/modules-load.d目錄下創建文件,寫入開機自動加載的模塊名

f)配置dhcp代理

dhcp代理為虛擬網絡提供dhcp服務。

編輯/etc/neutron/dhcp_agent.ini:

[DEFAULT]
# 使用dnsmasq來提供dhcp服務
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

2.3 配置數據代理

編輯配置文件/etc/neutron/metadata_agent.ini[DEFAULT]節點:

[DEFAULT]
# 配置元數據主機和共享密碼
nova_metadata_host = controller
metadata_proxy_shared_secret = msecret

2.4 配置網絡服務

編輯配置文件/etc/nova/nova.conf,在[neutron]節點設置相應參數:

[neutron]
# 注意neutron的密碼和metadata的共享密碼使用之前的操作中設置的密碼
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = g_service
username = neutron
password = npass
service_metadata_proxy = true
metadata_proxy_shared_secret = msecret

2.5 完成安裝

a)創建配置文件/etc/neutron/plugins/ml2/ml2_conf.ini的符號鏈接:

# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

b)初始化數據:

# 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

c)重啟nova-api服務

# systemctl restart openstack-nova-api.service

d)配置網絡服務狀態

# systemctl enable --now neutron-server neutron-linuxbridge-agent neutron-dhcp-agent neutron-metadata-agent

3 創建網絡

# . admin-openrc
# openstack network create  --share --external   --provider-physical-network provider   --provider-network-type flat provider    //--share允許所有項目使用,--external設置網絡為外部網絡,默認值為內部網絡

 

創建子網(根據實際情況調整地址等參數,我在本文最前面列出了外部網絡地址等信息):

# openstack subnet create --network provider   --allocation-pool start=192.168.0.10,end=192.168.0.50   --dns-nameserver 61.139.2.69 --gateway 192.168.0.1   --subnet-range 192.168.0.0/24 provider

 

4 計算節點配置

4.1 服務配置

a) 安裝軟件包

# yum install openstack-neutron-linuxbridge ebtables ipsec

b)編輯網絡服務配置文件/etc/neutron/neutron.conf

[DEFAULT]節點:

[DEFAULT]
# ... transport_url = rabbit://openstack:rabbitpass@controller auth_strategy = keystone

[keystone_authtoken]節點:

[keystone_authtoken]
# ...
www_authenticate_uri = http://controller:5000
auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = g_service username = neutron password = npass

[oslo_concurrency]節點:

[oslo_concurrency]
# ...
lock_path = /var/lib/neutron/tmp

4.2 網絡配置

a)配置linux橋接代理

編輯配置文件/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]
#配置橋接的物理網卡,在這里我的第二個網卡是ens37,第一個網卡用於管理網絡
physical_interface_mappings = provider:ens37

[vxlan]
#禁止xvxlan模式
enable_vxlan = false

[securitygroup]
# 開啟安全組,配置防火牆驅動
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

b)完成配置后,需要像之前2.2 e)節點一樣檢查br_netfilter模塊是否正常。

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

編輯計算服務配置文件/etc/nova/nova.conf

[neutron]節點:

[neutron]
# ...
auth_url = http://controller:5000
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = g_service
username = neutron
password = npass

4.4 配置服務狀態

# systemctl restart openstack-nova-compute    //重啟nova服務
# systemctl enable --now neutron-linuxbridge-agent    //設置網橋代理服務狀態

5 驗證

列出網絡代理,應該有3個控制節點上的代理,一個計算節點的代理(在控制節點運行該命令):

# openstack network agent list

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM