OpenStack—neutron組件介紹與安裝


neutron介紹

  Neutron 概述:傳統的網絡管理方式很大程度上依賴於管理員手工配置和維護各種網絡硬件設備;而雲環境下的網絡已經變得非常復雜,特別是在多租戶場景里,用戶隨時都可能需要創建、修改和刪除網絡,網絡的連通性和隔離不已經太可能通過手工配置來保證了。

  如何快速響應業務的需求對網絡管理提出了更高的要求。傳統的網絡管理方式已經很難勝任這項工作,而“軟件定義網絡(software-defined networking, SDN)”所具有的靈活性和自動化優勢使其成為雲時代網絡管理的主流。

  Neutron 的設計目標是實現“網絡即服務(Networking as a Service)”。為了達到這一目標,在設計上遵循了基於 SDN 實現網絡虛擬化的原則,在實現上充分利用了 Linux 系統上的各種網絡相關的技術。

  SDN 模式服務— NeutronSDN( 軟件定義網絡 ), 通過使用它,網絡管理員和雲計算操作員可以通過程序來動態定義虛擬網絡設備。Openstack 網絡中的 SDN 組件就是 Quantum.但因為版權問題而改名為Neutron 。

Neutron網絡基本概念:

  1)neutwork
  network 是一個隔離的二層廣播域。Neutron 支持多種類型的 network,包括 local, flat, VLAN, VxLAN 和 GRE。

  local
  local 網絡與其他網絡和節點隔離。local 網絡中的 instance 只能與位於同一節點上同一網絡的 instance 通信,local 網絡主要用於單機測試。

  flat
  flat 網絡是無 vlan tagging 的網絡。flat 網絡中的 instance 能與位於同一網絡的 instance 通信,並且可以跨多個節點。

  vlan
  vlan 網絡是具有 802.1q tagging 的網絡。vlan 是一個二層的廣播域,同一 vlan 中的 instance 可以通信,不同 vlan 只能通過 router 通信。vlan 網絡可跨節點,是應用最廣泛的網絡類型。

flat與vlan 的區別:都可以跨多個節點,flat 在同一網絡地址通信。vlan 打了vlan的標記,可以在不同網絡地址通信。

  vxlan
  vxlan 是基於隧道技術的 overlay 網絡。vxlan 網絡通過唯一的 segmentation ID(也叫 VNI)與其他 vxlan 網絡區分。vxlan 中數據包會通過 VNI 封裝成 UDP 包進行傳輸。因為二層的包通過封裝在三層傳輸,能夠克服 vlan 和物理網絡基礎設施的限制。

  gre
  gre 是與 vxlan 類似的一種 overlay 網絡。主要區別在於使用 IP 包而非 UDP 進行封裝。

vxlan 與 gre的區別:都是二層封裝,三層傳輸,vxlan 使用UDP, gre 使用IP包

  不同 network 之間在二層上是隔離的。
  以 vlan 網絡為例,network A 和 network B 會分配不同的 VLAN ID,這樣就保證了 network A 中的廣播包不會跑到 network B 中。當然,這里的隔離是指二層上的隔離,借助路由器不同 network 是可能在三層上通信的。

  

network 必須屬於某個 Project( Tenant 租戶),Project 中可以創建多個 network。 network 與 Project 之間是 1對多 關系。

 

  2)subnet
  subnet 是一個 IPv4 或者 IPv6 地址段。instance 的 IP 從 subnet 中分配。每個 subnet 需要定義 IP 地址的范圍和掩碼。

network 與 subnet 是 1對多 關系。一個 subnet 只能屬於某個 network;一個 network 可以有多個 subnet,這些 subnet 可以是不同的 IP 段,但不能重疊。

 

  

  3)port
  port 可以看做虛擬交換機上的一個端口。port 上定義了 MAC 地址和 IP 地址,當 instance 的虛擬網卡 VIF(Virtual Interface) 綁定到 port 時,port 會將 MAC 和 IP 分配給 VIF。

subnet 與 port 是 1對多 關系。一個 port 必須屬於某個 subnet;一個 subnet 可以有多個 port。

  Neutron 功能
  Neutron 為整個 OpenStack 環境提供網絡支持,包括二層交換,三層路由,負載均衡,防火牆和 VPN 等。Neutron 提供了一個靈活的框架,通過配置,無論是開源還是商業軟件都可以被用來實現這些功能。

neutron 的部署方案:

          方案一,控制節點+計算節點

            方案二,控制節點+網絡節點+計算節點

