說明:網絡服務的組件特別多,導致網絡服務的安裝特別靈活,每一個都有一個單獨的配置文件,網絡有4-5個配置文件
(1)創庫和授權
-- mysql -u root -pxxxxxx
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';
(2)創建服務證書
# (1)創建``neutron``用戶
openstack user create --domain default --password NEUTRON_ PASS neutron
# (2)添加``admin`` 角色到``neutron`` 用戶
openstack role add --project service --user neutron admin
# (3)創建``neutron``服務實體
openstack service create --name neutron \
--description "OpenStack Networking" network
# (4)創建網絡服務API端點-->在keystone上創建服務和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
openstack‘底層‘也用到了iptables
neutron-server'969' 接收和響應外部'網絡API請求'-->類似'nova-api'
neutron-linuxbridge-agent: '否則創建橋接網卡';虛機啓動要連網,用bridge或nat模式,需要'有人幫助創建橋接網卡'
neutron-dhcp-agent: '默認-->爲雲主機分配ip';後續也可以固定
neutron-metadata-agent '配置nova-metadata-api'實現虛擬機的'定製操作'
定製操作:雖然是同一個模板克隆的虛機,'可以讓其主機名,ip不同,免祕鑰登陸'
################
L3-agent '實現三層網絡(網絡層-VXLAN)'
網絡選項1:公共網絡 '二層網絡'
網絡選項2:私有網絡 '三層網絡'
'開源社區'--->當做社區和新聞來學習
(4)公共網絡,先使用兩層網絡
編輯 '/etc/neutron/neutron.conf' 文件並完成如下操作
###############(1) 在 [database] 部分,配置數據庫訪問:
[database]
...
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
###############(2) 在[DEFAULT]部分,啓用ML2插件並禁用其他插件
[DEFAULT]
...
core_plugin = ml2
service_plugins =
由於使用'公有網絡'-->二層,所以要'開啓這個核心插件';並且要對該插件配置文件進行配置
'service_plugins 服務插件置爲空('禁用');只有三層網絡的時候開啓時,要擴展一些功能,纔會開啓'
###############(3) 在 "[DEFAULT]" 和 "[oslo_messaging_rabbit]"部分,配置 "RabbitMQ" 消息隊列的連接
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = xxxxxxxx
###############(4)在 "[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 = NEUTRON_PASS
###############(5 )在"[DEFAULT]"和"[nova]"部分,配置網絡服務來通知計算節點的網絡拓撲變化:
[DEFAULT]
...
notify_nova_on_port_status_changes = True
'當nova的網絡端口改變,通知neutrn'
場景:'如果把雲主機關了,則應該告訴neutrn,把網絡端口關了'
notify_nova_on_port_data_changes = True
'當我有數據轉發時,通知neutrn幫我轉發下數據'
[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 = NOVA_PASS
配置原因:'nova和neutrn相互調用';場景:'如果要刪除虛擬機的網絡,會查詢nova是否在使用,如果使用則無法刪除'
'netrun和nova相互配置'
(5)配置 Modular Layer 2 (ML2) 插件
'ML2插件'使用Linuxbridge機制來'爲實例創建layer-2'虛擬網絡基礎設施
編輯 "/etc/neutron/plugins/ml2/ml2_conf.ini" 文件並完成以下操作
##########(1) 在``[ml2]``部分,啓用flat和VLAN網絡:
[ml2]
...
type_drivers = flat,vlan
'flat-->虛擬機和宿主機處於同一個平面,就是橋接網速';'別名'
##########(2) 在"[ml2]"部分,禁用私有網絡'因爲只有三層網絡纔有租戶的概念'
[ml2]
...
tenant_network_types =
##########(3) 在"[ml2]"部分,啓用Linuxbridge機制'虛擬機網絡的底層機制'
[ml2]
...
mechanism_drivers = linuxbridge
底層的'虛擬網絡'的'實現機制'
其他方式:'open vswitch';'centos原生就支持linuxbridge,但是功能沒有switch豐富'
##########(4) 在"[ml2]" 部分,啓用端口安全擴展驅動-->'類似安全組'
[ml2]
...
extension_drivers = port_security
##########(5) 在"[ml2_type_flat]"部分,配置公共虛擬網絡爲flat網絡
[ml2_type_flat]
...
flat_networks = provider
'僅僅是起一個網絡的名字'
'注意':這裏如果修改後面也需要修改!
##########(6) 在 "[securitygroup]"部分,啓用 ipset 增加安全組規則的高效性
[securitygroup]
...
enable_ipset = True
(6)配置Linuxbridge代理
說明: 'Linuxbridge是真正創建橋接網卡的'
################
編輯 "/etc/neutron/plugins/ml2/linuxbridge_agent.ini"文件並且完成以下操作
在``[linux_bridge]``部分,將公共虛擬網絡和公共物理網絡接口對應起來:
[linux_bridge]
'網絡的名字-->provider;PROVIDER_INTERFACE_NAME是實際的網卡名字-->這裏是eth0'
physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME
'創建橋接網卡的時候,基於哪個物理網卡創建橋接網卡'
################
在"[vxlan]"部分,禁止VXLAN覆蓋網絡:'二層網絡禁止'
[vxlan]
enable_vxlan = False
################
在 "[securitygroup]"部分,啓用安全組並配置 Linuxbridge iptables firewall driver
[securitygroup]
...
enable_security_group = True
'python包的關於防火牆的方法'
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
(7) 配置DHCP代理
編輯 '/etc/neutron/dhcp_agent.ini'文件並完成下面的操作
在'[DEFAULT]'部分,配置Linuxbridge驅動接口,DHCP驅動並啓用隔離元數據,這樣在公共網絡上的實例就可以通過網絡來訪問元數據
'根據dhcp分配ip'
[DEFAULT]
...
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = True
說明:到這裏爲止共有網絡已經配置ok了!
(8)通用配置:配置元數據代理
編輯 "/etc/neutron/metadata_agent.ini" 文件並完成以下操作:
在"[DEFAULT]" 部分,配置元數據主機以及共享密碼:
[DEFAULT]
...
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET
爲控制節點配置網絡服務
中文翻譯文檔有坑:'也是在controller節點上執行的'
編輯``/etc/nova/nova.conf``文件並完成以下操作:
在"[neutron]"部分,配置訪問參數,啓用元數據代理並設置密碼:
[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 = NEUTRON_PASS
service_metadata_proxy = True
metadata_proxy_shared_secret = METADATA_SECRET
'密碼與上面的一致';掌握規律,無非步驟繁瑣點,全大寫表示是一個數值
服務開機啓動後的校驗方法
neutron agent-list
'啓動比較慢';'自動化腳本設置-->40s';正常:'三個微笑';'M版本neutron沒有納入openst管理'
[root@controller ~]# neutron agent-list
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
| id | agent_type | host | availability_zone | alive | admin_state_up | binary |
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+
| 19fbb42a-3fca-4124-9f01-391ff0aa8645 | DHCP agent | controller | nova | :-) | True | neutron-dhcp-agent |
| 35965192-d5b6-4c8c-a56a-c1d5d45fcf52 | Metadata agent | controller | | :-) | True | neutron-metadata-agent |
| e9d7d6a9-a89b-4939-854e-2901808714ea | Linux bridge agent | controller | | :-) | True | neutron-linuxbridge-agent |
+--------------------------------------+--------------------+------------+-------------------+-------+----------------+---------------------------+