云計(jì)算openstack核心組件——neutron網(wǎng)絡(luò)服務(wù)(5)

一、虛擬機(jī)獲取 ip:

用 namspace 隔離 DHCP 服務(wù)

Neutron 通過 dnsmasq 提供 DHCP 服務(wù),而 dnsmasq 通過 Linux Network Namespace 獨(dú)立的為每個(gè) network 服務(wù)隔離

在二層網(wǎng)絡(luò)上硫眯,VLAN 可以將一個(gè)物理交換機(jī)分割成幾個(gè)獨(dú)立的虛擬交換機(jī)。類似地方淤,在三層網(wǎng)絡(luò)上媚创,Linux network namespace 可以將一個(gè)物理三層網(wǎng)絡(luò)分割成幾個(gè)獨(dú)立的虛擬三層網(wǎng)絡(luò)竞膳。

每個(gè) namespace 都有自己獨(dú)立的網(wǎng)絡(luò)棧航瞭,包括 route table,firewall rule坦辟,network interface device 等刊侯。

Neutron 通過 namespace 為每個(gè) network 提供獨(dú)立的 DHCP 和路由服務(wù),從而允許租戶創(chuàng)建重疊的網(wǎng)絡(luò)锉走。如果沒有 namespace滨彻,網(wǎng)絡(luò)就不能重疊,這樣就失去了很多靈活性挠日。

每個(gè) dnsmasq 進(jìn)程都位于獨(dú)立的 namespace, 命名為 qdhcp-<network id>疮绷,例如 flat_net:

image.png

ip netns list 命令列出所有的 namespace

ip netns exec <network namespace name> <command> 管理 namespace

root namespace:

其實(shí)翰舌,宿主機(jī)本身也有一個(gè) namespace嚣潜,叫 root namespace,擁有所有物理和虛擬 interface device椅贱。物理 interface 只能位于 root namespace懂算。

新創(chuàng)建的 namespace 默認(rèn)只有一個(gè) loopback device。管理員可以將虛擬 interface庇麦,例如 bridge计技,tap 等設(shè)備添加到某個(gè) namespace。

對(duì)于 flat_net 的 DHCP 設(shè)備 tap19a0ed3d-fe山橄,需要將其放到 namespace qdhcp-7bf09be4-8653-4869-84f0-33494f238627 中垮媒,但這樣會(huì)帶來一個(gè)問題:tap19a0ed3d-fe 將無法直接與 root namespace 中的 bridge 設(shè)備 brqf153b42f-c3 連接。

Neutron 使用 veth pair 解決了這個(gè)問題航棱。

veth pair 是一種成對(duì)出現(xiàn)的特殊網(wǎng)絡(luò)設(shè)備睡雇,它們象一根虛擬的網(wǎng)線,可用于連接兩個(gè) namespace饮醇。向 veth pair 一端輸入數(shù)據(jù)它抱,在另一端就能讀到此數(shù)據(jù)。

tap19a0ed3d-fe 與 ns-19a0ed3d-fe 就是一對(duì) veth pair朴艰,它們將 qdhcp-f153b42f-c3a1-4b6c-8865-c09b5b2aa274 連接到 brqf153b42f-c3观蓄。

如下圖所示:

image.png

可以通過 ip netns exec qdhcp-7bf09be4-8653-4869-84f0-33494f238627 ip a命令查看ns-ba07bb93配置:

image.png

獲取 dhcp IP 過程分析

在創(chuàng)建 instance 時(shí),Neutron 會(huì)為其分配一個(gè) port祠墅,里面包含了 MAC 和 IP 地址信息侮穿。這些信息會(huì)同步更新到 dnsmasq 的 host 文件。如下圖所示:

image.png

同時(shí) nova-compute 會(huì)設(shè)置虛機(jī) VIF 的 MAC 地址毁嗦。

image.png
image.png

一切準(zhǔn)備就緒亲茅,instance 獲取 IP 的過程如下:

1. vm 開機(jī)啟動(dòng),發(fā)出 DHCPDISCOVER 廣播,該廣播消息在整個(gè) net 中都可以被收到芯急。

2. 廣播到達(dá) veth tap19a0ed3d-fe勺届,然后傳送給 veth pair 的另一端 ns-19a0ed3d-fe。dnsmasq 在它上面監(jiān)聽娶耍,dnsmasq 檢查其 host 文件免姿,發(fā)現(xiàn)有對(duì)應(yīng)項(xiàng),于是dnsmasq 以 DHCPOFFER 消息將 IP(192.168.254.18)榕酒、子網(wǎng)掩碼(255.255.255.0)胚膊、地址租用期限等信息發(fā)送給 vm。

