创建和分发初始环

在启动对象存储服务之前,您必须创建初始账户、容器和对象环。环构建器创建配置文件,每个节点使用这些配置文件来确定和部署存储架构。为了简单起见,本指南使用一个区域和两个可用区,最大分区数为 2^10 (1024),每个对象的副本数为 3,以及移动分区一次以上的最小时间间隔为 1 小时。对于对象存储,分区表示存储设备上的目录,而不是传统的分区表。有关更多信息,请参阅 部署指南

注意

在控制器节点上执行以下步骤。

创建账户环

账户服务器使用账户环来维护容器列表。

  1. 切换到 /etc/swift 目录。

  2. 创建基础 account.builder 文件

    # swift-ring-builder account.builder create 10 3 1
    

    注意

    此命令不会产生任何输出。

  3. 将每个存储节点添加到环中

    # swift-ring-builder account.builder \
      add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6202 \
      --device DEVICE_NAME --weight DEVICE_WEIGHT
    

    STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS 替换为存储节点上管理网络的 IP 地址。将 DEVICE_NAME 替换为同一存储节点上的存储设备名称。例如,使用 安装和配置存储节点 中的第一个存储节点,存储设备为 /dev/sdb,权重为 100

    # swift-ring-builder account.builder add \
      --region 1 --zone 1 --ip 10.0.0.51 --port 6202 --device sdb --weight 100
    

    对每个存储节点上的每个存储设备重复此命令。在示例架构中,使用该命令的四种变体

    # swift-ring-builder account.builder add \
      --region 1 --zone 1 --ip 10.0.0.51 --port 6202 --device sdb --weight 100
    Device d0r1z1-10.0.0.51:6202R10.0.0.51:6202/sdb_"" with 100.0 weight got id 0
    # swift-ring-builder account.builder add \
      --region 1 --zone 1 --ip 10.0.0.51 --port 6202 --device sdc --weight 100
    Device d1r1z2-10.0.0.51:6202R10.0.0.51:6202/sdc_"" with 100.0 weight got id 1
    # swift-ring-builder account.builder add \
      --region 1 --zone 2 --ip 10.0.0.52 --port 6202 --device sdb --weight 100
    Device d2r1z3-10.0.0.52:6202R10.0.0.52:6202/sdb_"" with 100.0 weight got id 2
    # swift-ring-builder account.builder add \
      --region 1 --zone 2 --ip 10.0.0.52 --port 6202 --device sdc --weight 100
    Device d3r1z4-10.0.0.52:6202R10.0.0.52:6202/sdc_"" with 100.0 weight got id 3
    
  4. 验证环内容

    # swift-ring-builder account.builder
    account.builder, build version 4
    1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
    The minimum number of hours before a partition can be reassigned is 1
    The overload factor is 0.00% (0.000000)
    Devices:    id  region  zone      ip address  port  replication ip  replication port      name weight partitions balance meta
                 0       1     1       10.0.0.51  6202       10.0.0.51              6202      sdb  100.00          0 -100.00
                 1       1     1       10.0.0.51  6202       10.0.0.51              6202      sdc  100.00          0 -100.00
                 2       1     2       10.0.0.52  6202       10.0.0.52              6202      sdb  100.00          0 -100.00
                 3       1     2       10.0.0.52  6202       10.0.0.52              6202      sdc  100.00          0 -100.00
    
  5. 重新平衡环

    # swift-ring-builder account.builder rebalance
    Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00
    

创建容器环

容器服务器使用容器环来维护对象列表。但是,它不跟踪对象位置。

  1. 切换到 /etc/swift 目录。

  2. 创建基础 container.builder 文件

    # swift-ring-builder container.builder create 10 3 1
    

    注意

    此命令不会产生任何输出。

  3. 将每个存储节点添加到环中

    # swift-ring-builder container.builder \
      add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6201 \
      --device DEVICE_NAME --weight DEVICE_WEIGHT
    

    STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS 替换为存储节点上管理网络的 IP 地址。将 DEVICE_NAME 替换为同一存储节点上的存储设备名称。例如,使用 安装和配置存储节点 中的第一个存储节点,存储设备为 /dev/sdb,权重为 100

    # swift-ring-builder container.builder add \
      --region 1 --zone 1 --ip 10.0.0.51 --port 6201 --device sdb --weight 100
    

    对每个存储节点上的每个存储设备重复此命令。在示例架构中,使用该命令的四种变体

    # swift-ring-builder container.builder add \
      --region 1 --zone 1 --ip 10.0.0.51 --port 6201 --device sdb --weight 100
    Device d0r1z1-10.0.0.51:6201R10.0.0.51:6201/sdb_"" with 100.0 weight got id 0
    # swift-ring-builder container.builder add \
      --region 1 --zone 1 --ip 10.0.0.51 --port 6201 --device sdc --weight 100
    Device d1r1z2-10.0.0.51:6201R10.0.0.51:6201/sdc_"" with 100.0 weight got id 1
    # swift-ring-builder container.builder add \
      --region 1 --zone 2 --ip 10.0.0.52 --port 6201 --device sdb --weight 100
    Device d2r1z3-10.0.0.52:6201R10.0.0.52:6201/sdb_"" with 100.0 weight got id 2
    # swift-ring-builder container.builder add \
      --region 1 --zone 2 --ip 10.0.0.52 --port 6201 --device sdc --weight 100
    Device d3r1z4-10.0.0.52:6201R10.0.0.52:6201/sdc_"" with 100.0 weight got id 3
    
  4. 验证环内容

    # swift-ring-builder container.builder
    container.builder, build version 4
    1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
    The minimum number of hours before a partition can be reassigned is 1
    The overload factor is 0.00% (0.000000)
    Devices:    id  region  zone      ip address  port  replication ip  replication port      name weight partitions balance meta
                 0       1     1       10.0.0.51  6201       10.0.0.51              6201      sdb  100.00          0 -100.00
                 1       1     1       10.0.0.51  6201       10.0.0.51              6201      sdc  100.00          0 -100.00
                 2       1     2       10.0.0.52  6201       10.0.0.52              6201      sdb  100.00          0 -100.00
                 3       1     2       10.0.0.52  6201       10.0.0.52              6201      sdc  100.00          0 -100.00
    
  5. 重新平衡环

    # swift-ring-builder container.builder rebalance
    Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00
    

