openstack
時間:2016年11月28日
html
Neutron介紹
neutron是openstack重要組件之一,在之前是時候沒有neutron
項目node
早期的時候是沒有neutron,早期所使用的網絡的nova-network,通過版本改變纔有個neutronmysql
Openstack Networking 網絡:
在實際的物理環境下,咱們使用交換機或者集線器把多個計算機鏈接起來造成了網絡。在Neutron的世界裏,網絡也是將多個不一樣的雲主機鏈接起來。 子網:
在實際的物理環境下,在一個網絡中。咱們能夠將網絡劃分紅多爲邏輯子網。在Neutron的世界裏,子網也是隸屬於網絡下的。 端口:
是實際的物理環境下,每一個子網或者網絡,都有不少的端口,好比交換機端口來供計算機鏈接。在Neutron的世界端口也是隸屬於子網下,雲主機的網卡會對應到一個端口上。 路由器:
在實際的網絡環境下,不一樣網絡或者不一樣邏輯子網之間若是須要進行通訊,須要經過路由器進行路由。在Neutron的實際里路由也是這個做用。用來鏈接不一樣的網絡或者子網。linux
Neutron 架構介紹
Neutron也分爲控制節點
和計算節點
sql
openstack默認的網絡是單一扁平網絡(虛擬機跟宿主機在同一個網段)在官方文檔上稱爲提供者網絡docker
安裝
數據庫咱們在一開始就已經建立完成
keystone用戶咱們也已經建立完成數據庫
配置網絡選項
您能夠部署網絡服務使用選項1和選項2兩種架構中的一種來部署網絡服務。
選項1採用儘量簡單的架構進行部署,只支持實例鏈接到公有網絡(外部網絡)。沒有私有網絡(我的網絡),路由器以及浮動IP地址。只有admin
或者其餘特權用戶才能夠管理公有網絡
選項2在選項1的基礎上多了layer-3服務,支持實例鏈接到私有網絡。demo
或者其餘沒有特權的用戶能夠管理本身的私有網絡,包含鏈接公網和私網的路由器。另外,浮動IP地址可讓實例使用私有網絡鏈接到外部網絡,例如互聯網
典型的私有網絡通常使用覆蓋網絡。覆蓋網絡,例如VXLAN包含了額外的數據頭,這些數據頭增長了開銷,減小了有效內容和用戶數據的可用空間。在不瞭解虛擬網絡架構的狀況下,實例嘗試用以太網 最大傳輸單元 (MTU) 1500字節發送數據包。網絡服務會自動給實例提供正確的MTU的值經過DHCP的方式。可是,一些雲鏡像並無使用DHCP或者忽視了DHCP MTU選項,要求使用元數據或者腳原本進行配置vim
咱們先進行配置公共網絡c#
在控制節點
安裝組件api
[root@linux-node1 ~]#yum install openstack-neutron openstack-neutron-ml2 \ openstack-neutron-linuxbridge ebtables
提示:neutron
和其餘組件的小區別是配置完數據庫以後不能夠立刻進行同步,它還依賴其餘配置文件
編輯/etc/neutron/neutron.conf
文件並完成以下操做
在[database]配置數據庫訪問[root@linux-node1 ~]# vim /etc/neutron/neutron.conf684 connection = mysql+pymysql://neutron:neutron@192.168.56.11/neutron
提示:不須要同步數據庫,684爲684行
在 [DEFAULT]
和 [keystone_authtoken]
部分,配置認證服務訪問
[DEFAULT]auth_strategy = keystone[keystone_authtoken]auth_uri = http://192.168.56.11:5000auth_url = http://192.168.56.11:35357memcached_servers = 192.168.56.11:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = neutron
rabbitmq
(消息隊列)配置
rpc_backend = rabbitrabbit_host = 192.168.56.11rabbit_userid = openstackrabbit_password = openstack
neutron
核心配置有2
個
啓動ML2
插件並禁用其餘插件
[DEFAULT]…core_plugin = m12service_plugins =提示:service_plugins等號後面什麼都不寫就是禁用其餘插件
配置網絡服務來通知計算節點的網絡拓撲變化:(配置nova
相關)
[DEFAULT]…notify_nova_on_port_status_changes = truenotify_nova_on_port_data_changes = true
提示:簡單的來講就是端口發生變化通知nova
[nova]nova標籤的配置其實就是keystone的配置auth_url = http://192.168.56.11:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = novapassword = nova
配置鎖路徑
[oslo_concurrency]lock_path = /var/lib/neutron/tmp
neutron配置小結:
[root@linux-node1 ~]# grep '^[a-z]' /etc/neutron/neutron.confauth_strategy = keystone #使用keystone進行驗證core_plugin = ml2 #使用ml2插件service_plugins = #不使用其餘插件notify_nova_on_port_status_changes = true #端口改變通知novanotify_nova_on_port_data_changes = true #端口改變通知novarpc_backend = rabbit #使用rabbitconnection = mysql+pymysql://neutron:neutron@192.168.56.11/neutron #數據庫鏈接地址auth_uri = http://192.168.56.11:5000 #neutron keystone的配置auth_url = http://192.168.56.11:35357 #neutron keystone的配置memcached_servers = 192.168.56.11:11211 #neutron keystone的配置auth_type = password #neutron keystone的配置project_domain_name = default #neutron keystone的配置user_domain_name = default #neutron keystone的配置project_name = service #neutron keystone的配置username = neutron #neutron keystone的配置password = neutron #neutron keystone的配置auth_url = http://192.168.56.11:35357 #neutron nova的配置auth_type = password #neutron nova的配置project_domain_name = default #neutron nova的配置user_domain_name = default #neutron nova的配置region_name = RegionOne #neutron nova的配置project_name = service #neutron nova的配置username = nova #neutron nova的配置password = nova #neutron nova的配置lock_path = /var/lib/neutron/tmp #鎖路徑rabbit_host = 192.168.56.11 #rabbitmq配置rabbit_userid = openstack #rabbitmq配置rabbit_password = openstack #rabbitmq配置
配置Modular Layer 2
(ML2
)
ML2插件使用Linuxbridge
機制來爲實例建立layer-2
虛擬網絡基礎設施
編輯配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
驅動的選擇
[ml2]type_drivers = flat,vlan,gre,vxlan,geneve
設置使用那幾個插件來建立網絡
[ml2]mechanism_drivers = linuxbridge,openvswitch
提示:咱們能夠寫多個,無論用不用均可以寫上去
禁用私有網絡
[ml2]tenant_network_types =
啓動端口安全擴展驅動
[ml2]extension_drivers = port_security
在[ml2_type_flat]
部分,配置公共虛擬網絡爲flat網絡
[ml2_type_flat]flat_networks = public#配置公共的網絡
在 [securitygroup]
部分,啓用 ipset
增長安全組規則的高效性:
[securitygroup]enable_ipset = true
提示:ml2_conf
裏面的網絡類型不少,咱們須要那種網絡類型配置便可
ML2插件配置小結:
[root@linux-node1 ~]# grep '^[a-z]' /etc/neutron/plugins/ml2/ml2_conf.initype_drivers = flat,vlan,gre,vxlan,geneve #驅動類型tenant_network_types = #租戶的網絡類型mechanism_drivers = linuxbridge,openvswitch #建立網絡插件extension_drivers = port_security #打開端口安全flat_networks = public #網絡類型publicenable_ipset = true #開啓ipset
配置Linuxbridge
代理
編輯/etc/neutron/plugins/ml2/linuxbridge_agent.ini
文件而且完成如下操做
在[linux_bridge]部分,將公共虛擬網絡和公共物理網絡接口對應起來:[linux_bridge]physical_interface_mappings = public:eth0#是什麼網卡就修改什麼網卡,若是不是eth0請修改對應網卡
在[vxlan]
部分,禁止VXLAN覆蓋網絡:
[vxlan]enable_vxlan = false
在[securitygroup]
部分,啓用安全組並配置 Linuxbridge iptables firewall driver
:
[securitygroup]...enable_security_group = Truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver#啓動安全組並設置防火牆驅動
Linuxbridge
代理總結以下:
[root@linux-node1 ~]# grep '^[a-z]' /etc/neutron/plugins/ml2/linuxbridge_agent.iniphysical_interface_mappings = public:eth0 #網絡映射firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver #防火牆enable_security_group = true #打開安全組enable_vxlan = false #關閉vxlan
配置DHCP代理
編輯/etc/neutron/dhcp_agent.ini
文件並完成下面的操做:
在[DEFAULT]部分,配置Linuxbridge驅動接口,DHCP驅動並啓用隔離元數據,這樣在公共網絡上的實例就能夠經過網絡來訪問元數據
[DEFAULT]…interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver#虛擬接口驅動,使用Linuxbridgedhcp_driver = neutron.agent.linux.dhcp.Dnsmasq#dhcp驅動,默認使用Dnsmasq(是一個小的開源項目)來提供dhcp服務enable_isolated_metadata = false#刷新路由使用
DHCP配置小結
[root@linux-node1 ~]# grep '^[a-z]' /etc/neutron/dhcp_agent.iniinterface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver #底層插件Linuxbridgedhcp_driver = neutron.agent.linux.dhcp.Dnsmasq #DHCPenable_isolated_metadata = false #推送路由使用
配置元數據代理 <Metadata agent>
負責提供配置信息,例如:訪問實例的憑證
編輯/etc/neutron/metadata_agent.ini
文件並完成如下操做:
在[DEFAULT]
部分,配置元數據主機以及共享密碼:
nova_metadata_ip = 192.168.56.11 #元數據主機metadata_proxy_shared_secret = abcdocker #共享密鑰
提示:這個共享密鑰就是一個字符串
配置網絡服務(nova-api)
編輯/etc/nova/nova.conf
文件並完成如下操做:
在[neutron]
部分,配置訪問參數,啓用元數據代理並設置密碼:
url = http://192.168.56.11:9696auth_url = http://192.168.56.11:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = neutron
提示:9696
是neutron-server
的端口
[neutron]service_metadata_proxy=truemetadata_proxy_shared_secret = abcdocker #共享密鑰
網絡服務初始化腳本須要一個超連接 /etc/neutron/plugin.ini
指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini
若是超連接不存在,使用下面的命令建立它:
[root@linux-node1 ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
提示:這裏咱們使用那個插件就用它作一個軟鏈接便可
同步數據庫
[root@linux-node1 ~]# 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
注:數據庫的同步發生在 Networking
以後,由於腳本須要完成服務器和插件的配置文件。
重啓計算API 服務:
[root@linux-node1 ~]# systemctl restart openstack-nova-api.service
當系統啓動時,啓動Networking
服務並配置它啓動。
對於兩
種網絡選項:
[root@linux-node1 ~]#systemctl enable neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service[root@linux-node1 ~]#systemctl start neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service
如今還須要將neutron
在keystone
上進行註冊
建立neutron
服務實體:
[root@linux-node1 ~]# source admin-openstack.sh[root@linux-node1 ~]#openstack service create --name neutron \ --description "OpenStack Networking" network
建立網絡服務API
端點:
[root@linux-node1 ~]#openstack endpoint create --region RegionOne \ network public http://192.168.56.11:9696[root@linux-node1 ~]# openstack endpoint create --region RegionOne network internal http://192.168.56.11:9696[root@linux-node1 ~]# openstack endpoint create --region RegionOne network admin http://192.168.56.11:9696
檢查neutron
是否安裝成功
[root@linux-node1 ~]# neutron agent-list+---------------------+--------------------+---------------------+-------------------+-------+----------------+-------------------------+| id | agent_type | host | availability_zone | alive | admin_state_up | binary |+---------------------+--------------------+---------------------+-------------------+-------+----------------+-------------------------+| b41a9731-2bff-4257- | DHCP agent | linux- | nova | :-) | True | neutron-dhcp-agent || a3e9-91b13f568932 | | node1.abcdocker.com | | | | || de108bab-f33a-4319 | Linux bridge agent | linux- | | :-) | True | neutron-linuxbridge- || -8caf-dd5fbda74d7e | | node1.abcdocker.com | | | | agent || f8286325-19ad-43ae- | Metadata agent | linux- | | :-) | True | neutron-metadata-agent || a25a-c7c2ceca7aed | | node1.abcdocker.com | | | | |+---------------------+--------------------+---------------------+-------------------+-------+----------------+-------------------------+
配置neutron
計算節點
安裝組件,安裝的服務器在192.168.56.12
linux-node2.com
上面
[root@linux-node2 ~]# yum install openstack-neutron-linuxbridge ebtables ipset -y
由於控制節點跟計算節點配置幾乎同樣,咱們直接複製控制節點的文件進行修改控制節點拷貝
[root@linux-node1 ~]# scp /etc/neutron/neutron.conf root@192.168.56.12:/etc/neutron
在計算節點進行修改配置文件權限
[root@linux-node2 ~]# chown -R root:neutron /etc/neutron/neutron.conf[root@linux-node2 ~]# ll /etc/neutron/neutron.conf-rw-r----- 1 root neutron 53140 Nov 21 15:13 /etc/neutron/neutron.conf
計算節點設置
[root@linux-node2 ~]# vim /etc/neutron/neutron.conf#connection = #刪除mysql鏈接路徑[nova] #刪除nova標籤下全部配置#notify_nova_on_port_status_changes = true #註釋#notify_nova_on_port_data_changes = true #註釋#core_plugin = ml2 #註釋插件#service_plugins = #註釋
計算節點跟控制節點進行對比
[root@linux-node2 ~]# diff /etc/neutron/neutron.conf /tmp/neutron.conf 30c30< #core_plugin = ml2---> core_plugin = ml233c33< #service_plugins =---> service_plugins =137c137< #notify_nova_on_port_status_changes = true---> notify_nova_on_port_status_changes = true141c141< #notify_nova_on_port_data_changes = true---> notify_nova_on_port_data_changes = true684c684< #connection = ---> connection = mysql+pymysql://neutron:neutron@192.168.56.11/neutron936a937,944> 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 = nova> password = nova
提示:不註釋也沒有問題,可是爲了環境保持一致仍是註釋掉比較好
爲計算節點配置網絡服務
咱們能夠直接複製控制節點的配置進行修改
[root@linux-node1 ~]# vim /etc/nova/nova.conf…[neutron]url = http://192.168.56.11:9696auth_url = http://192.168.56.11:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = neutron
提示:在控制節點的時候咱們在nova的配置文件中配置了neutron的節點選項,在neutron配置文件中配置了nova的選項。在計算節點的nova上要配置neutron
在計算節點配置Linuxbridge
配置網絡選項
友情提示:這裏的配置和控制節點配置如出一轍
這裏咱們仍是直接拷貝控制節點的/etc/neutron/plugins/ml2/linuxbridge_agent.ini
拷貝
[root@linux-node1 ~]# scp /etc/neutron/plugins/ml2/linuxbridge_agent.ini 192.168.56.12:/etc/neutron/plugins/ml2/root@192.168.56.12's password: linuxbridge_agent.ini
查看
[root@linux-node2 ~]# ll /etc/neutron/plugins/ml2/linuxbridge_agent.ini-rw-r----- 1 root root 7924 Nov 21 16:26 /etc/neutron/plugins/ml2/linuxbridge_agent.ini[root@linux-node2 ~]# grep '^[a-z]' /etc/neutron/plugins/ml2/linuxbridge_agent.iniphysical_interface_mappings = public:eth0firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriverenable_security_group = trueenable_vxlan = false[root@linux-node2 ~]# chown -R root:neutron /etc/neutron/plugins/ml2/linuxbridge_agent.ini
重啓計算節點nova-compute
[root@linux-node2 ~]#systemctl restart openstack-nova-compute.service
啓動Linuxbridge
代理並設置開啓啓動
[root@linux-node2 ~]# systemctl enable neutron-linuxbridge-agent.serviceCreated symlink from /etc/systemd/system/multi-user.target.wants/neutron-linuxbridge-agent.service to /usr/lib/systemd/system/neutron-linuxbridge-agent.service.[root@linux-node2 ~]# systemctl start neutron-linuxbridge-agent.service
進入控制節點,進行檢查
[root@linux-node1 ~]# source admin-openstack.sh [root@linux-node1 ~]# neutron agent-list+---------------------+--------------------+---------------------+-------------------+-------+----------------+-------------------------+| id | agent_type | host | availability_zone | alive | admin_state_up | binary |+---------------------+--------------------+---------------------+-------------------+-------+----------------+-------------------------+| b41a9731-2bff-4257- | DHCP agent | linux- | nova | :-) | True | neutron-dhcp-agent || a3e9-91b13f568932 | | node1.abcdocker.com | | | | || de108bab-f33a-4319 | Linux bridge agent | linux- | | :-) | True | neutron-linuxbridge- || -8caf-dd5fbda74d7e | | node1.abcdocker.com | | | | agent || eb879cc3-ca1d-470b- | Linux bridge agent | linux- | | :-) | True | neutron-linuxbridge- || 9fe6-b0e5c2fedf2a | | node2.abcdocker.com | | | | agent || f8286325-19ad-43ae- | Metadata agent | linux- | | :-) | True | neutron-metadata-agent || a25a-c7c2ceca7aed | | node1.abcdocker.com | | | | |+---------------------+--------------------+---------------------+-------------------+-------+----------------+-------------------------+
提示:若是網絡接口不是eth0
,你的配置文件沒有修改就會啓動不起來
故障解決套路:
一、netstat -lntup
確認端口是否監聽
二、openstack service list
確保服務建立 openstack endpoint list
確保三個endpoint
建立無誤
三、vim
修改配置文件debug=true
重啓 – 執行命令 – 看日誌
M版本中文文檔:http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/keystone-install.html