- OpenStack云計算實戰(zhàn)
- 鐘小平 許寧
- 4986字
- 2020-05-22 15:44:40
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)行實際示范。
- 這就是搜索引擎
- Firebase Cookbook
- 網(wǎng)站建設(shè)與管理
- OPENStack云框架應(yīng)用管理實踐
- 巧學(xué)巧用Dreamweaver CS6、Flash CS6、Fireworks CS6網(wǎng)站制作
- 計算機網(wǎng)絡(luò)
- 監(jiān)控平臺解密:IT系統(tǒng)風(fēng)險感知和洞察
- 軟件定義網(wǎng)絡(luò)核心原理與應(yīng)用實踐
- 萬億級流量轉(zhuǎn)發(fā):BFE核心技術(shù)與實現(xiàn)
- JavaScript+jQuery前端開發(fā)基礎(chǔ)教程(微課版)
- 信息安全技術(shù)
- Google Plus First Look:a tip-packed,comprehensive look at Google+
- Hands-On Networking with Azure
- 制造網(wǎng)格
- 網(wǎng)頁制作案例教程(第2版)