Object Storage サービスを起動する前に、アカウント、コンテナー、オブジェクトの初期リングを作成する必要があります。リングビルダーが、各ノードがストレージアーキテクチャーを判断して配備するために使用する、設定ファイルを作成します。このセクションでは、簡単のため、1 リージョン、 1 ゾーンで、ゾーンの最大パーティション数 2^10 (1024)、各オブジェクトの複製数 3、パーティション移動後の再移動の最小間隔として 1 時間を使用します。
ここでの作業は、コントローラーノードで実施します。
アカウントリングの作成
アカウントサーバーは、コンテナーの一覧を管理するために、アカウントリングを使用します。
/etc/swift ディレクトリーに移動します。
[root@controller ~]# cd /etc/swift/ [root@controller swift]# [root@controller swift]# ls container-reconciler.conf proxy-server proxy-server.conf.org object-expirer.conf proxy-server.conf swift.conf [root@controller swift]#
ベースの account.builder ファイルを作成します。
[root@controller swift]# swift-ring-builder account.builder create 10 3 1 [root@controller swift]#
各ストレージノードをリングに追加します。
■ object1 の vdb に対するリング [root@controller swift]# swift-ring-builder account.builder add \ > --region 1 --zone 1 --ip 192.168.24.120 --port 6202 --device vdb --weight 100 Device d0r1z1-192.168.24.120:6202R192.168.24.120:6202/vdb_"" with 100.0 weight got id 0 [root@controller swift]# ■ object1 の vdc に対するリング [root@controller swift]# swift-ring-builder account.builder add \ > --region 1 --zone 1 --ip 192.168.24.120 --port 6202 --device vdc --weight 100 Device d1r1z1-192.168.24.120:6202R192.168.24.120:6202/vdc_"" with 100.0 weight got id 1 [root@controller swift]# ■ object2 の vdb に対するリング [root@controller swift]# swift-ring-builder account.builder add \ > --region 1 --zone 2 --ip 192.168.24.121 --port 6202 --device vdb --weight 100 Device d2r1z2-192.168.24.121:6202R192.168.24.121:6202/vdb_"" with 100.0 weight got id 2 [root@controller swift]# ■ object1 の vdc に対するリング [root@controller swift]# swift-ring-builder account.builder add \ > --region 1 --zone 2 --ip 192.168.24.121 --port 6202 --device vdc --weight 100 Device d3r1z2-192.168.24.121:6202R192.168.24.121:6202/vdc_"" with 100.0 weight got id 3 [root@controller swift]#
リングの内容を検証します。
[root@controller swift]# swift-ring-builder account.builder account.builder, build version 4, id a027fee319124813b489ec09f4342804 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 (0:00:00 remaining) The overload factor is 0.00% (0.000000) Ring file account.ring.gz not found, probably it hasn't been written yet Devices: id region zone ip address:port replication ip:port name weight partitions balance flags meta 0 1 1 192.168.24.120:6202 192.168.24.120:6202 vdb 100.00 0 -100.00 1 1 1 192.168.24.120:6202 192.168.24.120:6202 vdc 100.00 0 -100.00 2 1 2 192.168.24.121:6202 192.168.24.121:6202 vdb 100.00 0 -100.00 3 1 2 192.168.24.121:6202 192.168.24.121:6202 vdc 100.00 0 -100.00 [root@controller swift]#
リングをリバランスします。
[root@controller swift]# swift-ring-builder account.builder rebalance Reassigned 3072 (300.00%) partitions. Balance is now 0.00. Dispersion is now 0.00 [root@controller swift]#
コンテナーリングの作成
コンテナーサーバーは、オブジェクトの一覧を管理するために、コンテナーリングを使用します。
/etc/swift ディレクトリーに移動します。
[root@controller swift]# cd /etc/swift/ [root@controller swift]# [root@controller swift]# ls account.builder container-reconciler.conf proxy-server.conf account.ring.gz object-expirer.conf proxy-server.conf.org backups proxy-server swift.conf [root@controller swift]#
ベースの container.builder ファイルを作成します。
[root@controller swift]# swift-ring-builder container.builder create 10 3 1 [root@controller swift]#
各ストレージノードをリングに追加します。
■ object1 の vdb に対するリング [root@controller swift]# swift-ring-builder container.builder add \ > --region 1 --zone 1 --ip 192.168.24.120 --port 6201 --device vdb --weight 100 Device d0r1z1-192.168.24.120:6201R192.168.24.120:6201/vdb_"" with 100.0 weight got id 0 [root@controller swift]# ■ object1 の vdc に対するリング [root@controller swift]# swift-ring-builder container.builder add \ > --region 1 --zone 1 --ip 192.168.24.120 --port 6201 --device vdc --weight 100 Device d1r1z1-192.168.24.120:6201R192.168.24.120:6201/vdc_"" with 100.0 weight got id 1 [root@controller swift]# ■ object2 の vdb に対するリング [root@controller swift]# swift-ring-builder container.builder add \ > --region 1 --zone 2 --ip 192.168.24.121 --port 6201 --device vdb --weight 100 Device d2r1z2-192.168.24.121:6201R192.168.24.121:6201/vdb_"" with 100.0 weight got id 2 [root@controller swift]# ■ object1 の vdc に対するリング [root@controller swift]# swift-ring-builder container.builder add \ > --region 1 --zone 2 --ip 192.168.24.121 --port 6201 --device vdc --weight 100 Device d3r1z2-192.168.24.121:6201R192.168.24.121:6201/vdc_"" with 100.0 weight got id 3 [root@controller swift]#
リングの内容を検証します。
[root@controller swift]# swift-ring-builder container.builder container.builder, build version 4, id 8518eee72c2740558ddd81a0747d3f0c 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 (0:00:00 remaining) The overload factor is 0.00% (0.000000) Ring file container.ring.gz not found, probably it hasn't been written yet Devices: id region zone ip address:port replication ip:port name weight partitions balance flags meta 0 1 1 192.168.24.120:6201 192.168.24.120:6201 vdb 100.00 0 -100.00 1 1 1 192.168.24.120:6201 192.168.24.120:6201 vdc 100.00 0 -100.00 2 1 2 192.168.24.121:6201 192.168.24.121:6201 vdb 100.00 0 -100.00 3 1 2 192.168.24.121:6201 192.168.24.121:6201 vdc 100.00 0 -100.00 [root@controller swift]#
リングをリバランスします。
[root@controller swift]# swift-ring-builder container.builder rebalance Reassigned 3072 (300.00%) partitions. Balance is now 0.00. Dispersion is now 0.00 [root@controller swift]#
オブジェクトリングの作成
オブジェクトサーバーは、ローカルデバイスのおけるオブジェクトの位置の一覧を維持するために、オブジェクトリングを使用します。
/etc/swift ディレクトリーに移動します。
[root@controller swift]# cd /etc/swift/ [root@controller swift]# [root@controller swift]# ls account.builder container-reconciler.conf object-expirer.conf proxy-server.conf.org account.ring.gz container.builder proxy-server swift.conf backups container.ring.gz proxy-server.conf [root@controller swift]#
ベースの object.builder ファイルを作成します。
[root@controller swift]# swift-ring-builder object.builder create 10 3 1 [root@controller swift]#
各ストレージノードをリングに追加します。
■ object1 の vdb に対するリング [root@controller swift]# swift-ring-builder object.builder add \ > --region 1 --zone 1 --ip 192.168.24.120 --port 6200 --device vdb --weight 100 Device d0r1z1-192.168.24.120:6200R192.168.24.120:6200/vdb_"" with 100.0 weight got id 0 [root@controller swift]# ■ object1 の vdc に対するリング [root@controller swift]# swift-ring-builder object.builder add \ > --region 1 --zone 1 --ip 192.168.24.120 --port 6200 --device vdc --weight 100 Device d1r1z1-192.168.24.120:6200R192.168.24.120:6200/vdc_"" with 100.0 weight got id 1 [root@controller swift]# ■ object2 の vdb に対するリング [root@controller swift]# swift-ring-builder object.builder add \ > --region 1 --zone 2 --ip 192.168.24.121 --port 6200 --device vdb --weight 100 Device d2r1z2-192.168.24.121:6200R192.168.24.121:6200/vdb_"" with 100.0 weight got id 2 [root@controller swift]# ■ object1 の vdc に対するリング [root@controller swift]# swift-ring-builder object.builder add \ > --region 1 --zone 2 --ip 192.168.24.121 --port 6200 --device vdc --weight 100 Device d3r1z2-192.168.24.121:6200R192.168.24.121:6200/vdc_"" with 100.0 weight got id 3 [root@controller swift]#
リングの内容を検証します。
[root@controller swift]# swift-ring-builder object.builder object.builder, build version 4, id caee83889d3c46ec96f9b6a2f8c1bdc4 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 (0:00:00 remaining) The overload factor is 0.00% (0.000000) Ring file object.ring.gz not found, probably it hasn't been written yet Devices: id region zone ip address:port replication ip:port name weight partitions balance flags meta 0 1 1 192.168.24.120:6200 192.168.24.120:6200 vdb 100.00 0 -100.00 1 1 1 192.168.24.120:6200 192.168.24.120:6200 vdc 100.00 0 -100.00 2 1 2 192.168.24.121:6200 192.168.24.121:6200 vdb 100.00 0 -100.00 3 1 2 192.168.24.121:6200 192.168.24.121:6200 vdc 100.00 0 -100.00 [root@controller swift]#
リングをリバランスします。
[root@controller swift]# swift-ring-builder object.builder rebalance Reassigned 3072 (300.00%) partitions. Balance is now 0.00. Dispersion is now 0.00 [root@controller swift]#
リング設定ファイルの配布
各ストレージノード、プロキシーサービスを実行している追加ノードの /etc/swift ディレクトリーに、 account.ring.gz ファイル、container.ring.gz ファイル、object.ring.gz ファイルをコピーします。
オブジェクトストレージノード1 の /etc/swift ディレクトリを確認します。この時点では、account.ring.gz ファイル、container.ring.gz ファイル、object.ring.gz ファイルは存在していません。
[root@object1 ~]# cd /etc/swift/ [root@object1 swift]# [root@object1 swift]# ls account-server container-server.conf object-server.conf account-server.conf container-server.conf.org object-server.conf.org account-server.conf.org internal-client.conf swift.conf container-server object-server [root@object1 swift]#
オブジェクトストレージノード1 で コントローラーノードから各ファイルをコピーします。
■ account.ring.gz ファイルのコピー [root@object1 swift]# scp -p root@controller:/etc/swift/account.ring.gz /etc/swift/ The authenticity of host 'controller (192.168.24.111)' can't be established. ECDSA key fingerprint is SHA256:IpozYdBYe07c8tJU3SAvejQC0FEmTRG4hCsYGeFZmoA. ECDSA key fingerprint is MD5:3c:1d:cd:d2:73:51:8e:5a:88:44:4c:fe:d0:a4:bd:67. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'controller,192.168.24.111' (ECDSA) to the list of known hosts. root@controller's password: account.ring.gz 100% 1498 1.9MB/s 00:00 [root@object1 swift]# ■ container.ring.gz ファイルのコピー [root@object1 swift]# scp -p root@controller:/etc/swift/container.ring.gz /etc/swift/ root@controller's password: container.ring.gz 100% 1493 1.4MB/s 00:00 [root@object1 swift]# ■ object.ring.gz ファイルのコピー [root@object1 swift]# scp -p root@controller:/etc/swift/object.ring.gz /etc/swift/ root@controller's password: object.ring.gz 100% 1482 2.2MB/s 00:00 [root@object1 swift]#
オブジェクトストレージノード1 の /etc/swift ディレクトリに account.ring.gz ファイル、container.ring.gz ファイル、object.ring.gz ファイルがコピーされていることを確認します。
[root@object1 swift]# ls account-server container-server.conf object-server.conf account-server.conf container-server.conf.org object-server.conf.org account-server.conf.org container.ring.gz object.ring.gz account.ring.gz internal-client.conf swift.conf container-server object-server [root@object1 swift]#
オブジェクトストレージノード2 でも上記同様の手順を実施し、オブジェクストレージノード2 にリング設定ファイルをコピーします。