配置计算服务组

为了有效地管理和使用计算节点,计算服务必须知道每个计算节点的状态。这可能包括用户启动新的虚拟机、调度器向活动节点发送请求,或查询服务组 API 以确定节点是否处于活动状态等事件。

当运行 nova-compute 守护进程的计算工作进程启动时,它会调用 join API 加入计算组。任何服务(例如调度器)都可以查询组的成员资格及其节点的状态。在内部,服务组客户端驱动程序会自动更新计算工作进程的状态。

数据库服务组驱动程序

默认情况下,计算使用数据库驱动程序来跟踪节点是否处于活动状态。在计算工作进程中,此驱动程序会定期向数据库发送 db update 命令,表示“我正常”并带有时间戳。计算使用预定义的超时时间 (service_down_time) 来确定节点是否已死亡。

该驱动程序存在一些限制,这在某些环境下可能会有问题。如果需要检查大量的计算工作节点,数据库可能会承受很大的负载,这可能导致超时触发,并且活动节点可能会被错误地认为已死亡。默认超时时间为 60 秒。在这种情况下,减少超时值可以有所帮助,但您还必须更频繁地更新数据库,这又会增加数据库的工作负载。

数据库包含瞬态数据(例如节点是否处于活动状态)和持久数据(例如虚拟机所有者的条目)。通过服务组抽象,计算可以将每种类型分别处理。

Memcache 服务组驱动程序

Memcache 服务组驱动程序使用 memcached,这是一种分布式内存对象缓存系统,用于提高网站性能。有关更多详细信息,请参阅 memcached.org

要使用 memcache 驱动程序,您必须安装 memcached。您可能已经安装了它,因为相同的驱动程序也用于 OpenStack 对象存储和 OpenStack 仪表板。要安装 memcached,请参阅 安装教程和指南 中的 *环境 -> Memcached* 部分,具体取决于您的发行版。

要在每个节点上使用 memcache 驱动程序,需要在 /etc/nova/nova.conf 文件中配置以下值

# Driver for the ServiceGroup service
servicegroup_driver = "mc"

# Memcached servers. Use either a list of memcached servers to use for caching (list value),
# or "<None>" for in-process caching (default).
memcached_servers = <None>

# Timeout; maximum time since last check-in for up service (integer value).
# Helps to define whether a node is dead
service_down_time = 60