Nova架构
Nova计算服务是Openstack的核心服务,Nova的架构如下:
Nova-架构.pngNova的服务架构比较复杂,众多子服务以后台demon的形式运行:
-
API
- nova-api - 接受并响应用户请求
-
Compute Core
-
nova-scheduler - nova调度程序,通过定义过滤方法筛选哪个计算节点来运行instance。
-
nova-compute - 通过Hypervisor api来管理虚拟机的生命周期
-
Hypervisor - 计算节点上运行的虚拟机管理程序,如KVM,Xen,VMware等
-
nova-conductor - 以前版本的计算节点是可以直接访问数据库的,出于安全和伸缩性的考虑,新的版本增加了该组件,计算节点的访问数据库要求将托管给该服务代理。
-
Console Interface
- nova-console - 支持多种方式访问控制台
- nova-novncproxy
- nova-spicehtml5proxy
- nova-xvpnvncproxy - 基于java的客户端访问
- nova-consoleauth - 为虚拟机console提供token支持
- nova-cert - x.509证书支持
- nova-console - 支持多种方式访问控制台
-
Database
nova的持久性数据将存储在数据库中
nova-database.png -
Massage Queue - 为解耦各个子服务,nova通过Message Queue来做为各个服务的消息中心。
查看nova-*各个子服务
nova-*nova-*工作流
image.png- 用户对api发送一个创建虚拟机的请求
- API将请求发送给RabbitMQ
- Nova-scheduler从RabbitMQ得到请求,然后运用调度算法,挑选合适的计算节点。
- Message 向指定的算节点的compute服务发送请求,节点的nova-compute服务调用Hypervisor创建好虚拟机。
- 在创建虚拟机的过程中,如果需要查询或更新数据库,compute服务会通过message queque向conductor发送请求。
Instance 管理常规操作
instance-manage.png常规操作
- Launch、Start、Reboot、Shut Off 和 Terminate 都很好理解。
- resize - 通过应用不同的 flavor 调整分配给 instance 的资源。
- Lock/Unlock - 可以防止对 instance 的误操作。
- Pause/Suspend/Resume - 暂停当前 instance,并在以后恢复。
Pause 和 Suspend 的区别在于 Pause 将 instance 的运行状态保存在计算节点的内存中,而 Suspend 保存在磁盘上。
Pause 的优点是 Resume 的速度比 Suspend 快;缺点是如果计算节点重启,内存数据丢失,就无法 Resume 了,而 Suspend 则没有这个问题。 - snapshot - 备份实例到glance中,snapshot可以用于生成image。
故障处理
计划内故障处理
- migrate - 将 instance 迁移到其他计算节点。
迁移之前,instance 会被 Shut Off,支持共享存储和非共享存储。 - live migrate - 与 Migrate 不同,Live Migrate 能不停机在线地迁移 instance,保证了业务的连续性。也支持共享存储和非共享存储(Block Migration)
- shelve migrate - Shelve 将 instance 保存到 Glance 上,之后可通过 Unshelve 重新部署。
Shelve 操作成功后,instance 会从原来的计算节点上删除。
Unshelve 会重新选择节点部署,可能不是原节点。
计划外故障处理
- instance故障
- rescue - 用指定的启动盘启动,进入 Rescue 模式,修复受损的系统盘。成功修复后,通过 Unrescue 正常启动 instance。
- rebuild - 如果 Rescue 无法修复,则只能通过 Rebuild 从已有的备份恢复。Instance 的备份是通过 snapshot 创建的,所以需要有备份策略定期备份。
- 计算节点故障 - 利用 共享存储 上 Instance 的镜像文件在其他计算节点上重建 Instance。
网友评论