3. vm 發(fā)送 DHCPREQUEST 消息確認(rèn)接受此 DHCPOFFER想鹰。

4. dnsmasq 發(fā)送確認(rèn)消息 DHCPACK紊婉,整個(gè)過程結(jié)束。

二辑舷、VXLAN簡(jiǎn)介:

overlay network概念:

overlay network 是指建立在其他網(wǎng)絡(luò)上的網(wǎng)絡(luò)喻犁。overlay network 中的節(jié)點(diǎn)可以看作通過虛擬(或邏輯)鏈路連接起來的。overlay network 在底層可能由若干物理鏈路組成何缓,但對(duì)于節(jié)點(diǎn)肢础,不需要關(guān)心這些底層實(shí)現(xiàn)。

例如 P2P 網(wǎng)絡(luò)就是 overlay network碌廓,隧道也是传轰。vxlan 和 gre 都是基于隧道技術(shù)實(shí)現(xiàn)的,它們也都是 overlay network谷婆。

目前 linux bridge 只支持 vxlan慨蛙,不支持 gre;

open vswitch 兩者都支持纪挎。vxlan 與 gre 實(shí)現(xiàn)非常類似期贫,而且 vxlan 用得較多,所以本教程只介紹 vxlan廷区。

VXLAN簡(jiǎn)介:

VXLAN 為 Virtual eXtensible Local Area Network唯灵。正如名字所描述的,VXLAN 提供與 VLAN 相同的以太網(wǎng)二層服務(wù)隙轻,但擁有更強(qiáng)的擴(kuò)展性和靈活性埠帕。與 VLAN 相比,

VXLAN 有下面幾個(gè)優(yōu)勢(shì):

1. 支持更多的二層網(wǎng)段玖绿。

VLAN 使用 12-bit 標(biāo)記 VLAN ID敛瓷,最多支持 4094 個(gè) VLAN,這對(duì)大型云部署會(huì)成為瓶頸斑匪。VXLAN 的 ID (VNI 或者 VNID)則用 24-bit 標(biāo)記呐籽,支持 16777216 個(gè)二層網(wǎng)段。

2. 能更好地利用已有的網(wǎng)絡(luò)路徑。

VLAN 使用 Spanning Tree Protocol 避免環(huán)路狡蝶,這會(huì)導(dǎo)致有一半的網(wǎng)絡(luò)路徑被 block 掉庶橱。VXLAN 的數(shù)據(jù)包是封裝到 UDP 通過三層傳輸和轉(zhuǎn)發(fā)的,可以使用所有的路徑贪惹。

3. 避免物理交換機(jī) MAC 表耗盡苏章。

由于采用隧道機(jī)制,TOR (Top on Rack) 交換機(jī)無需在 MAC 表中記錄虛擬機(jī)的信息奏瞬。

VXLAN 封裝和包格式:

VXLAN 是將二層建立在三層上的網(wǎng)絡(luò)枫绅。通過將二層數(shù)據(jù)封裝到 UDP 的方式來擴(kuò)展數(shù)據(jù)中心的二層網(wǎng)段數(shù)量。

VXLAN 是一種在現(xiàn)有物理網(wǎng)絡(luò)設(shè)施中支持大規(guī)模多租戶網(wǎng)絡(luò)環(huán)境的解決方案硼端。VXLAN 的傳輸協(xié)議是 IP + UDP并淋。

VXLAN 定義了一個(gè) MAC-in-UDP 的封裝格式。在原始的 Layer 2 網(wǎng)絡(luò)包前加上 VXLAN header珍昨,然后放到 UDP 和 IP 包中县耽。通過 MAC-in-UDP 封裝,VXLAN 能夠在 Layer 3 網(wǎng)絡(luò)上建立起了一條 Layer 2 的隧道曼尊。

VXLAN 包的格式如下:

image.png

如上圖所示酬诀,VXLAN 引入了 8-byte VXLAN header脏嚷,其中 VNI 占 24-bit骆撇。VXLAN 和原始的 L2 frame 被封裝到 UDP 包中。這 24-bit 的 VNI 用于標(biāo)示不同的二層網(wǎng)段父叙,能夠支持 16777216 個(gè) LAN神郊。

