首页 OpenStack-Ansible Swift

配置服务

步骤 5.2. 更新对象存储配置文件 ``swift.yml`` 文件

  1. /etc/openstack_deploy/conf.d/swift.yml.example 文件复制到 /etc/openstack_deploy/conf.d/swift.yml

    # cp /etc/openstack_deploy/conf.d/swift.yml.example \
        /etc/openstack_deploy/conf.d/swift.yml
    
  2. 更新全局覆盖值

    # global_overrides:
    #   swift:
    #     part_power: 8
    #     weight: 100
    #     min_part_hours: 1
    #     repl_number: 3
    #     storage_network: 'br-storage'
    #     replication_network: 'br-repl'
    #     drives:
    #       - name: sdc
    #       - name: sdd
    #       - name: sde
    #       - name: sdf
    #     mount_point: /srv/node
    #     account:
    #     container:
    #     storage_policies:
    #       - policy:
    #           name: gold
    #           index: 0
    #           default: True
    #       - policy:
    #           name: silver
    #           index: 1
    #           repl_number: 3
    #           deprecated: True
    #     statsd_host: statsd.example.com
    #     statsd_port: 8125
    #     statsd_metric_prefix:
    #     statsd_default_sample_rate: 1.0
    #     statsd_sample_rate_factor: 1.0
    
    part_power

    根据整个环使用的总存储量设置分区幂值。

    将 swift 安装中使用的最大驱动器数量乘以 100,然后将该值向上舍入到最接近的 2 的幂次方。例如,最大六个驱动器乘以 100 等于 600。大于 600 的最接近的 2 的幂次方是 2 的 9 次方,因此分区幂为 9。在构建 swift 环之后,无法更改分区幂。

    weight

    默认权重为 100。如果驱动器大小不同,请设置权重值以避免数据分布不均。例如,1 TB 磁盘的权重为 100,而 2 TB 驱动器的权重为 200。

    min_part_hours

    默认值为 1。将最小分区小时数设置为移动分区后锁定分区副本的时间量。同时移动多个副本会使数据无法访问。此值可以在 swift、container、account 和 policy 部分中单独设置,较低部分的数值优先于 swift 部分的数值。

    repl_number

    默认值为 3。将复制数量设置为每个对象的副本数。此值可以在 swift、container、account 和 policy 部分中单独设置,更细粒度的部分的数值优先于 swift 部分的数值。

    storage_network

    默认情况下,swift 服务侦听默认管理 IP。可以选择指定存储网络的接口。

    如果未设置 storage_network,但每个主机的 storage_ips 已设置(或者 storage_ip 不在 storage_network 接口上),则代理服务器将无法连接到存储服务。

    replication_network

    可以选择指定专用的复制网络接口,以便设置专用的复制。如果未指定此值,则未设置专用的 replication_network

    如果 repl_ip 无法连接到其他主机的 repl_ip,则复制将无法正常工作。

    drives

    设置每个主机的默认驱动器。当所有主机具有相同的驱动器时,这很有用。这些可以在每个主机的基础上覆盖。

    mount_point

    mount_point 值设置为挂载 swift 驱动器的位置。例如,挂载点为 /srv/node 且驱动器为 sdc 时,驱动器将挂载在 swift_host 上的 /srv/node/sdc 上。这可以在每个主机的基础上覆盖。

    storage_policies

    存储策略确定数据存储在哪个硬件上,数据如何在这些硬件上存储,以及数据驻留在哪个区域。每个存储策略必须具有唯一的 name 和唯一的 index。在 swift.yml 文件中必须有一个索引为 0 的存储策略才能使用任何在实施存储策略之前创建的旧容器。

    default

    将默认值设置为 yes,至少针对一个策略。这是为任何非旧容器创建的默认存储策略。

    deprecated

    将弃用值设置为 yes 以关闭存储策略。

    对于 account 和 container 环,min_part_hoursrepl_number 是唯一可以设置的值。在此部分中设置它们会覆盖特定环的默认值。

    statsd_host

    Swift 支持将额外的指标发送到 statsd 主机。此选项设置接收 statsd 指标的 statsd 主机。在此处指定它将适用于集群中的所有主机。

    如果 statsd_host 留空或省略,则将禁用 statsd

    所有 statsd 设置可以在结构中更深入地覆盖,或者如果您只想在某些主机上捕获 statsdv 指标。

    statsd_port

    可选地,使用此选项指定您正在发送指标的 statsd 服务器的端口。如果省略,则默认为 8125。

    statsd_default_sample_ratestatsd_sample_rate_factor

    这些 statsd 相关选项更复杂,用于调整发送到 statsd 的样本数量。除非您需要调整这些设置,否则请省略它们,如果需要,请先阅读:https://docs.openstack.org/swift/2025.2/admin_guide.html

  3. 更新 swift 代理主机值

    # swift-proxy_hosts:
    #   infra-node1:
    #     ip: 192.0.2.1
    #     statsd_metric_prefix: proxy01
    #   infra-node2:
    #     ip: 192.0.2.2
    #     statsd_metric_prefix: proxy02
    #   infra-node3:
    #     ip: 192.0.2.3
    #     statsd_metric_prefix: proxy03
    
    swift-proxy_hosts

    设置 Ansible 连接到的主机的 IP 地址,以部署 swift-proxy 容器。 swift-proxy_hosts 值与 infra 节点匹配。

