2.6網絡服務
2.6.1neutron的概況
網絡服務提供網絡,子網以及路由這些對象的抽象概念。每個抽象概念都有自己的功能,可以模擬對應的物理設備:網絡包括子網,路由在不同的子網和網絡之間進行路由轉發。
對於任意一個給定的網絡都必須包含至少一個外部網絡。不想其他的網絡那樣,外部網絡不僅僅是一個定義的虛擬網絡。相反,它代表了一種openstack安裝之外的能從物理的,外部訪問的試圖。外部網絡上的IP地址可供外部網絡上的任意的物理設備訪問,外部網絡之外,任何networking設置擁有一個或多個內部網絡。這些軟件定義的網絡直接連接到虛擬機。僅僅在給定網絡上的虛擬機,或那些在通過接口連接到相近路由的子網上的虛擬機,能直接訪問連接到那個網絡上的虛擬機。
如果外部網絡想要訪問實例或者相反實例想要訪問外部網絡,那麼網絡之間的路由就是必要的了。每一個路由都配有一個網關用於連接到外部網絡,以及一個或多個連接到內部網絡的接口。就像一個物理路由一樣,子網可以訪問同一個路由上其他子網中的機器,並且機器也可以訪問的網關訪問外部網絡。
另外,可以講外部網絡的IP地址分配給內部網絡的端口,不符按什麼時候一旦有鏈接到子網,那個鏈接被稱作端口,你可以給實例的端口分配外部網絡的IP地址。通過這種方式,外部網絡上的實體可以訪問實例。
網絡服務統一支持安全組。安全組允許管理員在安全組中定義防火牆規則,一個實例了一屬於一個或多個安全組,網絡爲這個實例配置這些安全組中的規則,阻止或者開啓端口,端口範圍或者通信類型。
每一個networking使用的插件都有其自有的概念。雖然對操作vni和openstack環境至關重要的,所有的networking安裝使用了一個核心插件和一個安全組插件(或僅是空操作安全組插件)。另外,防火牆即服務(FWaas)和負載均衡即服務(LBaas)插件是可用的。
Openstack networking
網絡:實際的物理環境下,我們使用交換機或者集線器把多個計算機連接起來形成了網絡。在neutron的世界裏,網絡也是將多個不同的雲主機連接起來。
子網:在實際的物理環境下,在一個網絡中。我們可以將網絡劃分成多個邏輯子網。在neutron的世界裏,子網也是隸屬於網絡下的。
端口:是實際的物理環境下,每個子網或者每個網絡,都有很多的端口,比如交換機端口來供計算機連接。在neutron的世界裏端口也隸屬子網下,雲主機的網卡會對應到一個端口上。
路由器:在實際的網絡環境下,不同網絡或者不同邏輯子網之間如果需要進行通信,需要通過路由器進行路由。在neutron的實際物理路由也是這個作用。用來連接不同的網絡或者子網。
2.6.2控制節點上neutron的配置與安裝
a數據庫的創建並授權
create databaseneutron;
grant all onneutron.* to 'neutron'@'localhost' identified by 'neutron';
grant all onneutron.* to 'neutron'@'%' identified by 'neutron';
b創建服務證書
獲得 admin 憑證來獲取只有管理員能執行的命令的訪問權限:
sourceadmin-openstack
創建``neutron``用戶:
openstack usercreate --domain default --password-prompt neutron
添加``admin`` 角色到``neutron`` 用戶:
openstack role add--project service --user neutron admin
c創建``neutron``服務實體
openstack servicecreate --name neutron \
--description"OpenStack Networking" network
d創建網絡服務API端點
openstack endpointcreate --region RegionOne \
network publichttp://192.168.56.11:9696
openstack endpointcreate --region RegionOne \
network internalhttp://192.168.56.11:9696
openstack endpointcreate --region RegionOne \
network adminhttp://192.168.56.11:9696
e軟件包的安裝
yum install -yopenstack-neutron openstack-neutron-ml2 \
openstack-neutron-linuxbridgeebtables
f編輯``/etc/neutron/neutron.conf``
[database]#配置數據庫訪問
connection =mysql+pymysql://neutron:[email protected]/neutron
[DEFAULT]#啓用ML2插件並禁用其他插件
core_plugin = ml2
service_plugins =
transport_url =rabbit://openstack:[email protected] #配置rabbitMQ消息隊列訪問權限
auth_strategy =keystone
notify_nova_on_port_status_changes= True
notify_nova_on_port_data_changes= True
[keystone_authtoken]#配置認證服務訪問
auth_uri =http://192.168.56.11:5000
auth_url =http://192.168.56.11:35357
memcached_servers =192.168.56.11:11211
auth_type =password
project_domain_name= default
user_domain_name =default
project_name =service
username = neutron
password = neutron
[nova] #配置網絡服務來通知計算節點的網絡拓撲變化
auth_url =http://192.168.56.11:35357
auth_type =password
project_domain_id =default
user_domain_id =default
region_name =RegionOne
project_name =service
username = nova
password = nova
[oslo_concurrency]配置鎖路徑
lock_path =/var/lib/neutron/tmp
配置 Modular Layer 2 (ML2) 插件
g編輯``/etc/neutron/plugins/ml2/ml2_conf.ini``
[ml2]
type_drivers=flat,vlan,gre,vxlan,geneve #啓用flat和VLAN網絡
tenant_network_types= flat,vlan,gre,vxlan,geneve #禁用私有網絡
mechanism_drivers=linuxbridge #啓用Linuxbridge機制
extension_drivers =port_security #啓用端口安裝擴展驅動
[ml2_type_flat]
flat_networks =public #配置公共虛擬網絡爲public網絡
[securitygroup]
enable_ipset = True#啓用IPset增肌安全組的方便性
配置Linuxbridge代理
h編輯``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``
[linux_bridge]#將公共虛擬網絡和公共物理網絡接口對應起來
physical_interface_mappings= public:eth0
[vxlan]#禁止vxlan覆蓋網絡
enable_vxlan =False
[securitygroup]#啓用安全組並配置Linux橋接iptables防火牆驅動
enable_security_group= True
firewall_driver =neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置DHCP代理
i編輯``/etc/neutron/dhcp_agent.ini``
[DEFAULT]#配置Linuxbridge驅動接口,DHCP驅動並啓用隔離元數據,這樣在公共網絡上的實例就可以通過網絡訪問元數據
interface_driver =neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver =neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata= True
配置metadata元數據
元數據代理提供配置信息,如憑據實例。
j編輯``/etc/neutron/metadata_agent.ini``
[DEFAULT]#配置元數據主機以及共享密碼
nova_metadata_ip =192.168.56.11
metadata_proxy_shared_secret= chunchun
配置計算服務來使用網絡服務
k編輯``/etc/nova/nova.conf``
[neutron]#配置訪問參數,啓用元數據代理並設置密碼
url =http://192.168.56.11:9696
auth_url =http://192.168.56.11:35357
auth_type =password
project_domain_name= default
user_domain_name =default
region_name =RegionOne
project_name =service
username = neutron
password = neutron
service_metadata_proxy= True
metadata_proxy_shared_secret= chunchun
網絡服務初始化腳本需要一個超鏈接 /etc/neutron/plugin.ini``指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini``。如果超鏈接不存在,使用下面的命令創建它:
ln -s/etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
l同步數據庫
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 -h192.168.56.11 -uneutron -pneutron \
-e "useneutron;show tables;"|wc -l
163
m重新啓動控制節點Nova API服務
systemctl restartopenstack-nova-api.service
n啓動網絡服務並將其配置爲系統啓動時啓動
systemctl enableneutron-server.service \
neutron-linuxbridge-agent.serviceneutron-dhcp-agent.service \
neutron-metadata-agent.service
systemctl startneutron-server.service \
neutron-linuxbridge-agent.serviceneutron-dhcp-agent.service \
neutron-metadata-agent.service
2.6.3計算節點上neutron的配置與安裝
a軟件包的安裝
yum install -yopenstack-neutron-linuxbridge ebtables ipset
b編輯``/etc/neutron/neutron.conf``文件
[DEFAULT]
transport_url =rabbit://openstack:[email protected] #配置``RabbitMQ``消息隊列訪問權限
auth_strategy =keystone
[keystone_authtoken]#配置認證服務訪問
auth_uri =http://192.168.56.11:5000
auth_url =http://192.168.56.11:35357
memcached_servers =192.168.56.11:11211
auth_type =password
project_domain_name= default
user_domain_name =default
project_name =service
username = neutron
password = neutron
[oslo_concurrency]配置鎖路徑
lock_path =/var/lib/neutron/tmp
配置Linux橋接代理
c編輯``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件
[linux_bridge]#將公共虛擬網絡和公共物理網絡接口對應起來
physical_interface_mappings= public:eth0
[vxlan]#禁止Vxlan覆蓋網絡
enable_vxlan =false
[securitygroup] #啓用安全組並配置Linux橋接iptables防火牆驅動
enable_security_group= True
firewall_driver =neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置計算節點使用網絡
d編輯``/etc/nova/nova.conf``文件
在[neutron]部分,配置訪問
[neutron]
url =http://192.168.56.11:9696
auth_url =http://192.168.56.11:35357
auth_type =password
project_domain_id =default
user_domain_id =default
region_name =RegionOne
project_name =service
username = neutron
password = neutron
e重啓計算節點nova-compute服務
systemctl restartopenstack-nova-compute
f啓動Linux橋接代理,包括它的依賴和配置並在系統啓動時啓動
systemctl enableneutron-linuxbridge-agent.service
systemctl startneutron-linuxbridge-agent.service
驗證:
獲得 admin 憑證來獲取只有管理員能執行的命令的訪問權限:
sourceadmin-openstack
列出加載的擴展來驗證``neutron-server``進程是否正常啓動:
neutron agent-list
+-----------------------------+--------------------+-------------------------+-------------------+-------+----------------+---------------------------+
| id | agent_type |host | availability_zone | alive | admin_state_up | binary |
+-----------------------------+--------------------+-------------------------+-------------------+-------+----------------+---------------------------+
|3dfb07a5-d9e2-45ec-b77a- | Metadata agent | linux-node1.example.com | | :-) |True | neutron-metadata-agent |
| 471842f603e8 | || | | | |
| 9e7c94cf-fadd- |Linux bridge agent | linux-node1.example.com | | :-) | True |neutron-linuxbridge-agent |
|4b42-a316-ea1a5bce22de | | | | | | |
|a2ae2f2c-f453-449d-a46a- | DHCP agent | linux-node1.example.com | nova | :-) |True | neutron-dhcp-agent |
| c49edea6f9c5 | || | | | |
|ef8b5e4e-682e-4f57-af5e- | Linux bridge agent | linux-node2.example.com | | :-)| True | neutron-linuxbridge-agent |
| e50e9fa56615 | || | | | |
+-----------------------------+--------------------+-------------------------+-------------------+-------+----------------+---------------------------+