配置计算 (zun) 服务 (可选)

计算服务 (zun) 处理在 OpenStack 环境中创建虚拟机。OpenStack-Ansible 使用的许多默认选项都位于 zun role 中的 defaults/main.yml 中。

可用区

具有多个可用区部署者可以设置 Ansible 变量 zun_default_schedule_zone 以指定新请求的可用区。这在具有不同类型 hypervisor 的环境中很有用,其中构建会根据其资源需求发送到某些硬件类型。

例如,如果您有在两个机架上运行的服务器,且不共享 PDU。这两个机架可以分组为两个可用区。当一个机架断电时,另一个仍然可以工作。通过将您的容器分布到这两个机架(可用区)上,您将提高您的服务可用性。

Ceph (RBD) 的块设备调优

启用 Ceph 并定义 zun_libvirt_images_rbd_pool 默认情况下会更改两个 libvirt 配置

  • hw_disk_discard: unmap

  • disk_cachemodes: network=writeback

在 libvirt 中将 hw_disk_discard 设置为 unmap 可为底层块设备启用 discard(有时称为 TRIM)支持。这允许回收底层磁盘上未使用的块。

disk_cachemodes 设置为 network=writeback 允许数据在每次更改时写入缓存,但这些更改会在定期的时间间隔刷新到磁盘。这可以提高 Ceph 块设备上的写入性能。

您可以使用两个 Ansible 变量(此处显示默认值)来自定义这些设置

zun_libvirt_hw_disk_discard: 'unmap'
zun_libvirt_disk_cachemodes: 'network=writeback'

您可以通过将 zun_libvirt_hw_disk_discard 设置为 ignore 来禁用 discard。可以将 zun_libvirt_disk_cachemodes 设置为空字符串以禁用 network=writeback

以下最小示例配置将 zun 设置为使用 ephemeral-vms Ceph pool。以下示例使用 cephx 身份验证,并需要为 ephemeral-vms pool 存在的 cinder 帐户

zun_libvirt_images_rbd_pool: ephemeral-vms
ceph_mons:
  - 172.29.244.151
  - 172.29.244.152
  - 172.29.244.153

如果您为 pool 有不同的 Ceph 用户名,请将其用作

cinder_ceph_client: <ceph-username>

Config drive

默认情况下,OpenStack-Ansible 不配置 zun 以强制为 zun 构建的每个实例配置 config drive。元数据服务提供用于在实例内部的 cloud-init 的配置信息。只有当实例未安装 cloud-init 或不支持处理元数据时,才需要 config drive。

部署者可以设置 Ansible 变量以强制为每个虚拟机部署 config drive

zun_force_config_drive: True

某些格式的 config drive 可能会阻止实例在 hypervisor 之间正确迁移。如果您需要强制 config drive 并且能够迁移实例,请使用 zun_zun_conf_overrides 变量将 config drive 格式设置为 vfat

zun_zun_conf_overrides:
  DEFAULT:
    config_drive_format: vfat
    force_config_drive: True

Libvirtd 连接性和身份验证

默认情况下,OpenStack-Ansible 以以下方式配置 libvirt daemon

  • 已启用 TLS 连接

  • 已禁用 TCP 明文连接

  • 通过 TCP 连接的身份验证使用 SASL

您可以使用以下 Ansible 变量自定义这些设置

# Enable libvirtd's TLS listener
zun_libvirtd_listen_tls: 1

# Disable libvirtd's plaintext TCP listener
zun_libvirtd_listen_tcp: 0

# Use SASL for authentication
zun_libvirtd_auth_tcp: sasl

Multipath

Nova 支持 iSCSI 基存储的 multipath。通过配置覆盖启用 zun 中的 multipath 支持

zun_zun_conf_overrides:
  libvirt:
      iscsi_use_multipath: true

共享存储和同步 UID/GID

指定 zun 用户的自定义 UID 和 zun 组的自定义 GID,以确保它们在每个主机上都是相同的。这在使用计算节点上的共享存储时很有帮助,因为它允许实例迁移而不会出现文件系统所有权失败。

默认情况下,Ansible 创建 zun 用户和组而不指定 UID 或 GID。要为 UID 或 GID 指定自定义值,请设置以下 Ansible 变量

zun_system_user_uid = <specify a UID>
zun_system_group_gid = <specify a GID>

警告

在部署了 OpenStack-Ansible 的环境之后设置此值可能会导致故障、错误和普遍的不稳定性。这些值应仅在部署 OpenStack 环境之前设置一次,然后不再更改。