VXLAN Tunnel Endpoint

VXLAN 使用 VXLAN tunnel endpoint (VTEP) 設(shè)備處理 VXLAN 的封裝和解封。每個(gè) VTEP 有一個(gè) IP interface趾唱,配置了一個(gè) IP 地址涌乳。VTEP 使用該 IP 封裝 Layer 2 frame,并通過該 IP interface 傳輸和接收封裝后的 VXLAN 數(shù)據(jù)包甜癞。

下面是 VTEP 的示意圖:

image.png

VXLAN 獨(dú)立于底層的網(wǎng)絡(luò)拓?fù)湎ο环催^來,兩個(gè) VTEP 之間的底層 IP 網(wǎng)絡(luò)也獨(dú)立于 VXLAN悠咱。VXLAN 數(shù)據(jù)包是根據(jù)外層的 IP header 路由的蒸辆,該 header 將兩端的 VTEP IP 作為源和目標(biāo) IP。

VXLAN 封裝和轉(zhuǎn)發(fā)包的過程析既,以及 Linux 對(duì) VXLAN 的原生支持

VXLAN 包轉(zhuǎn)發(fā)流程

VXLAN 在 VTEP 間建立隧道躬贡,通過 Layer 3 網(wǎng)絡(luò)傳輸封裝后的 Layer 2 數(shù)據(jù)。下面例子演示了數(shù)據(jù)如何在 VXLAN 上傳輸:

image.png

圖中 Host-A 和 Host-B 位于 VNI 10 的 VXLAN眼坏,通過 VTEP-1 和 VTEP-2 之間建立的 VXLAN 隧道通信拂玻。數(shù)據(jù)傳輸過程如下:

1. Host-A 向 Host-B 發(fā)送數(shù)據(jù)時(shí),Host-B 的 MAC 和 IP 作為數(shù)據(jù)包的目標(biāo) MAC 和 IP,Host-A 的 MAC 作為數(shù)據(jù)包的源 MAC 和 IP檐蚜,然后通過 VTEP-1 將數(shù)據(jù)發(fā)送出去魄懂。

2. VTEP-1 從自己維護(hù)的映射表中找到 MAC-B 對(duì)應(yīng)的 VTEP-2,然后執(zhí)行 VXLAN 封裝闯第,加上 VXLAN 頭逢渔,UDP 頭,以及外層 IP 和 MAC 頭乡括。此時(shí)的外層 IP 頭肃廓,目標(biāo)地址為 VTEP-2 的 IP,源地址為 VTEP-1 的 IP诲泌。同時(shí)由于下一跳是 Router-1盲赊,所以外層 MAC 頭中目標(biāo)地址為 Router-1 的 MAC。

3. 數(shù)據(jù)包從 VTEP-1 發(fā)送出后敷扫,外部網(wǎng)絡(luò)的路由器會(huì)依據(jù)外層 IP 頭進(jìn)行路由哀蘑,最后到達(dá)與 VTEP-2 連接的路由器 Router-2。

4. Router-2 將數(shù)據(jù)包發(fā)送給 VTEP-2葵第。VTEP-2 負(fù)責(zé)解封數(shù)據(jù)包绘迁,依次去掉外層 MAC 頭,外層 IP 頭卒密,UDP 頭 和 VXLAN 頭缀台。VTEP-2 依據(jù)目標(biāo) MAC 地址將數(shù)據(jù)包發(fā)送給 Host-B。

上面的流程我們看到 VTEP 是 VXLAN 的最核心組件哮奇,負(fù)責(zé)數(shù)據(jù)的封裝和解封膛腐。隧道也是建立在 VTEP 之間的,VTEP 負(fù)責(zé)數(shù)據(jù)的傳送鼎俘。

VTEP 是如何提前獲知 IP -- MAC -- VTEP 相關(guān)信息的呢哲身?

答案是:

1. Neutron 知道每一個(gè) port 的狀態(tài)和信息; port 保存了 IP贸伐,MAC 相關(guān)數(shù)據(jù)勘天。

2. instance 啟動(dòng)時(shí),其 port 狀態(tài)變化過程為:down -> build -> active捉邢。

3. 每當(dāng) port 狀態(tài)發(fā)生變化時(shí)脯丝,Neutron 都會(huì)通過 RPC 消息通知各節(jié)點(diǎn)上的 Neutron agent,使得 VTEP 能夠更新 VM 和 port 的相關(guān)信息歌逢。

