日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Openstack入门篇(十一)之neutron服务(控制节点)的部署与测试

發布時間:2024/7/19 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Openstack入门篇(十一)之neutron服务(控制节点)的部署与测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

  • 1.Neutron的介紹

  Neutron 為整個 OpenStack 環境提供網絡支持,包括二層交換,三層路由,負載均衡,防火墻和 *** 等。Neutron 提供了一個靈活的框架,通過配置,無論是開源還是商業軟件都可以被用來實現這些功能。
Openstack的設計理念是把所有的組件當做服務來注冊的。 Neutron就是網絡服務。它將網絡、子網、端口和路由器抽象化,之后啟動的虛擬主機就可以連接到這個虛擬網絡上,最大的好處是這些都可視化的在Horizon里得到了實現,部署或者改變一個SDN變得非常簡單。
我們先通過如下一個簡單的流程來了解客戶機如何連接到網絡上

  • 租戶創建了一個網絡,比方說net
  • 租戶為此網絡分配一個子網,比如192.168.56.0/24
  • 租戶啟動一個客戶機,并指明一個網口連接到net
  • Nova通知Neutron并在net上創建一個端口,如port1
  • Neutron選擇并分配一個IP給port1
  • 客戶機通過port1就連接到了net上

  • 2.Neutron的架構

與 OpenStack 的其他服務的設計思路一樣,Neutron 也是采用分布式架構,由多個組件(子服務)共同對外提供網絡服務。

?

Neutron 由如下組件構成:

Neutron Server :對外提供 OpenStack 網絡 API,接收請求,并調用 Plugin 處理請求。

Plugin:處理 Neutron Server 發來的請求,維護 OpenStack 邏輯網絡的狀態, 并調用 Agent 處理請求。

Agent :處理 Plugin 的請求,負責在 network provider 上真正實現各種網絡功能。

network provider :提供網絡服務的虛擬或物理網絡設備,例如 Linux Bridge,Open vSwitch 或者其他支持 Neutron 的物理交換機。

Queue :Neutron Server,Plugin 和 Agent 之間通過 Messaging Queue 通信和調用。

Database :存放 OpenStack 的網絡狀態信息,包括 Network, Subnet, Port, Router 等。

案例理解內容:
以創建一個 VLAN100 的 network 為例,假設 network provider 是 linux bridge, 流程如下:

①Neutron Server 接收到創建 network 的請求,通過 Message Queue(RabbitMQ)通知已注冊的 Linux Bridge Plugin。

②Plugin 將要創建的 network 的信息(例如名稱、VLAN ID等)保存到數據庫中,并通過 Message Queue 通知運行在各節點上的 Agent。

③Agent 收到消息后會在節點上的物理網卡(比如 eth0)上創建 VLAN 設備(比如 eth0.100),并創建 bridge (比如 brqXXX) 橋接 VLAN 設備。

?

  • 3.flat network原理

flat network 是不帶 tag 的網絡,要求宿主機的物理網卡直接與 linux bridge 連接,這意味著:?
每個 flat network 都會獨占一個物理網卡。

上圖中 eth1 橋接到 brqXXX,為云主機提供 flat 網絡。?
如果需要創建多個 flat network,就得準備多個物理網卡,如下圖所示。

?

  • 4.neutron服務的部署與測試

?(1)編輯配置neutron.conf?

