讀古今文學網 > OpenStack系統架構設計實戰 > 2.9.5 創建虛擬機 >

2.9.5 創建虛擬機

1.虛擬機的創建過程

創建虛擬機之前,先創建登錄虛擬機的密鑰對。

douglas@ubuntu:~$ euca-add-keypair nubeblog > nubeblog.pemdouglas@ubuntu:~$ more nubeblog.pem KEYPAIR nubeblogf3:31:04:5f:90:9e:14:f0:6e:fa:eb:23:19:55:11:ae-----BEGIN RSA PRIVATE KEY-----MIICXAIBAAKBgQDMV9dyOyPZ9wHSwGKRWUa8EATqyb2fMXgbqh3mBRNgPsKAdLbSzScA6RXGcdWHlnkteVIQPrpJP/RB6IsJtmYVUsGnV1GUWX7i4qaT5tzmizRedBPxnUVYLn02RjLiIPK7gPtyZbqaWhRhU3KVxjQW37RdjEvHa5YQ1ZKAC0TFsQIBIwKBgBGD30RONkXh+NeM1T+okQjOLE6jk+kS3mjFcEbqfgDvb8HeHkyVPduBsWjH7bsqJ6TP4nZrxtMUHEAp4Aglk7iIF+M9KnkPACS+iccCtjr56RCo93QO/3xcewcXBp9t+ItDumTU016MXbp0RkZbBBKbwLIPiZJ8TBT1FQpoqEv7AkEA7B9ICY4Gl3svrIBnsSRSJYa0CFGeoW4maBa6tHamFEcqP+/b1noXMOz2EIju4/spSnYs4JVE7kW23j75gPc3NQJBAN2Lrtl+tBMCBoc0GmtqjwIOkrh7XkzdMY9104UZorRX4yriU4bz3sOMlqELHLxevybLaKEcKtMuECFeDRqiGA0CQQCALj0MgEy4ofVPA+CEu/IUXxFGWDGK1WVOcr0gIyb1ELCJG88cqK2A9aomO7TiKUJM/lLgUQgpk48oMNCWd5L/AkEA0OLJbfse0BfaRPackSn0jOkrQDnN8LNL/EqFmsBmNQJoeOQFnH+I5EK56ExOSzTC229UBZ43AaB1m820lXRCjwJBAJYPfuyD47WsjtmshPaeaEo/3Dp8DVM657HpnLjO7Jf8uCuNl4FrZzLET7Yik97ofsBs4tqTurICyLrIAvabX1E=-----END RSA PRIVATE KEY-----douglas@ubuntu:~$

需要注意,私鑰nubeblog.pem需要修改訪問權限為600,否則後面以這個私鑰訪問虛擬機時會報錯。

douglas@ubuntu:~$ chmod 600 nubeblog.pem douglas@ubuntu:~$

使用euca2tools提供的命令euca-run-instances來創建虛擬機,需要指定密鑰對、虛擬機映像ID,以及虛擬機類型。

douglas@ubuntu:~$ euca-run-instances -k nubeblog -t m1.tiny ami-644208f3 RESERVATION r-fuj1o91vnubeblogdefaultINSTANCE i-0000003e ami-644208f3 scheduling nubeblog (nubeblog, None) 0 m1.tiny 2011-10-26T08:27:46Z unknown zonedouglas@ubuntu:~$

表明虛擬機已開始調度創建,註明一下,此處指定的密鑰對的公鑰,會在nova-compute創建虛擬機鏡像時,注入鏡像中去,位置是/root/.ssh/authorized_keys。這樣在後面使用SSH登錄虛擬機時,可直接用私鑰登錄。

過一段時間用euca-describe-instances查看虛擬機的狀態。

douglas@ubuntu:~$ euca-describe-instances RESERVATION r-3dl846nrnubeblogdefaultINSTANCEi-0000002fami-644208f3 10.0.0.310.0.0.3running nubeblog (nubeblog, nova-compute-1) 0m1.small2011-10-13T08:46:44Z novadouglas@ubuntu:~$

表明虛擬機已啟動成功,fixed_ip地址為10.0.0.3,虛擬機的ID為i-0000002f。此時這個fixed_ip地址還是OpenStack內網的IP地址,在公司內網絡還無法訪問這台虛擬機,為此,要給這台虛擬機配置一個floating_ip,即外網可訪問的IP。

先從floating_ip資源池中申請一個floating_ip。

douglas@ubuntu:~$ euca-allocate-address ADDRESS 10.46.169.168douglas@ubuntu:~$

把這個地址分派給剛才申請的虛擬機,用虛擬機的ID來指代具體的虛擬機。

douglas@ubuntu:~$ euca-associate-address -i i-0000002f 10.46.169.168ADDRESS 10.46.169.168 i-0000002fdouglas@ubuntu:~$

再次查看虛擬機狀態,可發現10.46.169.168已指派成功。

douglas@ubuntu:~$ euca-describe-instances RESERVATION r-3dl846nrnubeblogdefaultINSTANCEi-0000002fami-644208f3 10.46.169.168 10.0.0.3running nubeblog (nubeblog, nova-compute-1) 0m1.small2011-10-13T08:46:44Z novadouglas@ubuntu:~$

這裡的具體機制我們在2.7.8節已詳述過。這樣還是ping不通,SSH登錄不了虛擬機,需要通過euca-authorize打開nova-Network上的防火牆端口。

stackops@stackops-dev:~/clouds$ euca-authorize default -P tcp -p 21--s 0.0.0.0/0GROUPdefault PERMISSIONdefaultALLOWStcp2222FROMCIDR0.0.0.0/0stackops@stackops-dev:~/clouds$ euca-authorize default -P icmp -t -1:-1GROUPdefaultPERMISSIONdefaultALLOWSicmp-1-1stackops@stackops-dev:~/clouds$

這樣,就可以ping通虛擬機了,也可以用SSH登錄。使用私鑰nubeblog.pem,不用輸入密碼。

ssh –i nubeblog.pem [email protected]

虛擬機使用完後,若想關閉,請按下面步驟進行。

1)把floating_ip與虛擬機解綁定。

douglas@ubuntu:~$ euca-disassociate-address 10.46.169.168ADDRESS 10.46.169.168

2)將floating_ip歸還給資源池,供其他人使用。

douglas@ubuntu:~$ euca-release-address 10.46.169.168ADDRESS 10.46.169.168douglas@ubuntu:~$

3)終止虛擬機,釋放資源。

douglas@ubuntu:~$ euca-terminate-instances i-0000002f douglas@ubuntu:~$