VTEP 可以根據(jù)這些信息判斷出其他 Host 上都有哪些 VM巾钉,以及它們的 MAC 地址,這樣就能直接與之通信秘案,從而避免了不必要的隧道連接和廣播砰苍。

Linux 對(duì) VXLAN 的支持

VTEP 可以由專有硬件來實(shí)現(xiàn)潦匈,也可以使用純軟件實(shí)現(xiàn)。目前比較成熟的 VTEP 軟件實(shí)現(xiàn)包括:

1. 帶 VXLAN 內(nèi)核模塊的 Linux

2. Open vSwitch

我們先來看 Linux 如何支持 VXLAN

image.png

實(shí)現(xiàn)方式:

1. Linux vxlan 創(chuàng)建一個(gè) UDP Socket赚导,默認(rèn)在 8472 端口監(jiān)聽茬缩。

2. Linux vxlan 在 UDP socket 上接收到 vxlan 包后,解包吼旧,然后根據(jù)其中的 vxlan ID 將它轉(zhuǎn)給某個(gè) vxlan interface凰锡,然后再通過它所連接的 linux bridge 轉(zhuǎn)給虛機(jī)。

3. Linux vxlan 在收到虛機(jī)發(fā)來的數(shù)據(jù)包后圈暗,將其封裝為多播 UDP 包掂为,從網(wǎng)卡發(fā)出。

網(wǎng)卡分配示例:

image.png
  1. 控制節(jié)點(diǎn)三個(gè)網(wǎng)卡(eth0, eth1, eth2)员串,計(jì)算節(jié)點(diǎn)兩網(wǎng)卡(eth0, eth1)勇哗。

  2. 合并 Management 和 API 網(wǎng)絡(luò),使用 eth0寸齐,IP 段為 192.168.104.0/24欲诺。

  3. VM 網(wǎng)絡(luò)使用 eht1。

  4. 控制節(jié)點(diǎn)的 eth2 與 External 網(wǎng)絡(luò)連接渺鹦,IP 段為 10.10.10.0/24箫爷。

**ML2 mechanism driver: Linux Bridge 和 Open vSwitch **

Linux Bridge :

image.png

Open vSwitch:

image.png

Open vSwitch 中的網(wǎng)絡(luò)設(shè)備:

br-ex:連接外部(external)網(wǎng)絡(luò)的網(wǎng)橋痊夭。

br-int:集成(integration)網(wǎng)橋颜启,所有 instance 的虛擬網(wǎng)卡和其他虛擬網(wǎng)絡(luò)設(shè)備都將連接到該網(wǎng)橋过咬。

br-tun:隧道(tunnel)網(wǎng)橋,基于隧道技術(shù)的 VxLAN 和 GRE 網(wǎng)絡(luò)將使用該網(wǎng)橋進(jìn)行通信卧斟。

tap interface:命名為 tapXXXX殴边。

linux bridge:命名為 qbrXXXX。

veth pair:命名為 qvbXXXX, qvoXXXX

OVS integration bridge:命名為 br-int珍语。

OVS patch ports:命名為 int-br-ethX 和 phy-br-ethX(X 為 interface 的序號(hào))。

OVS provider bridge:命名為 br-ethX(X 為 interface 的序號(hào))竖幔。

物理 interface:命名為 ethX(X 為 interface 的序號(hào))板乙。

OVS tunnel bridge:命名為 br-tun。

三拳氢、三層網(wǎng)絡(luò)介紹:

虛擬機(jī)訪問外網(wǎng):

(1)虛擬機(jī)中訪問一個(gè)外網(wǎng)地址192.168.253.3募逞,并用 traceroute 命令跟蹤路由查看:

image.png

(2)根據(jù)網(wǎng)絡(luò)拓?fù)洌捎谔摍C(jī)訪問外網(wǎng)要經(jīng)過本網(wǎng)段的網(wǎng)關(guān)192.168.101.1馋评,然后經(jīng)過路由的外網(wǎng)接口轉(zhuǎn)發(fā)出去放接,到達(dá)192.168.253.3

image.png

查看路由命名空間:

ip netns list

image.png

(3)查看路由命名空間的網(wǎng)絡(luò)配置,查到路由連接外網(wǎng)的端口和ip:

ip netns exec qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1 ip a

image.png