neutron 架構非常靈活,層次較多,目的是:

          1,為了支持各種現有或者將來會出現的優秀網絡技術

          2,支持分布部署,獲得足夠的擴展性

安裝neutron和配置控制器節點

1、先決條件:
  1)登錄數據庫,創建數據庫和服務憑據和API接口
  # mysql -uroot -proot
  2)創建neutron數據庫
  MariaDB [(none)] CREATE DATABASE neutron;
  3)授予對neutron數據庫的適當訪問權限,替換 NEUTRON_DBPASS為合適的密碼

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS';

  4)創建neutron用戶

  # openstack user create --domain default --password=neutron neutron
  5)將neutron用戶添加到admin角色
  # openstack role add --project service --user neutron admin
  6)創建neutron服務
  # openstack service create --name neutron --description "OpenStack Networking" network
  7)創建網絡服務API端點

# openstack endpoint create --region RegionOne network public http://node1:9696
# openstack endpoint create --region RegionOne network internal http://node1:9696
# openstack endpoint create --region RegionOne network admin http://node1:9696

2、配置網絡選項

  1)這里我們選擇自助服務網絡
  2)下載安裝包

# yum install openstack-neutron openstack-neutron-ml2 openvswitch openstack-neutron-openvswitch ebtables -y 

  3)配置neutron配置文件,配置以下文件時,請將配置文件備份,在創建一個同名到的配置文件,加入內容

vim /etc/neutron/neutron.conf

[DEFAULT]
state_path = /var/lib/neutron
auth_strategy = keystone
core_plugin = ml2
service_plugins = router
dhcp_agent_notification = true
allow_overlapping_ips = True
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true
transport_url = rabbit://openstack:admin@node1

[agent]

[cors]

[cors.subdomain]

[database]
connection = mysql+pymysql://neutron:NEUTRON_DBPASS@node1/neutron

[keystone_authtoken]
auth_uri = http://node1:5000
auth_url = http://node1:35357
memcached_servers = node1:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron#openstack用戶
password = neutron#openstack中neutron用戶密碼

[matchmaker_redis]

[nova]
region_name = RegionOne#地址域
auth_url = http://node1:35357
auth_type = password
project_domain_name = default
project_name = service
user_domain_name = default
username = nova
password = nova

[oslo_concurrency]
lock_path = $state_path/lock

[oslo_messaging_amqp]

[oslo_messaging_kafka]

[oslo_messaging_notifications]

[oslo_messaging_rabbit]

[oslo_messaging_zmq]

[oslo_middleware]

[oslo_policy]

[qos]

[quotas]

[ssl]

  4)配置構建第2層(橋接和交換)虛擬網絡基礎架構

vim /etc/neutron/plugins/ml2/ml2_conf.ini

[DEFAULT]

[ml2]
type_drivers = flat,vxlan
tenant_network_types = vxlan
mechanism_drivers = openvswitch,l2population
extension_drivers = port_security

[ml2_type_flat]

[ml2_type_geneve]

[ml2_type_gre]

[ml2_type_vlan]

[ml2_type_vxlan]
vni_ranges = 1:1000

[securitygroup]
enable_ipset = true

  5)配置Linux橋代理,為實例構建第2層(橋接和交換)虛擬網絡基礎架構並處理安全組

vim /etc/neutron/plugins/ml2/openvswitch_agent.ini

[DEFAULT]

[agent]
tunnel_types = vxlan
l2_population = True

[ovs]
tunnel_bridge = br-tun
local_ip = 192.168.83.10#主機的第二塊網卡
bridge_mappings =#等號后面沒內容

[securitygroup]
firewall_driver = iptables_hybrid
enable_security_group = true

[xenapi]

  6)配置第3層代理,提供路由和NAT服務

vim /etc/neutron/l3_agent.ini

[DEFAULT]
interface_driver = openvswitch
external_network_bridge = br-ex

[agent]

[ovs]

  7)配置DHCP代理為虛擬網絡提供DHCP服務

vim /etc/neutron/dhcp_agent.ini

[DEFAULT]
interface_driver = openvswitch
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

[agent]

[ovs]

3、配置元數據代理,提供配置信息的諸如憑據實例

vim /etc/neutron/metadata_agent.ini

[DEFAULT]
nova_metadata_ip = node1
metadata_proxy_shared_secret = METADATA_SECRET
#和/etc/nova/nova.conf中的密碼需要一致,可以自己設置
[agent]

[cache]

