您好,登錄后才能下訂單哦!
openstack
時間:2016年11月28日
Neutron介紹
neutron是openstack重要組件之一,在以前是時候沒有neutron
項目
早期的時候是沒有neutron,早期所使用的網絡的nova-network,經過版本改變才有個neutron
Openstack Networking 網絡:
在實際的物理環境下,我們使用交換機或者集線器把多個計算機連接起來形成了網絡。在Neutron的世界里,網絡也是將多個不同的云主機連接起來。 子網:
在實際的物理環境下,在一個網絡中。我們可以將網絡劃分成多為邏輯子網。在Neutron的世界里,子網也是隸屬于網絡下的。 端口:
是實際的物理環境下,每個子網或者網絡,都有很多的端口,比如交換機端口來供計算機連接。在Neutron的世界端口也是隸屬于子網下,云主機的網卡會對應到一個端口上。 路由器:
在實際的網絡環境下,不同網絡或者不同邏輯子網之間如果需要進行通信,需要通過路由器進行路由。在Neutron的實際里路由也是這個作用。用來連接不同的網絡或者子網。
Neutron 架構介紹
Neutron也分為控制節點
和計算節點
openstack默認的網絡是單一扁平網絡(虛擬機跟宿主機在同一個網段)在官方文檔上稱為提供者網絡
安裝
數據庫我們在一開始就已經創建完成
keystone用戶我們也已經創建完成
配置網絡選項
您可以部署網絡服務使用選項1和選項2兩種架構中的一種來部署網絡服務。
選項1采用盡可能簡單的架構進行部署,只支持實例連接到公有網絡(外部網絡)。沒有私有網絡(個人網絡),路由器以及浮動IP地址。只有admin
或者其他特權用戶才可以管理公有網絡
選項2在選項1的基礎上多了layer-3服務,支持實例連接到私有網絡。demo
或者其他沒有特權的用戶可以管理自己的私有網絡,包含連接公網和私網的路由器。另外,浮動IP地址可以讓實例使用私有網絡連接到外部網絡,例如互聯網
典型的私有網絡一般使用覆蓋網絡。覆蓋網絡,例如VXLAN包含了額外的數據頭,這些數據頭增加了開銷,減少了有效內容和用戶數據的可用空間。在不了解虛擬網絡架構的情況下,實例嘗試用以太網 最大傳輸單元 (MTU) 1500字節發送數據包。網絡服務會自動給實例提供正確的MTU的值通過DHCP的方式。但是,一些云鏡像并沒有使用DHCP或者忽視了DHCP MTU選項,要求使用元數據或者腳本來進行配置
我們先進行配置公共網絡
在控制節點
安裝組件
[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
,你的配置文件沒有修改就會啟動不起來
故障解決套路:
1、netstat -lntup
確認端口是否監聽
2、openstack service list
確保服務創建 openstack endpoint list
確保三個endpoint
創建無誤
3、vim
修改配置文件debug=true
重啟 – 執行命令 – 看日志
M版本中文文檔:http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/keystone-install.html
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。