編輯/etc/neutron/neutron.conf 文件并完成如下操作: 在 [database] 部分,配置數據庫訪問:[database] ... connection = mysql+pymysql://neutron:neutron@192.168.56.11/neutron 在[DEFAULT]部分,啟用ML2插件并禁用其他插件: [DEFAULT] ... core_plugin = ml2 service_plugins = 在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置認證服務訪問:[DEFAULT] ... 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 在[DEFAULT]部分,配置RabbitMQ消息隊列訪問權限:[DEFAULT] ... transport_url = rabbit://openstack:openstack@192.168.56.11 在[DEFAULT]和[nova]部分,配置網絡服務來通知計算節點的網絡拓撲變化:[DEFAULT] ... notify_nova_on_port_status_changes = True notify_nova_on_port_data_changes = True[nova] ... 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 在 [oslo_concurrency] 部分,配置鎖路徑: [oslo_concurrency] ... lock_path = /var/lib/neutron/tmp
查看neutron所有配置項:[root@linux
-node1 ~]# grep "^[a-z]" /etc/neutron/neutron.conf auth_strategy = keystone core_plugin = ml2 service_plugins = notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true transport_url = rabbit://openstack:openstack@192.168.56.11 connection = mysql+pymysql://neutron:neutron@192.168.56.11/neutron 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 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 lock_path = /var/lib/neutron/tmp

(2)配置 Modular Layer 2 (ML2) 插件

編輯/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成以下操作: 在[ml2]部分,啟用flat和VLAN網絡:[ml2] ... type_drivers = flat,vlan 在[ml2]部分,禁用私有網絡:[ml2] ... tenant_network_types = 在[ml2]部分,啟用Linuxbridge機制:[ml2] ... mechanism_drivers = linuxbridge 在[ml2] 部分,啟用端口安全擴展驅動:[ml2] ... extension_drivers = port_security 在[ml2_type_flat]部分,配置公共虛擬網絡為flat網絡:[ml2_type_flat] ... flat_networks = public <==指定普通用戶創建的網絡類型為 public 在 [securitygroup]部分,啟用 ipset 增加安全組的方便性:[securitygroup] ... enable_ipset = True

(3)配置Linuxbridge代理

編輯/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:在[linux_bridge]部分,將公共虛擬網絡和公共物理網絡接口對應起來:[linux_bridge] physical_interface_mappings = public:eth0 <==指明 public 網絡與物理網卡的對應關系 在[vxlan]部分,禁止VXLAN覆蓋網絡:[vxlan] enable_vxlan = False 在 [securitygroup]部分,啟用安全組并配置 Linux 橋接 iptables 防火墻驅動:[securitygroup] ... enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

tips:理解此處的public與 eth0 的關系

public是 flat 網絡的標識,在創建 flat 時需要指定 label(標識)。label 的名字可以是任意字符串,這里創建的標識為public。只要確保各個節點 ml2_conf.ini 中的 label 命名一致就可以了。

各個節點中 label 與物理網卡的對應關系可能不一樣。這是因為每個節點可以使用不同的物理網卡將云主機連接到 flat network。

支持多個flat網絡
如果要創建多個 flat 網絡,需要定義多個 label,用逗號隔開,當然也需要用到多個物理網卡,如下所示:

[ml2_type_flat] flat_networks = flat1,flat2[linux_bridge] physical_interface_mappings = flat1:eth1,flat2:eth2

(4)配置DHCP代理

編輯/etc/neutron/dhcp_agent.ini文件并完成下面的操作:在[DEFAULT]部分,配置Linuxbridge驅動接口,DHCP驅動并啟用隔離元數據,這樣在公共網絡上的實例就可以通過網絡來訪問元數據[DEFAULT] ... interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver <==使用 linux bridge 連接 DHCP namespace interface。 dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq <==使用 dnsmasq 實現 DHCP。 enable_isolated_metadata = True 當創建 network 并在 subnet 上 enable DHCP 時,網絡節點上的 DHCP agent 會啟動一個 dnsmasq 進程為該 network 提供 DHCP 服務。

(5)配置元數據代理

編輯/etc/neutron/metadata_agent.ini文件并完成以下操作:在[DEFAULT] 部分,配置元數據主機以及共享密碼:[DEFAULT] ... nova_metadata_ip = 192.168.56.11 metadata_proxy_shared_secret = nobody

(6)配置計算服務來使用網絡服務

