安装和配置 Red Hat Enterprise Linux 和 CentOS 的存储节点

本节描述了如何安装和配置运行账户、容器和对象服务的存储节点。为了简化配置,这里引用了两个存储节点,每个节点包含两个空的本地块存储设备。指令中使用 /dev/sdb/dev/sdc,但您可以根据您的特定节点替换不同的值。

虽然对象存储支持具有扩展属性 (xattr) 的任何文件系统,但测试和基准测试表明 XFS 具有最佳的性能和可靠性。有关水平扩展您的环境的更多信息,请参阅 部署指南

本节适用于 Red Hat Enterprise Linux 9 和 CentOS Stream 9。

先决条件

在存储节点上安装和配置对象存储服务之前,您必须准备存储设备。

注意

在每个存储节点上执行以下步骤。

  1. 安装支持的实用程序包

    # dnf install xfsprogs rsync
    
  2. /dev/sdb/dev/sdc 设备格式化为 XFS

    # mkfs.xfs /dev/sdb
    # mkfs.xfs /dev/sdc
    
  3. 创建挂载点目录结构

    # mkdir -p /srv/node/sdb
    # mkdir -p /srv/node/sdc
    
  4. 查找新分区的 UUID

    # blkid
    
  5. 编辑 /etc/fstab 文件,并向其中添加以下内容

    UUID="<UUID-from-output-above>" /srv/node/sdb xfs noatime 0 2
    UUID="<UUID-from-output-above>" /srv/node/sdc xfs noatime 0 2
    
  6. 挂载设备

    # mount /srv/node/sdb
    # mount /srv/node/sdc
    
  7. 创建或编辑 /etc/rsyncd.conf 文件,使其包含以下内容

    uid = swift
    gid = swift
    log file = /var/log/rsyncd.log
    pid file = /var/run/rsyncd.pid
    address = MANAGEMENT_INTERFACE_IP_ADDRESS
    
    [account]
    max connections = 2
    path = /srv/node/
    read only = False
    lock file = /var/lock/account.lock
    
    [container]
    max connections = 2
    path = /srv/node/
    read only = False
    lock file = /var/lock/container.lock
    
    [object]
    max connections = 2
    path = /srv/node/
    read only = False
    lock file = /var/lock/object.lock
    

    MANAGEMENT_INTERFACE_IP_ADDRESS 替换为存储节点上管理网络的 IP 地址。

    注意

    rsync 服务不需要身份验证,因此建议在生产环境中在专用网络上运行它。

  1. 启动 rsyncd 服务并配置它在系统启动时启动

    # systemctl enable rsyncd.service
    # systemctl start rsyncd.service
    

安装和配置组件

注意

默认配置文件因发行版而异。您可能需要添加这些部分和选项,而不是修改现有的部分和选项。此外,配置片段中的省略号 (...) 表示您应该保留的潜在默认配置选项。

注意

在每个存储节点上执行以下步骤。

  1. 安装软件包

    # dnf install openstack-swift-account openstack-swift-container \
      openstack-swift-object
    
  1. 从对象存储源代码仓库获取会计、容器和对象服务配置文件

    # curl -o /etc/swift/account-server.conf https://opendev.org/openstack/swift/raw/branch/2025.2/etc/account-server.conf-sample
    # curl -o /etc/swift/container-server.conf https://opendev.org/openstack/swift/raw/branch/2025.2/etc/container-server.conf-sample
    # curl -o /etc/swift/object-server.conf https://opendev.org/openstack/swift/raw/branch/2025.2/etc/object-server.conf-sample
    
  2. 编辑 /etc/swift/account-server.conf 文件并完成以下操作

    • [DEFAULT] 部分,配置绑定 IP 地址、绑定端口、用户、配置目录和挂载点目录

      [DEFAULT]
      ...
      bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
      bind_port = 6202
      user = swift
      swift_dir = /etc/swift
      devices = /srv/node
      mount_check = True
      

      MANAGEMENT_INTERFACE_IP_ADDRESS 替换为存储节点上管理网络的 IP 地址。

    • [pipeline:main] 部分,启用适当的模块

      [pipeline:main]
      pipeline = healthcheck recon account-server
      

      注意

      有关启用其他功能的其他模块的更多信息,请参阅 部署指南

    • [filter:recon] 部分,配置 recon (计量器) 缓存目录

      [filter:recon]
      use = egg:swift#recon
      ...
      recon_cache_path = /var/cache/swift
      
  3. 编辑 /etc/swift/container-server.conf 文件并完成以下操作

    • [DEFAULT] 部分,配置绑定 IP 地址、绑定端口、用户、配置目录和挂载点目录

      [DEFAULT]
      ...
      bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
      bind_port = 6201
      user = swift
      swift_dir = /etc/swift
      devices = /srv/node
      mount_check = True
      

      MANAGEMENT_INTERFACE_IP_ADDRESS 替换为存储节点上管理网络的 IP 地址。

    • [pipeline:main] 部分,启用适当的模块

      [pipeline:main]
      pipeline = healthcheck recon container-server
      

      注意

      有关启用其他功能的其他模块的更多信息,请参阅 部署指南

    • [filter:recon] 部分,配置 recon (计量器) 缓存目录

      [filter:recon]
      use = egg:swift#recon
      ...
      recon_cache_path = /var/cache/swift
      
  4. 编辑 /etc/swift/object-server.conf 文件并完成以下操作

    • [DEFAULT] 部分,配置绑定 IP 地址、绑定端口、用户、配置目录和挂载点目录

      [DEFAULT]
      ...
      bind_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
      bind_port = 6200
      user = swift
      swift_dir = /etc/swift
      devices = /srv/node
      mount_check = True
      

      MANAGEMENT_INTERFACE_IP_ADDRESS 替换为存储节点上管理网络的 IP 地址。

    • [pipeline:main] 部分,启用适当的模块

      [pipeline:main]
      pipeline = healthcheck recon object-server
      

      注意

      有关启用其他功能的其他模块的更多信息,请参阅 部署指南

    • [filter:recon] 部分,配置 recon (计量器) 缓存和锁目录

      [filter:recon]
      use = egg:swift#recon
      ...
      recon_cache_path = /var/cache/swift
      recon_lock_path = /var/lock
      
  5. 确保挂载点目录结构的适当所有权

    # chown -R swift:swift /srv/node
    
  6. 创建 recon 目录并确保其适当的所有权

    # mkdir -p /var/cache/swift
    # chown -R root:swift /var/cache/swift
    # chmod -R 775 /var/cache/swift
    
  7. 在防火墙中启用必要的访问

    # firewall-cmd --permanent --add-port=6200/tcp
    # firewall-cmd --permanent --add-port=6201/tcp
    # firewall-cmd --permanent --add-port=6202/tcp
    

    rsync 服务包含其自身的防火墙配置。从一个节点连接到另一个节点,以确保允许访问。