OpenStack是可以通过标准的API接口来管理整个底层架构资源。 OpenStack软件控制大规模资源池,包括计算、存储、网络,通过控制面板和OpenStack API来操作这些资源。
OpenStack 提供块设备存储服务的组件是 Cinder,本质上是一个资源管理组件,将后端不同的存储设备进行封装,向外提供统一的API,本质上并不是一个存储系统,而是使用插件的方式,结合不同后端存储的驱动提供存储服务,核心是对卷的各种操作与管理。包括通过虚拟卷的方式为虚拟机提供云硬盘,或者可以用于存储并启动虚拟机实例。在虚拟机的各个生命周期中,具体能够实现如下几种操作:
1、在创建虚拟机的时候,需要对卷进行创建和挂载操作;
2、在使用虚拟机的时候,需要对卷进行扩展、备份操作;
3、在删除虚拟机的时候需要对卷进行分离、删除操作。
通过Cinder组件,用户可以方便、高效地管理虚拟机数据。
每个卷在 cinder 中都有一个对应的cinder-volume节点负责管理该卷,主要是为了解决卷操作的竞争问题,对于一个卷的所有操作(创建、挂载、卸载等)对会被 API 节点转发到对应的cinder-volume节点上处理。因此,如果某一个 cinder-volume 所在的节点产生故障,会导致该主机之前创建的所有卷无法操作,这显然存在严重的单点故障问题。
1、负载均衡 + pacemaker
为了避免单个cinder-volume服务故障导致cinder服务不可用,需要引入自动恢复机制,通常会使用pacemaker来管理,pacemaker轮询判断cinder-volume的存活状态,一旦发现挂了,pacemaker会尝试重启服务,如果依然重启失败,则尝试在另一台主机启动该服务,实现故障的自动恢复。