路由上的外網(wǎng)端口正好接到外網(wǎng)網(wǎng)橋br-ex上:ovs-vsctl show 查看

image.png

(4)查看路由iptables NAT 轉(zhuǎn)發(fā)規(guī)則留特,記錄對(duì)私網(wǎng)做的SNAT

ip netns exec qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1 iptables -t nat -L

ip netns exec qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1 iptables -t nat -S

image.png

規(guī)則解釋: -A neutron-l3-agent-snat -o qg-8df29d32-d6 -j SNAT --to-source 192.168.253.65 記錄了流入接口qg-8df29d32-d6 的數(shù)據(jù)包做SNAT(基于源地址轉(zhuǎn)發(fā))纠脾,將源地址修改為192.168.253.65

(5)驗(yàn)證:

在虛機(jī) ping 192.168.253.3 時(shí)玛瘸, 可以通過 tcpdump 分別觀察 router 兩個(gè) interface 的 icmp 數(shù)據(jù)包來驗(yàn)證 SNAT 的行為:

在路由qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1,可查到私有網(wǎng)絡(luò)的網(wǎng)關(guān)接口qr-7b56f58b-b5苟蹈,并在路由中抓取網(wǎng)關(guān)接口的icmp包:

ip netns exec qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1 tcpdump -i qr-7b56f58b-b5 -n icmp

image.png

在路由中糊渊,抓取路由的外網(wǎng)接口qg-8df29d32-d6的icmp包:

ip netns exec qrouter-176bd7e0-6427-46a5-906a-be6a373a29a1 tcpdump -i qg-8df29d32-d6 -n icmp

image.png

外網(wǎng)訪問虛機(jī)——floating ip原理:

SNAT 讓 instance 能夠直接訪問外網(wǎng),但外網(wǎng)還不能直接訪問 instance慧脱。因?yàn)?instance 沒有外網(wǎng) IP渺绒。這里 “直接訪問 instance” 是指通信連接由外網(wǎng)發(fā)起,例如從外網(wǎng) SSH 實(shí)例菱鸥。

(1)首先將實(shí)例綁定浮動(dòng) ip192.168.253.66宗兼, floating IP 是配置在 router 的外網(wǎng) interface 上的,再查看 router 的 interface 配置:

image.png

(2)在實(shí)例中ping 192.168.253.3 外網(wǎng)地址氮采,在路由的qr-7b56f58b-b5 接口上针炉,實(shí)例訪問外網(wǎng)ip,外網(wǎng)ip將數(shù)據(jù)包轉(zhuǎn)發(fā)回實(shí)例ip扳抽;但在路由的qg-8df29d32-d6 接口上篡帕,始終是通過 floating IP 192.168.253.66 與外網(wǎng)通信。

image.png

(3) 原因是在路由中iptables做了DNA T(基于目的地址轉(zhuǎn)發(fā))贸呢,查看 router 的 NAT 規(guī)則:

image.png

當(dāng) router 接收到從外網(wǎng)發(fā)來的包镰烧,如果目的地址是 floating IP 192.168.254.66,將目的地址修改為實(shí)例的 IP 192.168.101.3楞陷。這樣外網(wǎng)的包就能送達(dá)到實(shí)例怔鳖;

當(dāng)實(shí)例發(fā)送數(shù)據(jù)到外網(wǎng),源地址 192.168.101.3 將被修改為 floating IP 192.168.253.66固蛾;

neutron配置過程

詳細(xì)配置過程見:https://docs.openstack.org/ocata/install-guide-rdo/neutron-controller-install.html

一结执、控制端的配置:創(chuàng)建用戶和授權(quán)
1、創(chuàng)建數(shù)據(jù)庫(kù)用戶

MariaDB [(none)] CREATE DATABASE neutron;

2艾凯、給用戶授權(quán)

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';

3献幔、創(chuàng)建OpenStack用戶

$ openstack user create --domain default --password-prompt neutron

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | fdb0f541e28141719b6a43c8944bf1fb |
| name                | neutron                          |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+

4、把用戶加入到服務(wù)項(xiàng)目的角色里

$ openstack role add --project service --user neutron admin

5趾诗、創(chuàng)建服務(wù)

$ openstack service create --name neutron \
  --description "OpenStack Networking" network

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Networking             |
| enabled     | True                             |
| id          | f71529314dab4a4d8eca427e701d209e |
| name        | neutron                          |
| type        | network                          |
+-------------+----------------------------------+

6蜡感、創(chuàng)建服務(wù)端口地址

$ openstack endpoint create --region RegionOne \
  network public http://controller:9696

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 85d80a6d02fc4b7683f611d7fc1493a3 |
| interface    | public                           |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
  network internal http://controller:9696

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 09753b537ac74422a68d2d791cf3714f |
| interface    | internal                         |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+

$ openstack endpoint create --region RegionOne \
  network admin http://controller:9696

+--------------+----------------------------------+
| Field        | Value                            |
+--------------+----------------------------------+
| enabled      | True                             |
| id           | 1ee14289c9374dffb5db92a5c112fc4e |
| interface    | admin                            |
| region       | RegionOne                        |
| region_id    | RegionOne                        |
| service_id   | f71529314dab4a4d8eca427e701d209e |
| service_name | neutron                          |
| service_type | network                          |
| url          | http://controller:9696           |
+--------------+----------------------------------+

7、控制端數(shù)據(jù)包安裝

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

8恃泪、編輯主配置文件 vim /etc/neutron/neutron.conf

[DEFAULT]

state_path = /var/lib/neutron  #狀態(tài)路徑

auth_strategy = keystone  #認(rèn)證方式

core_plugin = ml2 #核心策略

service_plugins = router #服務(wù)策略路由模式

dhcp_agent_notification = true #dhcp服務(wù)代理通知開啟

allow_overlapping_ips = True

notify_nova_on_port_status_changes = true

notify_nova_on_port_data_changes = true

transport_url = [rabbit://openstack:admin@controller](rabbit://openstack:admin@controller/) #rabbit用戶的主控制地址

[agent]

[cors]

[cors.subdomain]

[database]
數(shù)據(jù)庫(kù)的連接用戶地址
connection = mysql+[pymysql://neutron:NEUTRON_DBPASS@controller/neutron](pymysql://neutron:NEUTRON_DBPASS@controller/neutron)

[keystone_authtoken]

auth_uri = [http://controller:5000](http://controller:5000/) #認(rèn)證地址

auth_url = [http://controller:35357](http://controller:35357/) #認(rèn)證地址

memcached_servers = controller:11211 #緩存主機(jī)節(jié)點(diǎn)

auth_type = password 

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = neutron

[matchmaker_redis]

[nova]

region_name = RegionOne

auth_url = [http://controller:35357](http://controller: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]

9郑兴、ml2配置文件vim /etc/neutron/plugins/ml2/ml2_conf.ini

[DEFAULT]
 
[ml2]
type_drivers = flat,vxlan
tenant_network_types = vxlan  #租借網(wǎng)絡(luò)類型
mechanism_drivers = openvswitch,l2population  #驅(qū)動(dòng)原理
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

10、vim openvswitch_agent.ini

[DEFAULT]
 
[agent]
tunnel_types = vxlan #隧道模式
l2_population = True
 
[ovs]
tunnel_bridge = br-tun
local_ip = 192.168.254.63
bridge_mappings =
 
[securitygroup]
firewall_driver = iptables_hybrid
enable_security_group = true
 
[xenapi]

11贝乎、vim l3_agent.ini

[DEFAULT]
interface_driver = openvswitch
external_network_bridge = br-ex #對(duì)外的網(wǎng)橋
 
[agent]
 
[ovs]

12情连、metadata_agent.ini

[DEFAULT]
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET #元數(shù)據(jù)代理分享
 
[agent]
 
[cache]

13、dhcp_agent.ini

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

14览效、Nova主配置文件修改

[neutron]
# ...
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron

15却舀、重啟相關(guān)服務(wù)虫几,添加網(wǎng)橋

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
 
ovs-vsctl add-br br-ex
 
ovs-vsctl add-port br-ex eth2
 
systemctl enable neutron-l3-agent.service
 
systemctl start neutron-l3-agent.service

二、compute端網(wǎng)絡(luò)配置
1禁筏、數(shù)據(jù)包下載

yum install openvswitch openstack-neutron-openvswitch ebtables ipset -y

2持钉、主配置文件編輯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@controller](rabbit://openstack:admin@controller/)

[agent]

[cors]

[cors.subdomain]

[database]

#connection = mysql+[pymysql://neutron:NEUTRON_DBPASS@controller/neutron](pymysql://neutron:NEUTRON_DBPASS@controller/neutron)

[keystone_authtoken]

auth_uri = [http://controller:5000](http://controller:5000/)

auth_url = [http://controller:35357](http://controller:35357/)

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = neutron

[matchmaker_redis]

[nova]

#region_name = RegionOne

#auth_url = [http://controller:35357](http://controller: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]

3、openstack_agent.ini

[DEFAULT]
 
[agent]
tunnel_types = vxlan
l2_population = True
 
[ovs]
tunnel_bridge = br-tun
local_ip = 192.168.254.63  #ip地址改為第二塊網(wǎng)卡篱昔,用于虛擬機(jī)通訊地址
bridge_mappings =
 
[securitygroup]
firewall_driver = iptables_hybrid
enable_security_group = true
 
[xenapi]

4每强、主配置文件Nova vim /etc/nova/nova.conf

[neutron]
# ...
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = neutron

5、重啟相關(guān)服務(wù)

systemctl restart openstack-nova-compute.service

systemctl enable openvswitch neutron-openvswitch-agent
systemctl start openvswitch neutron-openvswitch-agent
systemctl stop openvswitch neutron-openvswitch-agent
 

6州刽、驗(yàn)證服務(wù)啟動(dòng)是否成功

+-------------------+-------------------+-------+-------------------+-------+-------+-------------------+
| ID                | Agent Type        | Host  | Availability Zone | Alive | State | Binary            |
+-------------------+-------------------+-------+-------------------+-------+-------+-------------------+
| 16666dcc-08fd-48d | Open vSwitch      | node2 | None              | True  | UP    | neutron-          |
| a-b573-8d96acf761 | agent             |       |                   |       |       | openvswitch-agent |
| 74                |                   |       |                   |       |       |                   |
| 3ae6228f-3045-4f1 | Metadata agent    | node1 | None              | True  | UP    | neutron-metadata- |
| 6-91ff-           |                   |       |                   |       |       | agent             |
| 43459ad0d19c      |                   |       |                   |       |       |                   |
| 426dc17a-6791-4c2 | Open vSwitch      | node3 | None              | True  | UP    | neutron-          |
| 6-b8a9-75e57fb8a5 | agent             |       |                   |       |       | openvswitch-agent |
| 59                |                   |       |                   |       |       |                   |
| be5a3b41-5705-4a1 | Open vSwitch      | node1 | None              | True  | UP    | neutron-          |
| 6-b808-ddb31693e0 | agent             |       |                   |       |       | openvswitch-agent |
| 3a                |                   |       |                   |       |       |                   |
| c3ce8503-7181     | DHCP agent        | node1 | nova              | True  | UP    | neutron-dhcp-     |
| -413b-be8f-       |                   |       |                   |       |       | agent             |
| 1ec49271e498      |                   |       |                   |       |       |                   |
| dab9b985-4e1d-4f3 | L3 agent          | node1 | nova              | True  | UP    | neutron-l3-agent  |
| 3-9280-900eed5266 |                   |       |                   |       |       |                   |
| 4c                |                   |       |                   |       |       |                   |
+-------------------+-------------------+-------+-------------------+-------+-------+-------------------+
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末空执,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子穗椅,更是在濱河造成了極大的恐慌辨绊,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匹表,死亡現(xiàn)場(chǎng)離奇詭異门坷,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)袍镀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門默蚌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人苇羡,你說我怎么就攤上這事绸吸。” “怎么了设江?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵锦茁,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我叉存,道長(zhǎng)码俩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任鹉胖,我火速辦了婚禮握玛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘甫菠。我一直安慰自己,他們只是感情好冕屯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布寂诱。 她就那樣靜靜地躺著,像睡著了一般安聘。 火紅的嫁衣襯著肌膚如雪痰洒。 梳的紋絲不亂的頭發(fā)上瓢棒,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音丘喻,去河邊找鬼脯宿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛泉粉,可吹牛的內(nèi)容都是我干的连霉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嗡靡,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼跺撼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起讨彼,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤歉井,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后哈误,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哩至,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年蜜自,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了菩貌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡袁辈,死狀恐怖菜谣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情晚缩,我是刑警寧澤尾膊,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站荞彼,受9級(jí)特大地震影響冈敛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸣皂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一抓谴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寞缝,春花似錦癌压、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至被啼,卻和暖如春帜消,著一層夾襖步出監(jiān)牢的瞬間棠枉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工泡挺, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留辈讶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓娄猫,卻偏偏與公主長(zhǎng)得像贱除,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子稚新,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容