編輯/etc/nova/nova.conf文件并完成以下操作:[root@linux-node1 ~]# vim /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_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = neutron service_metadata_proxy = True metadata_proxy_shared_secret = nobody

(7)完成安裝

①網絡服務初始化腳本需要一個超鏈接 /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 ③重啟計算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

(8)創建“neutron”服務實體以及API端點

[root@linux-node1 ~]# openstack service create --name neutron \--description "OpenStack Networking" network[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 [root@linux-node1 ~]# neutron agent-list

出現圖中的3個笑臉,代表網絡服務的成功了!!!

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

以下為網絡底層變化原理的介紹:

  • 5.底層網絡的變化

執行 brctl show,查看控制節點當前的網絡結構。

Neutron 自動新建了public 對應的網橋brqc39c1348-5a,以及 dhcp 的 tap 設備tapae04cfac-d0。?
另外,tapae04cfac-d0 和物理網卡 eth0都已經連接到 bridge。
此時,flat network(public)網絡結構如圖:

  • 6.DHCP服務解析

?DHCP agent 的配置文件位于 /etc/neutron/dhcp_agent.ini。

dhcp_driver?
使用 dnsmasq 實現 DHCP。

interface_driver?
使用 linux bridge 連接 DHCP namespace interface。

當創建 network 并在 subnet 上 enable DHCP 時,網絡節點上的 DHCP agent 會啟動一個 dnsmasq 進程為該 network 提供 DHCP 服務。

dnsmasq 是一個提供 DHCP 和 DNS 服務的開源軟件。?
dnsmasq 與 network 是一對一關系,一個 dnsmasq 進程可以為同一 netowrk 中所有 enable 了 DHCP 的 subnet 提供服務。

網絡創建完成,我們可以在linux-node1上進行查看dnsmasq的進程

?

dnsmasq 重要的啟動參數:
--dhcp-hostsfile?
存放 DHCP host 信息的文件,這里的 host 在我們這里實際上就是 instance。?
dnsmasq 從該文件獲取 host 的 IP 與 MAC 的對應關系。?
每個 host 對應一個條目,信息來源于 Neutron 數據庫。

--interface?
指定提供 DHCP 服務的網絡接口。?
dnsmasq 會在該網絡接口上監聽云主機的 DHCP 請求

思考:
從上面可以看到DHCP 的網絡接口是tapae04cfac-d0,并非是ns-ae04cfac-d0,這是怎么一回事?
Neutron 通過 dnsmasq 提供 DHCP 服務,而 dnsmasq 如何獨立的為每個 network 服務呢?
答案:是通過 Linux Network Namespace 隔離

每個 dnsmasq 進程都位于獨立的 namespace, 命名為?
qdhcp-<\network id>

[root@linux-node1 ~]# neutron net-list +--------------------------------------+--------+------------------------------------------------------+ | id | name | subnets | +--------------------------------------+--------+------------------------------------------------------+ | c39c1348-5a8f-4291-9772-b03a22b085df | public | df82f43f-97fe-41d0-bdbd-933565102598 192.168.56.0/24 | +--------------------------------------+--------+------------------------------------------------------+[root@linux-node1 ~]# ip netns list qdhcp-c39c1348-5a8f-4291-9772-b03a22b085df (id: 0)ip netns list 命令列出所有的 namespace。 qdhcp-c39c1348-5a8f-4291-9772-b03a22b085df就是public的namespace

其實,宿主機本身也有一個 namespace,叫 root namespace,擁有所有物理和虛擬 interface device。?
物理 interface 只能位于 root namespace。

新創建的 namespace 默認只有一個 loopback device。?
管理員可以將虛擬 interface,例如 bridge,tap 等設備添加到某個 namespace。

對于 public的 DHCP 設備tapae04cfac-d0,需要將其放到 namespaceqdhcp-c39c1348-5a8f-4291-9772-b03a22b085df 中,但這樣會帶來一個問題:?
tapae04cfac-d0 將無法直接與 root namespace 中的 bridge 設備brqc39c1348-5a連接。