创建对象环

对象服务器使用对象环来维护本地设备上对象位置的列表。

  1. 切换到 /etc/swift 目录。

  2. 创建基础 object.builder 文件

    # swift-ring-builder object.builder create 10 3 1
    

    注意

    此命令不会产生任何输出。

  3. 将每个存储节点添加到环中

    # swift-ring-builder object.builder \
      add --region 1 --zone 1 --ip STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS --port 6200 \
      --device DEVICE_NAME --weight DEVICE_WEIGHT
    

    STORAGE_NODE_MANAGEMENT_INTERFACE_IP_ADDRESS 替换为存储节点上管理网络的 IP 地址。将 DEVICE_NAME 替换为同一存储节点上的存储设备名称。例如,使用 安装和配置存储节点 中的第一个存储节点,存储设备为 /dev/sdb,权重为 100

    # swift-ring-builder object.builder add \
      --region 1 --zone 1 --ip 10.0.0.51 --port 6200 --device sdb --weight 100
    

    对每个存储节点上的每个存储设备重复此命令。在示例架构中,使用该命令的四种变体

    # swift-ring-builder object.builder add \
      --region 1 --zone 1 --ip 10.0.0.51 --port 6200 --device sdb --weight 100
    Device d0r1z1-10.0.0.51:6200R10.0.0.51:6200/sdb_"" with 100.0 weight got id 0
    # swift-ring-builder object.builder add \
      --region 1 --zone 1 --ip 10.0.0.51 --port 6200 --device sdc --weight 100
    Device d1r1z2-10.0.0.51:6200R10.0.0.51:6200/sdc_"" with 100.0 weight got id 1
    # swift-ring-builder object.builder add \
      --region 1 --zone 2 --ip 10.0.0.52 --port 6200 --device sdb --weight 100
    Device d2r1z3-10.0.0.52:6200R10.0.0.52:6200/sdb_"" with 100.0 weight got id 2
    # swift-ring-builder object.builder add \
      --region 1 --zone 2 --ip 10.0.0.52 --port 6200 --device sdc --weight 100
    Device d3r1z4-10.0.0.52:6200R10.0.0.52:6200/sdc_"" with 100.0 weight got id 3
    
  4. 验证环内容

    # swift-ring-builder object.builder
    object.builder, build version 4
    1024 partitions, 3.000000 replicas, 1 regions, 2 zones, 4 devices, 100.00 balance, 0.00 dispersion
    The minimum number of hours before a partition can be reassigned is 1
    The overload factor is 0.00% (0.000000)
    Devices:    id  region  zone      ip address  port  replication ip  replication port      name weight partitions balance meta
                 0       1     1       10.0.0.51  6200       10.0.0.51              6200      sdb  100.00          0 -100.00
                 1       1     1       10.0.0.51  6200       10.0.0.51              6200      sdc  100.00          0 -100.00
                 2       1     2       10.0.0.52  6200       10.0.0.52              6200      sdb  100.00          0 -100.00
                 3       1     2       10.0.0.52  6200       10.0.0.52              6200      sdc  100.00          0 -100.00
    
  5. 重新平衡环

    # swift-ring-builder object.builder rebalance
    Reassigned 1024 (100.00%) partitions. Balance is now 0.00.  Dispersion is now 0.00
    

分发环配置文件

  • account.ring.gzcontainer.ring.gzobject.ring.gz 文件复制到每个存储节点以及运行代理服务的任何其他节点上的 /etc/swift 目录。