首页 » OpenStack系统架构设计实战 » OpenStack系统架构设计实战全文在线阅读

《OpenStack系统架构设计实战》2.9.5 创建虚拟机

关灯直达底部

1.虚拟机的创建过程

创建虚拟机之前,先创建登录虚拟机的密钥对。

[email protected]:~$ euca-add-keypair nubeblog > [email protected]:~$ 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 [email protected]:~$

需要注意,私钥nubeblog.pem需要修改访问权限为600,否则后面以这个私钥访问虚拟机时会报错。

[email protected]:~$ chmod 600 nubeblog.pem [email protected]:~$

使用euca2tools提供的命令euca-run-instances来创建虚拟机,需要指定密钥对、虚拟机映像ID,以及虚拟机类型。

[email protected]:~$ 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 [email protected]:~$

表明虚拟机已开始调度创建,注明一下,此处指定的密钥对的公钥,会在nova-compute创建虚拟机镜像时,注入镜像中去,位置是/root/.ssh/authorized_keys。这样在后面使用SSH登录虚拟机时,可直接用私钥登录。

过一段时间用euca-describe-instances查看虚拟机的状态。

[email protected]:~$ 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 [email protected]:~$

表明虚拟机已启动成功,fixed_ip地址为10.0.0.3,虚拟机的ID为i-0000002f。此时这个fixed_ip地址还是OpenStack内网的IP地址,在公司内网络还无法访问这台虚拟机,为此,要给这台虚拟机配置一个floating_ip,即外网可访问的IP。

先从floating_ip资源池中申请一个floating_ip。

[email protected]:~$ euca-allocate-address ADDRESS [email protected]:~$

把这个地址分派给刚才申请的虚拟机,用虚拟机的ID来指代具体的虚拟机。

[email protected]:~$ euca-associate-address -i i-0000002f 10.46.169.168ADDRESS 10.46.169.168 [email protected]:~$

再次查看虚拟机状态,可发现10.46.169.168已指派成功。

[email protected]:~$ 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 [email protected]:~$

这里的具体机制我们在2.7.8节已详述过。这样还是ping不通,SSH登录不了虚拟机,需要通过euca-authorize打开nova-Network上的防火墙端口。

[email protected]:~/clouds$ euca-authorize default -P tcp -p 21--s 0.0.0.0/0GROUPdefault PERMISSIONdefaultALLOWStcp2222FROMCIDR0.0.0.0/[email protected]:~/clouds$ euca-authorize default -P icmp -t -1:[email protected]ev:~/clouds$

这样,就可以ping通虚拟机了,也可以用SSH登录。使用私钥nubeblog.pem,不用输入密码。

ssh –i nubeblog.pem [email protected]

虚拟机使用完后,若想关闭,请按下面步骤进行。

1)把floating_ip与虚拟机解绑定。

[email protected]:~$ euca-disassociate-address 10.46.169.168ADDRESS 10.46.169.168

2)将floating_ip归还给资源池,供其他人使用。

[email protected]:~$ euca-release-address 10.46.169.168ADDRESS [email protected]:~$

3)终止虚拟机,释放资源。

[email protected]:~$ euca-terminate-instances i-0000002f [email protected]:~$