高级配置¶
端点网络配置¶
当部署 OpenStack 云时,每个服务的 REST API 都表示为一系列端点。这些端点是内部 URL 和外部 URL。
Kolla 提供两种选项来将这些端点分配给网络地址
组合 - 两个端点共享相同的 IP 地址
分离 - 外部 URL 分配给与内部 URL 使用的 IP 地址不同的 IP 地址
与这些选项相关的配置参数是
kolla_internal_vip_address
network_interface
kolla_external_vip_address
kolla_external_vip_interface
对于组合选项,设置以下两个变量,同时允许其他两个变量接受其默认值。在这种配置中,所有 REST API 请求(内部和外部)都将通过相同的网络流动。
kolla_internal_vip_address: "10.10.10.254"
network_interface: "eth0"
对于分离选项,设置这四个变量。在这种配置中,内部和外部 REST API 请求可以流经不同的网络。
kolla_internal_vip_address: "10.10.10.254"
network_interface: "eth0"
kolla_external_vip_address: "10.10.20.254"
kolla_external_vip_interface: "eth1"
完全限定域名配置¶
在互联网上寻址服务器时,使用名称(如 www.example.net)而不是地址(如 10.10.10.254)更为常见。如果您希望使用名称来寻址 kolla 部署中的端点,请使用以下变量
kolla_internal_fqdn
kolla_external_fqdn
kolla_internal_fqdn: inside.mykolla.example.net
kolla_external_fqdn: mykolla.example.net
必须在 kolla 之外采取措施,才能使这些名称映射到配置的 IP 地址。使用 DNS 服务器或 /etc/hosts 文件是创建此映射的两种方法。
RabbitMQ 主机名解析¶
RabbitMQ 不支持 IP 地址,因此 api_interface 的 IP 地址应可被主机名解析,以确保所有 RabbitMQ 集群主机可以提前解析彼此的主机名。
TLS 配置¶
TLS 的配置现在涵盖 此处。
Kolla 中的 OpenStack 服务配置¶
操作员可以通过编辑 /etc/kolla/globals.yml 并添加以下行来更改自定义配置文件读取的位置。
# The directory to merge custom config files the kolla's config files
node_custom_config: "/etc/kolla/config"
Kolla 允许操作员覆盖服务的配置。Kolla 通常会在 /etc/kolla/config/<< config file >>、/etc/kolla/config/<< service name >>/<< config file >> 或 /etc/kolla/config/<< service name >>/<< hostname >>/<< config file >> 中查找文件,但这些位置有时会有所不同,您应该检查适当的 Ansible 角色中的 config 任务以获取支持位置的完整列表。例如,对于 nova.conf,支持以下位置,假设您有使用 nova.conf 运行的服务在名为 controller-0001、controller-0002 和 controller-0003 的主机上
/etc/kolla/config/nova.conf/etc/kolla/config/nova/controller-0001/nova.conf/etc/kolla/config/nova/controller-0002/nova.conf/etc/kolla/config/nova/controller-0003/nova.conf/etc/kolla/config/nova/nova-scheduler.conf
使用此机制,可以按项目、按项目服务或按指定主机上的项目服务配置覆盖。
覆盖选项就像在相关部分下设置该选项一样简单。例如,要在 nova 调度器中设置 override scheduler_max_attempts,操作员可以在 /etc/kolla/config/nova/nova-scheduler.conf 中创建以下内容
[DEFAULT]
scheduler_max_attempts = 100
如果操作员希望配置计算节点 cpu 和 ram 分配比率在主机 myhost 上,操作员需要创建文件 /etc/kolla/config/nova/myhost/nova.conf,内容如下
[DEFAULT]
cpu_allocation_ratio = 16.0
ram_allocation_ratio = 5.0
这种合并配置部分的方法支持使用 Oslo Config 的所有服务,包括大多数 OpenStack 服务,并且在某些情况下支持使用 YAML 配置的服务。由于 INI 格式是一种非正式标准,因此并非所有 INI 文件都可以这样合并。在这些情况下,Kolla 支持覆盖整个配置文件。
通过在配置文件中使用 Jinja 条件,可以引入额外的灵活性。例如,您可能会创建在超visor 模型方面同质的 Nova 单元。在每个单元中,您可能希望以不同的方式配置超visor,例如,以下覆盖显示了一种设置 bandwidth_poll_interval 变量的方法,该变量是单元的函数
[DEFAULT]
{% if 'cell0001' in group_names %}
bandwidth_poll_interval = 100
{% elif 'cell0002' in group_names %}
bandwidth_poll_interval = -1
{% else %}
bandwidth_poll_interval = 300
{% endif %}
使用 Jinja 条件的替代方法是为 bandwidth_poll_interval 定义一个变量,并在库存组或主机变量中根据您的要求对其进行设置
[DEFAULT]
bandwidth_poll_interval = {{ bandwidth_poll_interval }}
Kolla 允许操作员为所有服务全局覆盖配置。它将在 /etc/kolla/config/global.conf 中查找名为 /etc/kolla/config/global.conf 的文件。
例如,要修改所有服务的数据库池大小连接,操作员需要创建 /etc/kolla/config/global.conf,内容如下
[database]
max_pool_size = 100
OpenStack 策略自定义¶
OpenStack 服务允许自定义策略。自 Queens 版本发布以来,默认策略配置定义在每个服务的源代码中,这意味着操作员只需要覆盖他们希望更改的规则。项目通常提供有关其默认策略配置的文档,例如,Keystone。
策略可以通过 JSON 或 YAML 文件进行自定义。从 Wallaby 版本开始,JSON 格式已被弃用,转而支持 YAML。YAML 的主要好处之一是它允许使用注释。
例如,要以 YAML 格式自定义 Neutron 策略,操作员应在 /etc/kolla/config/neutron/policy.yaml 中添加自定义规则。
操作员可以通过使用以下命令在部署服务后进行这些更改
kolla-ansible deploy
为了向用户呈现正确的界面,Horizon 包含其他服务的策略。对这些服务进行的自定义可能需要在 Horizon 中复制。例如,要以 YAML 格式自定义 Neutron 策略以用于 Horizon,操作员应在 /etc/kolla/config/horizon/neutron_policy.yaml 中添加自定义规则。
IP 地址受限环境¶
如果开发环境没有可用于 VIP 配置的空闲 IP 地址,可以通过添加以下内容禁用 HAProxy,从而使用主机的 IP 地址
enable_haproxy: "no"
请注意,此方法不推荐使用,通常不经过 Kolla 社区的测试,但包含在内,因为有时在测试环境中没有空闲 IP 地址。
在这种模式下,仍然需要配置 kolla_internal_vip_address,它应该采用 api_interface 接口的 IP 地址。
外部 Elasticsearch/Kibana 环境¶
可以使用外部 Elasticsearch/Kibana 环境。为此,首先禁用中央日志记录的部署。
enable_central_logging: "no"
现在,您可以使用参数 elasticsearch_address 来配置外部 Elasticsearch 环境的地址。
<service> 非默认端口¶
有时需要为 Kolla 中的服务(s) 使用与默认不同的端口。可以通过在 globals.yml 文件中设置 <service>_port 来实现。例如
database_port: 3307
由于 <service>_port 值保存在不同服务的配置中,因此建议在部署之前进行上述更改。
使用外部 Syslog 服务器¶
默认情况下,Fluentd 用作 syslog 服务器来收集 HAProxy 日志。当禁用 Fluentd 或希望使用外部 syslog 服务器时,可以在 globals.yml 文件中设置 syslog 参数。例如
syslog_server: "172.29.9.145"
syslog_udp_port: "514"
您还可以为 HAProxy 日志设置 syslog facility 名称。默认情况下,HAProxy 使用 local1。
syslog_haproxy_facility: "local1"
如果启用了 Glance TLS 后端 (glance_enable_tls_backend),则 glance_tls_proxy 服务的 syslog facility 默认使用 local2。可以通过 syslog_glance_tls_proxy_facility 进行设置。
在容器中挂载额外的 Docker 卷¶
有时,能够将额外的 Docker 卷挂载到一个或多个容器中很有用。这可能是为了将第三方组件集成到 OpenStack 中,或者为了访问站点特定的数据,例如 x.509 证书捆绑包。
可以在三个级别指定额外的卷
全局
按服务(例如 nova)
按容器(例如
nova-api)
要为所有容器指定全局额外的卷,请在 globals.yml 中设置 default_extra_volumes。例如
default_extra_volumes:
- "/etc/foo:/etc/foo"
要为服务中的所有容器指定额外的卷,请在 globals.yml 中设置 <service_name>_extra_volumes。例如
nova_extra_volumes:
- "/etc/foo:/etc/foo"
要为单个容器指定额外的卷,请在 globals.yml 中设置 <container_name>_extra_volumes。例如
nova_libvirt_extra_volumes:
- "/etc/foo:/etc/foo"
迁移容器引擎¶
Kolla-Ansible 支持两种容器引擎 - Docker 和 Podman。可以在已部署的 OpenStack 之间迁移。迁移在两个方向上都受支持,这意味着可以从 Docker 迁移到 Podman 以及从 Podman 迁移到 Docker。
在开始迁移之前,您必须在 /etc/kolla/globals.yml 文件中更改 kolla_container_engine 的值,以使用新的容器引擎
# previous value was docker
kolla_container_engine: podman
除了此更改之外,globals.yml 应该保持不变。同样适用于任何其他配置文件,例如库存文件。
警告
当前,不支持滚动迁移。您必须停止 OpenStack 中运行的所有虚拟机。否则,迁移将变得不稳定并可能失败。
编辑 globals.yml 并停止虚拟机后,可以使用以下命令启动迁移
kolla-ansible migrate-container-engine
警告
在迁移过程中,所有容器卷都将迁移到新的容器引擎下。旧容器引擎系统软件包将从系统中删除,并且它们的所有资源和数据都将被删除。