statsd_metric_prefix

此指标是可选的,并且仅在您已在某个地方定义 statsd_host 时才进行评估。它允许您定义要添加到从此主机发送的所有 statsd 指标的前缀。如果省略,则使用节点名称。

  1. 更新 swift 主机值

    # swift_hosts:
    #   swift-node1:
    #     ip: 192.0.2.4
    #     container_vars:
    #       swift_vars:
    #         zone: 0
    #         statsd_metric_prefix: node1
    #   swift-node2:
    #     ip: 192.0.2.5
    #     container_vars:
    #       swift_vars:
    #         zone: 1
    #         statsd_metric_prefix: node2
    #   swift-node3:
    #     ip: 192.0.2.6
    #     container_vars:
    #       swift_vars:
    #         zone: 2
    #         statsd_metric_prefix: node3
    #   swift-node4:
    #     ip: 192.0.2.7
    #     container_vars:
    #       swift_vars:
    #         zone: 3
    #   swift-node5:
    #     ip: 192.0.2.8
    #     container_vars:
    #       swift_vars:
    #         storage_ip: 198.51.100.8
    #         repl_ip: 203.0.113.8
    #         zone: 4
    #         region: 3
    #         weight: 200
    #         groups:
    #           - account
    #           - container
    #           - silver
    #         drives:
    #           - name: sdb
    #             weight: 75
    #             groups:
    #               - gold
    #             storage_port: 6010
    #             repl_port: 6110
    #           - name: sdc
    #           - name: sdd
    #           - name: sde
    #           - name: sdf
    
    swift_hosts

    指定用作存储节点的宿主机。 ip 是 Ansible 连接到的宿主机的地址。设置每个 swift 主机的名称和 IP 地址。不需要 swift_hosts 部分。

    swift_vars

    包含 swift 主机特定值。

    storage_iprepl_ip

    根据主机的 storage_networkreplication_network 的 IP 地址设置这些值。例如,如果 storage_networkbr-storage 并且 host1 在 br-storage 上具有 IP 地址 1.1.1.1,那么这就是用于 storage_ip 的 IP 地址。如果仅指定 storage_ip,则 repl_ip 默认为 storage_ip。如果两者都没有指定,则两者都默认为主机 IP 地址。

    storage_portrepl_port

    用于启用每个磁盘运行对象服务器。 两者的默认值为 swift_object_porthttps://docs.openstack.org/swift/2025.2/deployment_guide.html

    zone

    默认值为 0。可选地,设置环的 swift 区域。

    region

    可选地,设置环的 swift 区域。

    weight

    默认权重为 100。如果驱动器大小不同,请设置权重值以避免数据分布不均。可以在主机或驱动器基础上指定此值(如果同时在两者指定,则驱动器设置优先)。

    groups

    设置要列出主机驱动器所属的环的组。这可以在每个驱动器基础上设置,从而覆盖主机设置。

    drives

    设置 swift 主机上的驱动器名称。指定至少一个名称。

statsd_metric_prefix

此指标是可选的,并且仅在某个地方定义了 statsd_host 时才进行评估。这允许您定义要添加到从此主机发送的所有 statsd 指标的前缀。如果省略,则使用节点名称。

在以下示例中,swift-node5 显示了在 swift_hosts 部分中覆盖全局值的 swift_hosts 部分中的值。设置了组,这覆盖了驱动器 sdb 的全局设置。权重被覆盖为主机,并专门调整为驱动器 sdb

#  swift-node5:
#     ip: 192.0.2.8
#     container_vars:
#       swift_vars:
#         storage_ip: 198.51.100.8
#         repl_ip: 203.0.113.8
#         zone: 4
#         region: 3
#         weight: 200
#         groups:
#           - account
#           - container
#           - silver
#         drives:
#           - name: sdb
#             weight: 75
#             groups:
#               - gold
#           - name: sdc
#           - name: sdd
#           - name: sde
#           - name: sdf
  1. 确保 swift.yml 位于 /etc/openstack_deploy/conf.d/ 文件夹中。