Openstack 網絡服務Neutron [五]

Openstack 網絡服務Neutron [五]

Openstack 網絡服務Neutron [五]

openstack
時間:2016年11月28日html

Neutron介紹
neutron是openstack重要組件之一,在之前是時候沒有neutron項目node

p_w_picpath_1b2kngmcvdjff1p1iv514b4jru9.png-90.5kB
早期的時候是沒有neutron,早期所使用的網絡的nova-network,通過版本改變纔有個neutronmysql

Openstack Networking
網絡:
  在實際的物理環境下,咱們使用交換機或者集線器把多個計算機鏈接起來造成了網絡。在Neutron的世界裏,網絡也是將多個不一樣的雲主機鏈接起來。
子網:
  在實際的物理環境下,在一個網絡中。咱們能夠將網絡劃分紅多爲邏輯子網。在Neutron的世界裏,子網也是隸屬於網絡下的。
端口:
  是實際的物理環境下,每一個子網或者網絡,都有不少的端口,好比交換機端口來供計算機鏈接。在Neutron的世界端口也是隸屬於子網下,雲主機的網卡會對應到一個端口上。
路由器:
  在實際的網絡環境下,不一樣網絡或者不一樣邏輯子網之間若是須要進行通訊,須要經過路由器進行路由。在Neutron的實際里路由也是這個做用。用來鏈接不一樣的網絡或者子網。linux


Neutron 架構介紹
p_w_picpath_1b2knirjd1tf514ndcrsbtk1hc1m.png-67.4kB
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 2ML2

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

提示:9696neutron-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

如今還須要將neutronkeystone上進行註冊

建立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 |                   |       |                |                         |+---------------------+--------------------+---------------------+-------------------+-------+----------------+-------------------------+

p_w_picpath_1b2ko7ub51se1a091r308lg13ol13.png-37.3kB

配置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 |                   |       |                |                         |+---------------------+--------------------+---------------------+-------------------+-------+----------------+-------------------------+

p_w_picpath_1b2koffje1mu3hk11jf31oqsm4p1g.png-52.8kB

提示:若是網絡接口不是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

相關文章
相關標籤/搜索