4.4. Object Storage サービスの設定
4.4.1. Object Storage サービス用のアイデンティティーレコードの作成 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Object Storage サービスで必要な Identity サービスのレコードを作成して設定します。これらのエントリーは、Object Storage サービスに対する認証を提供し、Object Storage サービスによって提供される機能を検索してアクセスを試みる他の OpenStack サービスを補助します。
以下の手順では、管理ユーザーと
services テナントが作成済みであることを前提としています。詳しい説明は、以下のリンクを参照してください。
以下の手順は、Identityサービスサーバーまたは
keystonerc_admin ファイルをコピーして keystone コマンドラインユーティリティーをインストールした任意のマシンで実行してください。
手順4.3 Object Storage サービス用のアイデンティティーレコードの作成
- Keystone に管理ユーザーとしてアクセスするためのシェルを設定します。
source ~/keystonerc_admin
# source ~/keystonerc_adminCopy to Clipboard Copied! Toggle word wrap Toggle overflow swiftユーザーを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow PASSWORD は、Object Storageサービスが Identityサービスとの認証を行う際に使用するセキュアなパスワードに置き換えます。servicesテナントのコンテキスト内で、swiftユーザーとadminロールを関連付けます。[(keystone_admin)]# keystone user-role-add --user swift --role admin --tenant services
[(keystone_admin)]# keystone user-role-add --user swift --role admin --tenant servicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow swiftObject Storage サービスのエントリーを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow swiftエンドポイントエントリーを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP は Object Storage のプロキシサービスをホストするサーバーの IP アドレスまたは完全修飾ドメイン名に置き換えます。
4.4.2. Object Storage サービスのストレージノードの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Object Storage サービスは、ファイルシステムにオブジェクトを保管します。これは通常、接続されている複数の物理ストレージデバイス上のファイルシステムです。オブジェクトの保管に使用するデバイスはすべて
ext4 または XFS の形式でフォーマットし、/srv/node/ ディレクトリーの下にマウントする必要があります。また、指定されたノードで実行されるサービスはすべて有効化して、それらに使用するポートを開く必要があります。
プロキシサービスは、他のサービスとともに実行することが可能ですが、以下の手順ではプロキシサービスは対象外となっています。
手順4.4 Object Storage サービスのストレージノードの設定
ext4またはXFSのファイルシステムでデバイスをフォーマットします。xattrを必ず有効化してください。/etc/fstabファイルにデバイスを追加して、ブート時には/srv/node/の下にマウントされるようにします。blkidコマンドを使用して、デバイスの一意 ID を検索して、この一意の ID を使用してデバイスをマウントします。注記
ext4を使用する場合には、user_xattrオプションを指定してファイルシステムをマウントすることにより、拡張属性を有効化するようにしてください (XFSの場合は、拡張属性はデフォルトで有効化されます)。- 各ノードで実行中の各サービスが使用する TCP ポートを開くようにファイアウォールを設定します。サービスデフォルトでは、アカウントサービスはポート 6202、コンテナーサービスはポート 6201、オブジェクトサービスはポート 6200 を使用します。
- テキストエディターで
/etc/sysconfig/iptablesファイルを開きます。 - アカウント、コンテナー、オブジェクトのサービスが使用するポートで TCP トラフィックを許可する
INPUTルールを追加します。この新規ルールは、reject-with icmp-host-prohibitedよりも前に記載する必要があります。-A INPUT -p tcp -m multiport --dports 6200,6201,6202,873 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 6200,6201,6202,873 -j ACCEPTCopy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/sysconfig/iptablesファイルへの変更を保存します。iptablesサービスを再起動して、ファイアウォールの変更を有効にします。systemctl restart iptables.service
# systemctl restart iptables.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
/srv/node/のコンテンツの所有者をswift:swiftに変更します。chown -R swift:swift /srv/node/
# chown -R swift:swift /srv/node/Copy to Clipboard Copied! Toggle word wrap Toggle overflow /srv/node/配下の全ディレクトリーのSELinuxコンテキストを正しく設定します。restorecon -R /srv
# restorecon -R /srvCopy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/swift/swift.confファイルにハッシュプレフィックスを追加します。openstack-config --set /etc/swift/swift.conf swift-hash swift_hash_path_prefix \ $(openssl rand -hex 10)
# openstack-config --set /etc/swift/swift.conf swift-hash swift_hash_path_prefix \ $(openssl rand -hex 10)Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/swift/swift.confファイルにハッシュサフィックスを追加します。openstack-config --set /etc/swift/swift.conf swift-hash swift_hash_path_suffix \ $(openssl rand -hex 10)
# openstack-config --set /etc/swift/swift.conf swift-hash swift_hash_path_suffix \ $(openssl rand -hex 10)Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ストレージサービスがリッスンする IP アドレスを設定します。Object Storage クラスター内の全ノードにある全サービスに対して以下のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NODE_IP_ADDRESS は、設定するノードの IP アドレスに置き換えます。 - 現在設定中のノードから全 Object Storage サービスノードに
/etc/swift/swift.confをコピーします。重要
/etc/swift/swift.confファイルは、すべての Object Storage サービスノードで全く同じである必要があります。 - ノードで実行するサービスを起動します。
systemctl start openstack-swift-account.service systemctl start openstack-swift-container.service systemctl start openstack-swift-object.service
# systemctl start openstack-swift-account.service # systemctl start openstack-swift-container.service # systemctl start openstack-swift-object.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - サービスがブート時に起動するように設定します。
systemctl enable openstack-swift-account.service systemctl enable openstack-swift-container.service systemctl enable openstack-swift-object.service
# systemctl enable openstack-swift-account.service # systemctl enable openstack-swift-container.service # systemctl enable openstack-swift-object.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.3. Object Storage サービスのプロキシーサービスの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Object Storage のプロキシーサービスは、
gets および puts の転送先のノードを決定します。
アカウント、コンテナー、オブジェクトのサービスは、プロキシーサービスと並行して実行することが可能ですが、以下の手順ではプロキシーサービスのみについて説明します。
注記
Object Storage サービスに組み込まれている SSL 機能は、主にテストを目的としており、実稼働環境での使用はお勧めできません。Red Hat は 実稼働環境のクラスターには SSL 接続の終了にロードバランサーを使用することを推奨します。
手順4.5 Object Storage サービスのプロキシサービスの設定
- 適切なサービスユーザーの正しい認証情報でプロキシーサーバーの設定ファイルを更新します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えてください。- IP は、Identity サーバーの IP アドレスまたはホスト名に置き換えます。
- services は、Object Storage サービス用に作成されたテナントの名前に置き換えます (上記の例では、この値を
servicesに設定)。 - swift は、Object Storage サービス用に作成されたサービスユーザーの名前に置き換えます (上記の例では、この値を
swiftに設定)。 - PASSWORD は、サービスユーザーに関連付けられたパスワードに置き換えます。
memcachedおよびopenstack-swift-proxyサービスを起動します。systemctl start memcached.service systemctl start openstack-swift-proxy.service
# systemctl start memcached.service # systemctl start openstack-swift-proxy.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow memcachedおよびopenstack-swift-proxyサービスがブート時に起動するように設定します。systemctl enable memcached.service systemctl enable openstack-swift-proxy.service
# systemctl enable memcached.service # systemctl enable openstack-swift-proxy.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Object Storage プロキシーサービスをホストするサーバーへの受信接続を許可します。テキストエディターで
/etc/sysconfig/iptablesファイルを開き、ポート 8080 の TCP トラフィックを許可する INPUT ルールを追加します。新規ルールは、トラフィックを REJECT する INPUT ルールよりも前に記載するようにしてください。-A INPUT -p tcp -m multiport --dports 8080 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 8080 -j ACCEPTCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要
上記のルールにより、全リモートホストから Swift プロキシーを実行するシステムへの通信がポート8080で許可されます。より制限の厳しいファイアウォールルールの作成についての説明は、『Red Hat Enterprise Linux セキュリティーガイド』を参照してください。 iptablesサービスを再起動して、変更を有効にします。systemctl restart iptables.service
# systemctl restart iptables.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.4. Object Storage サービスのリング リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
リングは、ストレージノードのクラスター内でデータが格納される場所を決定します。リングファイルは、swift-ring-builder ツールを使用して生成されます。必要なリングファイルは 3 つで、それぞれ オブジェクト、コンテナー、アカウント のサービスが対象です。
クラスター内の各ストレージデバイスは、パーティション分割されます。推奨されるパーティション数は 1 デバイスあたり 100 です。partition power (パーティションのべき乗) として知られる、パーティションディレクトリーへのファイルシステムパスの MD5 ハッシュから設定可能なビット数は、そのデバイスのパーティション指数として使用されます。1000 のデバイスがあるクラスターで、各デバイスが 100 パーティションに分かれている場合に、partition count (パーティション数) は 100 000 です。
partition count は partition power の計算に使用され、partition power を 2 で累乗した値が partition count となります。partition power が小数の場合には切り上げられます。partition count が 100 000 の場合には、その partition power は 17 となります (16.610 から切り上げした値)。数学的には、2 partition power と表記します。
4.4.5. Object Storage サービスのリングファイルの構築 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
リングファイルは、Object Storage サービスに保管されているオブジェクトのトラッキング用に 1 つ、オブジェクトが配置されているコンテナーのトラッキング用に 1 つ、どのコンテナーにどのアカウントがアクセスできるかをトラッキングするのに 1 つ、合計で 3 つ作成する必要があります。リングファイルは、特定のデータが保管されている場所を推定するのに使用されます。
リングファイルは、パーティションのべき乗、レプリカ数、ゾーン、パーティションの再割り当て間隔の 4 つのパラメーターを使用することで生成されます。
| リングファイルのパラメーター | 説明 |
|---|---|
|
part_power
|
2partition power = partition count.
パーティション数は、計算後に切り上げ
|
|
replica_count
|
クラスター内でデータが複製される回数
|
|
min_part_hours
|
パーティションが移動できるまでの最小時間。このパラメーターは、min_part_hours で指定された時間内に 1 つのデータ項目のコピーを複数移動しないようにすることで、データの可用性を向上させます。
|
|
zone
|
デバイスをリングに追加する際に使用されます (任意)。ゾーンは、柔軟な抽象化です。特定のデプロイメント内では、各ゾーンを他のゾーンから可能な限り分離する必要があります。ゾーンを使用してサイト、キャビネット、ノードに加えて、デバイスまでも示すことができます。
|
手順4.6 Object Storage サービスのリングファイルの構築
- サービスごとに 1 リングを構築します。ビルダーファイル、partition power、レプリカ数、および パーティション再割り当ての最小間隔 を指定します。
swift-ring-builder /etc/swift/object.builder create part_power replica_count min_part_hours swift-ring-builder /etc/swift/container.builder create part_power replica_count min_part_hours swift-ring-builder /etc/swift/account.builder create part_power replica_count min_part_hours
# swift-ring-builder /etc/swift/object.builder create part_power replica_count min_part_hours # swift-ring-builder /etc/swift/container.builder create part_power replica_count min_part_hours # swift-ring-builder /etc/swift/account.builder create part_power replica_count min_part_hoursCopy to Clipboard Copied! Toggle word wrap Toggle overflow - リングが作成されたら、account リングにデバイスを追加します。
swift-ring-builder /etc/swift/account.builder add zX-SERVICE_IP:6202/dev_mountpt part_count
# swift-ring-builder /etc/swift/account.builder add zX-SERVICE_IP:6202/dev_mountpt part_countCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の値を置き換えてください。- X は、指定したゾーンに対応する整数に置き換えます (例:
z1はゾーン 1 に対応)。 - SERVICE_IP は、アカウント、コンテナー、オブジェクトのサービスがリッスンする必要のある IP アドレスに置き換えます。IP は、Object Storage サービスのストレージノードの設定中に指定した
bind_ipの値と一致する必要があります。 - dev_mountpt は、デバイスがマウントされる
/srv/nodeのサブディレクトリーに置き換えます。 - part_count は、partition power (パーティションのべき乗) の計算に使用した partition count (パーティション数) に置き換えます。
注記
上記の手順は、リングに追加する (クラスター内の各ノード上の) デバイスごとに繰り返してください。 - container と object のリングの両方にデバイスを追加します。
swift-ring-builder /etc/swift/container.builder add zX-SERVICE_IP:6201/dev_mountpt part_count swift-ring-builder /etc/swift/object.builder add zX-SERVICE_IP:6200/dev_mountpt part_count
# swift-ring-builder /etc/swift/container.builder add zX-SERVICE_IP:6201/dev_mountpt part_count # swift-ring-builder /etc/swift/object.builder add zX-SERVICE_IP:6200/dev_mountpt part_countCopy to Clipboard Copied! Toggle word wrap Toggle overflow 変数は前のステップで使用したのと同じ値に置き換えます。注記
上記のコマンドは、リングに追加する (クラスター内の各ノード上の) デバイスごとに繰り返してください。 - リング内の複数のデバイスにパーティションを分散します。
swift-ring-builder /etc/swift/account.builder rebalance swift-ring-builder /etc/swift/container.builder rebalance swift-ring-builder /etc/swift/object.builder rebalance
# swift-ring-builder /etc/swift/account.builder rebalance # swift-ring-builder /etc/swift/container.builder rebalance # swift-ring-builder /etc/swift/object.builder rebalanceCopy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/swiftディレクトリーにリングファイルが 3 つあるかどうかを確認します。次のコマンドを実行してください。ls /etc/swift/*gz
# ls /etc/swift/*gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのファイルは以下のように表示されるはずです。/etc/swift/account.ring.gz /etc/swift/container.ring.gz /etc/swift/object.ring.gz
/etc/swift/account.ring.gz /etc/swift/container.ring.gz /etc/swift/object.ring.gzCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack-swift-proxyサービスを再起動します。systemctl restart openstack-swift-proxy.service
# systemctl restart openstack-swift-proxy.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 前の手順で作成したばかりのファイルを含む、
/etc/swift/ディレクトリー内の全ファイルの所有権をrootユーザーとswiftグループに設定します。重要
マウントポイントはすべてrootが所有し、マウント済みファイルシステムの全 root はswiftが所有する必要があります。以下のコマンドを実行する前に、すべてのデバイスがすでにマウント済みで、それらをrootが所有していることを確認してください。chown -R root:swift /etc/swift
# chown -R root:swift /etc/swiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow - クラスター内の各ノードに各リングビルダーファイルをコピーして、
/etc/swift/配下に保管します。