Neutron 使用 veth pair 解決了這個問題。

veth pair 是一種成對出現的特殊網絡設備,它們象一根虛擬的網線,可用于連接兩個 namespace。向 veth pair 一端輸入數據,在另一端就能讀到此數據。

tapae04cfac-d0與ns-ae04cfac-d0 就是一對 veth pair,它們將 qdhcp-c39c1348-5a8f-4291-9772-b03a22b085df 連接到brqc39c1348-5a。如下圖所示:

?

?

轉載于:https://www.cnblogs.com/linuxk/p/9454972.html

總結

以上是生活随笔為你收集整理的Openstack入门篇(十一)之neutron服务(控制节点)的部署与测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人久久精品 | 浪荡奴双性跪着伺候 | 精品国产视频一区二区 | 久久成人福利视频 | 欧美黄色片免费看 | 中文在线字幕免费观 | 性视频黄色 | 色综合久久久久综合体桃花网 | 日本wwwxxxx | 伊人久久大香 | 成人无码av片在线观看 | 中文字幕在线欧美 | 国产熟妇久久777777 | 在线不卡中文字幕 | 91极品美女 | 亚洲色图在线观看 | 中文字幕观看av | 久久久精品999| 无码人妻久久一区二区三区 | 国产激情小视频 | 国产精品精华液网站 | 国产精品2区 | 久久亚洲免费视频 | 久草综合网 | 国产成人久久精品麻豆二区 | 色av综合网 | 日日摸天天爽天天爽视频 | 欧美日韩亚洲综合 | 天堂av免费 | 风韵少妇spa私密视频 | 成人app在线 | 欧美一级不卡 | 国产日韩在线视频 | 日韩1级片 | 精品久久久久久中文字幕 | 欧美另类高清videos的特点 | 里番精品3d一二三区 | 狠狠的干狠狠的操 | 亚洲制服丝袜诱惑 | 欧美另类视频 | 成人在线免费网址 | 亚洲精品区 | 男人日女人在线观看 | 亚洲精品高清无码视频 | 国产精品人妻一区二区三区 | 国产裸体永久免费视频网站 | 亚洲国产成人精品女人 | 国产精品一区二区不卡 | 国产aa视频 | 久久精品网址 | 人妻精品一区一区三区蜜桃91 | 色欲久久久天天天综合网 | 欧美乱妇高清无乱码 | 亚洲综合在线一区二区 | 中文字幕第66页 | 国产精品羞羞答答在线观看 | 一区二区三区xxx | 成人www| 欧美高清大白屁股ass18 | 亚洲爽爆| 久久入 | 日本女优一区 | 国产精品视频成人 | 欧美 变态 另类 人妖 | 欧美俄罗斯乱妇 | 五月婷婷视频在线观看 | 亚洲第一色播 | 小小姑娘电影大全免费播放 | 精品无码三级在线观看视频 | 色欧美在线 | 欧美国产日韩在线视频 | 欧美日韩在线免费观看 | 久久久久久国产精品免费免费 | 久久精品不卡 | 三级网站在线看 | 日本做爰高潮又黄又爽 | 国产区视频在线观看 | av在线日韩 | 久久久久人妻一区精品色欧美 | 轻点好疼好大好爽视频 | 久久av色 | 中文字幕亚洲一区二区三区 | 高清免费视频日本 | 好吊妞视频一区二区三区 | 亚洲品质自拍视频 | 在线免费看av | 国产免费无码XXXXX视频 | 五月婷婷婷婷 | 欧美精品日韩 | 国产免费激情视频 | 亚洲成人一区在线 | 日韩视频一区在线观看 | 久久国产免费看 | 欧美自拍一区 | 亚洲天堂777| 中文字幕av免费在线观看 | 都市激情国产精品 | 亚洲第一免费播放区 | 黄页网站视频在线观看 |