在完成前面所有的操作之后就可以启动实例了,当然可以在dashboard中操作。下面就介绍命令行中的操作。

首先加载demo的环境变量,source demo-openrc.sh

创建密钥对:

Openstack命令行启动实例_消息队列


查看密钥对;

Openstack命令行启动实例_密钥对_02


首先查看创建实例的一些资源:

1、查看大小类型,可以理解为分区类型

Openstack命令行启动实例_数据库_03


2、查看镜像列表

Openstack命令行启动实例_消息队列_04


3、查看网络列表

Openstack命令行启动实例_消息队列_05


4、查看安全组列表

Openstack命令行启动实例_数据库_06


5、启动一个实例

Openstack命令行启动实例_数据库_07


Openstack命令行启动实例_消息队列_08


查看实例列表:

Openstack命令行启动实例_消息队列_09



允许实例使用虚拟控制台

nova get-vnc-console demo-instance1 novnc


要想PING通实例还需要设置安全组的规则:

nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0

nova secgroup-add-rule default tcp 22 22 0.0.0.0/0

然后生成浮动IP

neutron floatingip-create ext-net

将生成的浮动IP绑定到实例上

nova floating-ip-associate demo-instance1 10.20.0.102

查看实例;

nova list

可以看见实例与一个浮动IP绑定

然后PING这个浮动IP就相当于ping实例了。如果可以ping同则表示openstack基本搭建完成。



启动实例的全过程解析:

Openstack命令行启动实例_数据库_10


首先在dashboard或命令行中请求创建实例,会发生接下来的事情:

1、首先登录dashboard会向keystone请求认证,包括用户名,密码

2、keystone向dashboard返回认证结果,若成功则显示dashboard的界面

3、用户在dashboard发起创建实例的请求,dashboard将请求交给nova-api

4、nova-api向keystone请求认证干用户在该租户中是否有权限创建实例

5、keystone将认证结果返回给nova-api

6、nova-api查询数据库中这种类型的实例是否已达到上限

7、数据库返回结果给nova-api

8、nova-api将请求发送到消息队列中

9、nova-sheduler在消息队列中读取请求

10、nova-sheduler查询数据库中的计算节点信息

11、数据库返回当前openstack中计算节点的信息

12、nova-sheduler经过调度算法,将任务分配某个计算节点,并将任务发送到消息队列中

13、nova-compute在消息队列中读取任务

14、nova-compute将创建实例需要的资源的服务访问接口请求传送给消息队列

15、消息队列将查询请求交给nova-conductor

16、nova-conductor将请求交给nova-db

17、nova-db将查询结果返回给nova-conductor

18、nova-conductor将查询结果发送到消息队列中

19、nova-compute从消息队列中获取各服务的访问端口,然后去连接glance-api

20、glance-api通过keystone认证

21、glance-api将镜像传递给nova-compute

22、nova-compute请求neutron-api

23、neutron-api通过keystone认证

24、neutron-api将IP地址返回给nova-compute

25、nova-compute请求cinder-api

26、cinder-api通过keystone认证

27、cinder-api将实例的块存储返回给nova-compute

28、nova-compute将创建实例的任务交给系统的虚拟驱动完成实例的创建