4、配置Compute服務以使用Networking服務,在/etc/nova/nova.conf加入以下內容

[neutron] 

url = http:// node1:9696 
auth_url = http:// node1: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

5、完成安裝

  1)創建軟連接
  # ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
  2)同步數據

# 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

  

  3)重新啟動Compute API服務

  # systemctl restart openstack-nova-api.service
  4)啟動網絡服務並開機啟動

# systemctl enable neutron-server.service neutron-dhcp-agent.service openvswitch neutron-openvswitch-agent neutron-metadata-agent.service
# systemctl start neutron-server.service neutron-dhcp-agent.service openvswitch neutron-openvswitch-agent neutron-metadata-agent.service

  

  5)創建網橋,並將網口綁定網橋

  # ovs-vsctl add-br br-ex
  # ovs-vsctl add-port br-ex ens37
  6)啟動第3層服務
  # systemctl enable neutron-l3-agent.service     

  # systemctl start neutron-l3-agent.service

三、計算節點安裝和配合neutron

1、下載安裝包
# yum install openvswitch openstack-neutron-openvswitch ebtables ipset

2、配置公共組件
編輯/etc/neutron/neutron.conf文件
vim /etc/neutron/neutron.conf

[DEFAULT]
#state_path = /var/lib/neutron
auth_strategy = keystone
#core_plugin = ml2
#service_plugins = router
#dhcp_agent_notification = true
#allow_overlapping_ips = True
#notify_nova_on_port_status_changes = true
#notify_nova_on_port_data_changes = true
transport_url = rabbit://openstack:admin@node1

[agent]

[cors]

[cors.subdomain]

[database]
#connection = mysql+pymysql://neutron:NEUTRON_DBPASS@node1/neutron

[keystone_authtoken]
auth_uri = http://node1:5000
auth_url = http://node1:35357
memcached_servers = node1:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = neutron
password = neutron

[matchmaker_redis]

[nova]

[oslo_concurrency]
lock_path = $state_path/lock

[oslo_messaging_amqp]

[oslo_messaging_kafka]

[oslo_messaging_notifications]

[oslo_messaging_rabbit]

[oslo_messaging_zmq]

[oslo_middleware]

[oslo_policy]

[qos]

[quotas]

[ssl]

3、配置Linux橋代理

vim /etc/neutron/plugins/ml2/openvswitch_agent.ini

[DEFAULT]

[agent]
tunnel_types = vxlan
l2_population = True

[ovs]
tunnel_bridge = br-tun
local_ip = 192.168.83.20#本機的第二塊網卡ip
bridge_mappings =

[securitygroup]
firewall_driver = iptables_hybrid
enable_security_group = true

[xenapi]

3、完成安裝

1)重新啟動Compute服務
# systemctl restart openstack-nova-compute.service
2)啟動Linux網橋代理並將其開機啟動

# systemctl restart openstack-nova-compute.service
# systemctl enable openvswitch neutron-openvswitch-agent
# systemctl start openvswitch neutron-openvswitch-agent

四、驗證操作

# openstack network agent list

[root@node1 ~]# openstack network agent list
+----------------------+--------------------+-------+-------------------+-------+-------+------------------------+
| ID                   | Agent Type         | Host  | Availability Zone | Alive | State | Binary                 |
+----------------------+--------------------+-------+-------------------+-------+-------+------------------------+
| 4307db4f-527a-441e-b | Open vSwitch agent | node2 | None              | True  | UP    | neutron-openvswitch-   |
| 294-3842c2c23521     |                    |       |                   |       |       | agent                  |
| 4e7445c0-7a53-423d-  | Metadata agent     | node1 | None              | True  | UP    | neutron-metadata-agent |
| bc23-a26a26cc9d6d    |                    |       |                   |       |       |                        |
| 9c38108c-74ea-48c7-8 | Open vSwitch agent | node1 | None              | True  | UP    | neutron-openvswitch-   |
| 208-7abd5a1ecf90     |                    |       |                   |       |       | agent                  |
| a5b22961-bf50-46ec-  | DHCP agent         | node1 | nova              | True  | UP    | neutron-dhcp-agent     |
| 88b4-a1c98740441e    |                    |       |                   |       |       |                        |
| c68858cd-6d03-457f-  | L3 agent           | node1 | nova              | True  | UP    | neutron-l3-agent       |
| bbbf-0fb5528223ab    |                    |       |                   |       |       |                        |
+----------------------+--------------------+-------+-------------------+-------+-------+------------------------+

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM