官术网_书友最值得收藏!

2.4 定制虛擬網(wǎng)絡(luò)實現(xiàn)虛擬機與外網(wǎng)通信

通過RDO的Packstack安裝的OpenStack已經(jīng)默認(rèn)配置了虛擬網(wǎng)絡(luò),但是由于沒有針對實際環(huán)境進(jìn)行配置,即使分配浮動IP地址,創(chuàng)建的虛擬機實例也不能與外網(wǎng)通信,這里通過修改相關(guān)配置來定制虛擬網(wǎng)絡(luò),從而實現(xiàn)虛擬機與外網(wǎng)通信。這里僅介紹最基本的網(wǎng)絡(luò)設(shè)置,關(guān)于OpenStack網(wǎng)絡(luò)服務(wù)的詳細(xì)講解請參見第8章。

2.4.1 將網(wǎng)絡(luò)接口與外部橋接口br-ex進(jìn)行關(guān)聯(lián)

在虛擬化環(huán)境中,多個虛擬機之間需要通信,除了可以使用傳統(tǒng)的Linux網(wǎng)橋和VLAN(虛擬局域網(wǎng)),還可以使用虛擬交換機Open vSwitch。Open vSwitch不僅支持二層交換,還支持標(biāo)準(zhǔn)的管理接口,如NetFlow、SPAN、LACP、802.lag等。通過RDO的Packstack安裝的OpenStack默認(rèn)使用Neutron組件提供虛擬網(wǎng)絡(luò)服務(wù),使用虛擬交換機Open vSwitch作為網(wǎng)絡(luò)代理插件。網(wǎng)絡(luò)代理插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini的部分默認(rèn)值如下:

[ml2]

type_drivers = vxlan,flat

tenant_network_types = vxlan

mechanism_drivers =openvswitch

由于采用的是虛擬交換機,而作為OpenStack節(jié)點的CentOS 7主機的IP地址配置在網(wǎng)絡(luò)接口eno16777736上,而該接口并未與主機系統(tǒng)的外部橋接口br-ex產(chǎn)生關(guān)聯(lián),因而需要通過配置將網(wǎng)絡(luò)接口與外部橋接口br-ex進(jìn)行關(guān)聯(lián)。

默認(rèn)沒有創(chuàng)建br-ex,在/etc/sysconfig/network-scripts目錄下創(chuàng)建一個名為ifcfg-br-ex的配置文件,例中將其內(nèi)容設(shè)置如下:

DEVICE=br-ex

DEVICETYPE=ovs

TYPE=OVSBridge

BOOTPROTO=static

IPADDR=192.168.199.21

NETMASK=255.255.255.0

GATEWAY=192.168.199.1

DNS1=114.114.114.114

ONBOOT=yes

這里將網(wǎng)絡(luò)接口eno16777736的IP配置移到ifcfg-br-ex文件中,接著更改/etc/sysconfig/networkscripts/ifcfg-eno16777736文件的內(nèi)容如下:

DEVICE=eno16777736

TYPE=OVSPort

DEVICETYPE=ovs

OVS_BRIDGE=br-ex

ONBOOT=yes

HWADDR=00:0c:29:72:95:6e

這里的HWADDR要設(shè)置為網(wǎng)絡(luò)接口eno16777736的MAC地址。

要使上述修改生效,需要重啟Network服務(wù),通常執(zhí)行以下命令或者重啟計算機。

systemctl restart network

2.4.2 配置虛擬網(wǎng)絡(luò)

系統(tǒng)默認(rèn)配置了一個內(nèi)部網(wǎng)絡(luò)、一個外部網(wǎng)絡(luò)和一個路由。普通用戶只能查看屬于自己項目的網(wǎng)絡(luò),而且默認(rèn)沒有權(quán)限管理外部網(wǎng)絡(luò),而云管理員用戶可以查看所有的網(wǎng)絡(luò)配置。在Dashboard界面中退出demo登錄,再通過admin登錄,單擊導(dǎo)航窗格中的“管理員”節(jié)點,再依次單擊“網(wǎng)絡(luò)”和“網(wǎng)絡(luò)”節(jié)點,顯示當(dāng)前的網(wǎng)絡(luò)列表,如圖2-31所示,默認(rèn)為demo項目定義了一個內(nèi)部網(wǎng)絡(luò)“private”,為 admin 項目定義了一個外部網(wǎng)絡(luò)“public”,可根據(jù)需要進(jìn)一步查看每個網(wǎng)絡(luò)的詳情。單擊“路由”,顯示當(dāng)前的路由列表,如圖2-32所示,默認(rèn)為demo項目定義了一個名為“router1”的路由。

圖2-31 網(wǎng)絡(luò)列表

圖2-32 路由列表

這些網(wǎng)絡(luò)配置往往并不符合實際需要,現(xiàn)在要對已有的虛擬網(wǎng)絡(luò)進(jìn)行重新配置。

1.刪除現(xiàn)有路由

因為默認(rèn)配置的路由已經(jīng)將外部網(wǎng)絡(luò)設(shè)置為網(wǎng)關(guān),需要先將網(wǎng)關(guān)清除或者直接刪除該路由,才能刪除外部網(wǎng)絡(luò)。這里選擇直接刪除該路由,打開路由列表(見圖2-32),選中路由“router1”,單擊“刪除路由”按鈕。

2.配置外部網(wǎng)絡(luò)

打開網(wǎng)絡(luò)列表(見圖2-31),選中“public”網(wǎng)絡(luò),單擊“刪除網(wǎng)絡(luò)”按鈕刪除它(當(dāng)然也可以保留該外部網(wǎng)絡(luò),創(chuàng)建另一個不同名的外部網(wǎng)絡(luò)),然后創(chuàng)建一個新的外部網(wǎng)絡(luò)。

單擊“創(chuàng)建網(wǎng)絡(luò)”按鈕,彈出圖2-33所示的“創(chuàng)建網(wǎng)絡(luò)”界面,設(shè)置網(wǎng)絡(luò)的基本信息。“名稱”字段設(shè)置為“public”,“項目”字段選擇“admin”,“供應(yīng)商網(wǎng)絡(luò)類型”字段選擇“Flat”,“物理網(wǎng)絡(luò)”字段設(shè)置為“extnet”,并選中“共享的”和“外部網(wǎng)絡(luò)”復(fù)選框。

圖2-33 創(chuàng)建一個外部網(wǎng)絡(luò)

在通過RDO的Packstack安裝的OpenStack中,默認(rèn)的虛擬交換機Open vSwitch代理配置/etc/neutron/plugins/ml2/openvswitch_agent.ini文件中的網(wǎng)橋映射設(shè)置為:

bridge_mappings =extnet:br-ex

這表示將物理網(wǎng)絡(luò)名extnet映射到代理的特定節(jié)點Open vSwitch的網(wǎng)橋名br-ex。因此這里將供應(yīng)商網(wǎng)絡(luò)類型設(shè)置為“Flat”(這是一種最簡單的網(wǎng)絡(luò)拓?fù)漕愋停瑢⑽锢砭W(wǎng)絡(luò)設(shè)置為“extnet”。

這里的“啟用管理員狀態(tài)”復(fù)選框表示啟用此網(wǎng)絡(luò),“共享的”復(fù)選框表示該網(wǎng)絡(luò)可在項目之間共享。默認(rèn)選中“創(chuàng)建子網(wǎng)”復(fù)選框,單擊“下一步”按鈕切換到“子網(wǎng)”標(biāo)簽頁,如圖2-34所示,設(shè)置子網(wǎng)名稱、網(wǎng)絡(luò)地址(這里為節(jié)點主機所在的外部網(wǎng)絡(luò)的IP地址,需要使用斜線表示法,也就是CIDR記法)和網(wǎng)關(guān)IP(外部網(wǎng)絡(luò)使用的網(wǎng)關(guān)IP地址)。

圖2-34 為外部網(wǎng)絡(luò)設(shè)置子網(wǎng)

單擊“下一步”按鈕進(jìn)入“編輯子網(wǎng)”界面,如圖2-35所示。由于設(shè)置的子網(wǎng)與節(jié)點主機所在的外部子網(wǎng)重疊,這里可以在子網(wǎng)中設(shè)置一個專門供虛擬機實例使用的地址段,這個地址段在OpenStack中通過分配地址池進(jìn)行設(shè)置。

圖2-35 設(shè)置子網(wǎng)詳情

設(shè)置完畢,單擊“已創(chuàng)建”按鈕完成外部網(wǎng)絡(luò)的創(chuàng)建。新創(chuàng)建的“public”網(wǎng)絡(luò)加入網(wǎng)絡(luò)列表中,可根據(jù)需要查看和修改其設(shè)置,管理其子網(wǎng)。

3.調(diào)整內(nèi)部網(wǎng)絡(luò)

打開網(wǎng)絡(luò)列表,單擊其中的內(nèi)部網(wǎng)絡(luò)“private”進(jìn)入網(wǎng)絡(luò)詳情界面,切換到“子網(wǎng)”標(biāo)簽頁,單擊“編輯子網(wǎng)”按鈕彈出相應(yīng)的界面,再單擊“子網(wǎng)詳情”,如圖2-36所示,這里添加一個DNS服務(wù)器,目的是讓虛擬機實例能夠進(jìn)行域名解析。

圖2-36 修改內(nèi)部網(wǎng)絡(luò)的子網(wǎng)設(shè)置

4.配置路由

完成上述配置后,還要新建一個路由來連接內(nèi)部網(wǎng)絡(luò)和外部網(wǎng)絡(luò)。路由的配置操作以各項目為主。以demo用戶身份登錄,在Dashboard界面中單擊左側(cè)導(dǎo)航窗格中的“項目”節(jié)點,再依次單擊“網(wǎng)絡(luò)”和“路由”節(jié)點,單擊“新建路由”按鈕彈出圖2-37所示的窗口,為路由命名,并單擊“新建路由”按鈕。

圖2-37 新建路由

在路由列表中單擊“設(shè)置網(wǎng)關(guān)”按鈕彈出圖2-38所示的“設(shè)置網(wǎng)關(guān)”界面,外部網(wǎng)絡(luò)選擇“public”,單擊“提交”按鈕。在路由列表中單擊該路由名稱進(jìn)入路由詳情界面,切換到“接口”標(biāo)簽頁,單擊“增加接口”按鈕彈出圖2-39所示的“增加接口”界面,子網(wǎng)選擇內(nèi)部網(wǎng)絡(luò)“private”,單擊“提交”按鈕。

圖2-38 為路由設(shè)置網(wǎng)關(guān)

圖2-39 為路由增加接口

5.查看網(wǎng)絡(luò)拓?fù)?/p>

網(wǎng)絡(luò)拓?fù)渲荒茉凇绊椖俊惫?jié)點中查看。完成路由設(shè)置后,以demo用戶身份登錄,單擊左側(cè)導(dǎo)航窗格中的“項目”節(jié)點,再依次單擊“網(wǎng)絡(luò)”和“網(wǎng)絡(luò)拓?fù)洹惫?jié)點,可以查看虛擬網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),以“正常”模式顯示,如圖2-40所示,這里顯示由路由器將內(nèi)外網(wǎng)連接起來。將鼠標(biāo)移動至路由圖標(biāo)可以進(jìn)一步顯示路由的配置信息,如圖2-41所示。

圖2-40 網(wǎng)絡(luò)拓?fù)?/p>

圖2-41 查看路由信息

2.4.3 為虛擬機實例分配浮動IP地址

OpenStack虛擬機實例可以分配兩類地址。一類是私有IP地址,由DHCP服務(wù)器分配給實例的網(wǎng)絡(luò)接口。這個地址在實例中使用像“ip a”這樣的命令可以看到。該地址是私有網(wǎng)絡(luò)的一部分,用于同一廣播域內(nèi)的實例之間的通信,通過虛擬交換機(每個計算節(jié)點上的 L2代理),也可以通過虛擬路由器(L3代理)從其他私有網(wǎng)絡(luò)得到。

另一類是浮動IP地址,這是由Neutron組件提供的服務(wù)。它不用任何DHCP服務(wù),直接在客戶端內(nèi)靜態(tài)設(shè)置即可。事實上,客戶操作系統(tǒng)并不知道它被分配了一個浮動IP地址。將數(shù)據(jù)包發(fā)送到分配有浮動IP地址的網(wǎng)絡(luò)接口,由Neutron的L3代理負(fù)責(zé)。分配有浮動IP地址的實例能夠被提供浮動IP的公網(wǎng)訪問。

浮動IP地址和私有IP地址能夠同時用于一個單獨的網(wǎng)絡(luò)接口。網(wǎng)絡(luò)中的其他計算機若要訪問這些實例,就要為該實例分配浮動IP。

以demo用戶身份登錄,在Dashboard界面中打開實例列表,要為某實例分配浮動IP地址,可單擊右端“動作”菜單中的“綁定浮動IP”命令,彈出“管理浮動IP的關(guān)聯(lián)”界面,如圖2-42所示,默認(rèn)沒有分配浮動IP。

圖2-42 管理浮動IP的關(guān)聯(lián)

單擊“+”按鈕彈出如圖2-43所示的“分配浮動IP”界面,資源池選擇“public”,單擊“分配IP”按鈕。回到“管理浮動IP的關(guān)聯(lián)”界面,此時分配一個IP地址,如圖2-44所示,單擊“關(guān)聯(lián)”按鈕。

圖2-43 分配浮動IP

圖2-44 已分配一個浮動IP

例中為兩個實例都分配了浮動IP,結(jié)果如圖2-45所示。

圖2-45 分配浮動IP的虛擬機實例

至此,就可以進(jìn)行虛擬機與外部網(wǎng)絡(luò)的通信測試了。可以在虛擬機實例與節(jié)點主機、外部網(wǎng)關(guān)之間使用ping進(jìn)行互通測試。

2.4.4 使用SSH訪問虛擬機實例

OpenStack虛擬機實例,除了可以在Dashboard界面中通過控制臺訪問,還可以使用SSH遠(yuǎn)程訪問。SSH是主流的遠(yuǎn)程訪問工具,完成上述配置之后,即可在外部網(wǎng)絡(luò)的計算機上使用SSH訪問虛擬機實例。這需要使用SSH證書的私鑰登錄實例,無須登錄密碼,因為相應(yīng)的公鑰已經(jīng)注入實例中。

1.在Linux計算機上使用SSH訪問虛擬機實例

使用私鑰登錄實例,登錄用戶名取決于所用的鏡像,基本用法為:

ssh -i 密鑰文件 <用戶名>@<實例IP地址>

這里直接在節(jié)點主機(運行CentOS 7)上測試cirros虛擬機(例中浮動IP地址為192.168.1.54)的訪問。

首先將前面下載的證書私鑰文件(.pem)復(fù)制到用戶主目錄下的.ssh 子目錄(該子目錄默認(rèn)隱藏)中。

然后修改該密鑰文件的訪問權(quán)限,例中執(zhí)行以下命令:

[root@node-a ~]# cd ~/.ssh

[root@node-a .ssh]# chmod 700 demo-key.pem

最后執(zhí)行以下命令訪問虛擬機:

[root@node-a ~]# ssh -i ~/.ssh/demo-key.pem cirros@192.168.199.54

The authenticity of host '192.168.199.54 (192.168.199.63)' can't be established.

RSA key fingerprint is SHA256:RKi9Iwl1j/3lBOzxXJ72Hiyk+leZKYuqswK6nZ+gaTg.

RSA key fingerprint is MD5:54:0a:4a:0c:8e:8f:ef:9a:12:d1:ed:d8:29:7a:10:c7.

Are you sure you want to continue connecting (yes/no)? yes

Warning: Permanently added '192.168.199.54' (RSA) to the list of known hosts.

$

首次執(zhí)行SSH命令建立連接,由于要訪問的虛擬機不可信,會出現(xiàn)“Are you sure you want to continue connecting (yes/no)”提示,選擇“yes”將該虛擬機加入~/.ssh/known_hosts文件中,以后建立到該虛擬機的SSH連接就不再給出這個提示了。

由于公鑰已經(jīng)注入虛擬機實例中,使用SSH訪問無須密碼。

2.在Windows計算機上使用SSH訪問虛擬機實例

在Windows計算機上借助第三方SSH工具可以訪問虛擬機實例,如SecureCRT和PuTTY。這里以SecureCRT為例,在節(jié)點主機(VMware虛擬機)所在的宿主機上安裝該軟件,執(zhí)行以下操作步驟。

(1)添加SSH私鑰。啟動SecureCrt軟件,選擇菜單“Tools”→“Manage Agent Keys”,將彈出圖2-46所示的對話框。單擊“Add”按鈕,會彈出文件選擇對話框,選擇之前創(chuàng)建密鑰時所下載的pem格式文件,單擊“Open”(打開)按鈕,這樣就將SSH私鑰加入SecureCRT,然后單擊“Close”按鈕關(guān)閉該對話框。

(2)創(chuàng)建SSH會話。選擇菜單“File”→“Connect”啟動會話管理器(Session Manager),單擊“+”按鈕啟動新建會話向?qū)Вx擇協(xié)議(SSH2),然后在對話框中設(shè)置遠(yuǎn)程主機的IP地址、端口和登錄用戶名,最后設(shè)置會話名稱,如圖2-47所示。

圖2-46 導(dǎo)入SSH私鑰

圖2-47 設(shè)置遠(yuǎn)程主機登錄信息

(3)啟動會話連接。在會話管理器中,鼠標(biāo)右鍵單擊要連接的會話名,選擇“Connect Terminal”命令,首次連接會彈出“New Host Key”對話框,要求驗證遠(yuǎn)程主機,單擊“Accept & Save”按鈕即可。接著出現(xiàn)圖2-48所示的對話框,要求輸入登錄密碼,由于公鑰已經(jīng)注入實例中,SSH連接無須密碼,單擊“Skip”按鈕跳過。

(4)登錄成功后進(jìn)行測試。在終端窗口中進(jìn)行命令行操作,如圖2-49所示,這里執(zhí)行命令ping www.baidu.com測試外部網(wǎng)絡(luò)通信。

圖2-48 輸入登錄密碼

圖2-49 終端窗口操作

3.為虛擬機實例設(shè)置用戶賬戶和密碼

通過控制臺訪問虛擬機實例,需要提供用戶名和密碼才能登錄。不像測試用的 Cirros 鏡像,從網(wǎng)站下載的OpenStack預(yù)置鏡像文件并不知道用戶賬戶和密碼,這可以通過SSH訪問來解決。

這里在節(jié)點主機通過SSH訪問基于Fedora鏡像(登錄用戶名fedora)的fedora虛擬機(例中浮動IP地址為192.168.1.58),連接建立后可以修改root賬戶和密碼,示范過程如下:

[root@node-a .ssh]# ssh -i ~/.ssh/demo-key.pem fedora@192.168.199.58

Last login: Sat Jun 9 06:29:19 2018 from 192.168.199.201

[fedora@fedora ~]$ sudo passwd root

Changing password for user root.

New password:

Retype new password:

passwd: all authentication tokens updated successfully.

接下來在控制臺中以root賬戶和密碼登錄,如圖2-50所示。

圖2-50 以root賬戶和密碼登錄

2.4.5 基于提供者網(wǎng)絡(luò)的虛擬機實例

OpenStack項目中的虛擬網(wǎng)絡(luò)分為兩種類型:提供者網(wǎng)絡(luò)(Provider network,又譯為供應(yīng)商網(wǎng)絡(luò))和自服務(wù)網(wǎng)絡(luò)(Self-service network)。

提供者網(wǎng)絡(luò)由OpenStack管理員創(chuàng)建,并直接映射到現(xiàn)有的一個物理網(wǎng)絡(luò)上,可以在多個項目(租戶)之間共享。它可以為虛擬機實例提供基于二層橋接和交換網(wǎng)絡(luò)的虛擬網(wǎng)絡(luò),虛擬網(wǎng)絡(luò)中的DHCP為實例提供IP地址。每個物理網(wǎng)絡(luò)最多只能實現(xiàn)一個虛擬網(wǎng)絡(luò)。

自服務(wù)網(wǎng)絡(luò)又稱項目網(wǎng)絡(luò)(Project network)或租戶網(wǎng)絡(luò)(Tenant network),由普通用戶創(chuàng)建,用來在項目中提供連接功能,默認(rèn)情況下被完全隔離,并且不會和其他項目進(jìn)行共享。該虛擬網(wǎng)絡(luò)通過三層路由和NAT功能連接到物理網(wǎng)絡(luò)中,DHCP服務(wù)為虛擬機實例提供IP地址。虛擬機實例可以訪問外部網(wǎng)絡(luò)(物理網(wǎng)絡(luò)),但是從外部網(wǎng)絡(luò)訪問實例則需要分配浮動IP地址。

在網(wǎng)絡(luò)創(chuàng)建過程中,項目可以共享這兩種虛擬網(wǎng)絡(luò),可以分別基于這兩種虛擬網(wǎng)絡(luò)來創(chuàng)建虛擬機實例,如圖2-51所示。前面的例子是基于項目(租戶)網(wǎng)絡(luò)創(chuàng)建虛擬機。下面簡單示范基于提供者網(wǎng)絡(luò)創(chuàng)建虛擬機。

圖2-51 項目網(wǎng)絡(luò)和提供者網(wǎng)絡(luò)并存

(1)前面創(chuàng)建的外部網(wǎng)絡(luò)就是一個提供者網(wǎng)絡(luò),檢查確認(rèn)該網(wǎng)絡(luò)的子網(wǎng)的 DHCP 服務(wù)啟用,如圖2-35所示,要選中“激活DHCP”復(fù)選框,這樣才能為虛擬機實例分配IP地址。

(2)以demo用戶身份登錄,在Dashboard界面中依次展開“項目”→“計算”→“實例”節(jié)點,單擊“創(chuàng)建實例”按鈕彈出相應(yīng)的界面,首先為該實例命名(例中為“test-provider-net”)。

(3)設(shè)置源,選擇“cirros”鏡像作為實例的源。

(4)選擇實例類型,這里選擇“m1.tiny”即可。

(5)單擊“網(wǎng)絡(luò)”,選擇實例所在的網(wǎng)絡(luò),這里選擇外部網(wǎng)絡(luò)“public”,如圖2-52所示。

(6)其他選項保持默認(rèn)設(shè)置,單擊“創(chuàng)建實例”按鈕。

可以打開實例列表查看新創(chuàng)建的實例的基本信息和狀態(tài)。這里查看網(wǎng)絡(luò)拓?fù)洌梢园l(fā)現(xiàn)新創(chuàng)建的實例直接掛到“public”網(wǎng)絡(luò),并分配該網(wǎng)絡(luò)的IP地址,如圖2-53所示。

讀者可以使用控制臺或SSH訪問該虛擬機,測試網(wǎng)絡(luò)通信。

圖2-52 為實例選擇提供者網(wǎng)絡(luò)“public”

圖2-53 實例直接連接網(wǎng)絡(luò)“public”

通過上述學(xué)習(xí),相信讀者對OpenStack已有了直觀印象,能夠通過OpenStack創(chuàng)建和使用虛擬機了。本章建立的RDO一體化OpenStack云平臺,將作為本書的主要實驗平臺用于后續(xù)章節(jié)OpenStack的各個服務(wù)和組件的驗證、配置、管理和使用操作示范。考慮到實際應(yīng)用中大多需要手動部署OpenStack,后續(xù)章節(jié)中還會以CentOS 7操作系統(tǒng)為例介紹各個OpenStack服務(wù)和組件的手動安裝及配置的詳細(xì)步驟,由于實驗條件和篇幅限制,這一部分沒有進(jìn)行實際示范。

主站蜘蛛池模板: 阜城县| 东乡县| 河池市| 卓资县| 陇川县| 福安市| 内江市| 安泽县| 宽城| 涟源市| 大兴区| 日照市| 高台县| 固始县| 白银市| 泗洪县| 西畴县| 蒙城县| 宜兰市| 淮北市| 西昌市| 新津县| 临夏县| 辽阳县| 白山市| 九江县| 文成县| 太原市| 手机| 原平市| 通化县| 邯郸市| 新巴尔虎左旗| 沂南县| 沭阳县| 家居| 曲沃县| 千阳县| 呈贡县| 益阳市| 许昌市|