このセクションは、ストレージノード上で動作するアカウント、コンテナ、およびオブジェクトサービスに対する要求を処理するプロキシサービスをインストールおよび設定する方法について紹介します。また、簡単のため、ここではコントローラーノードにプロキシーサービスをインストールして設定を行います。
クレデンシャル、エンティティ、エンドポイントの作成
admin クレデンシャルを読み込み、管理者専用 CLI コマンドへのアクセス権を取得します。
[root@controller ~]# . openrc/admin-openrc [root@controller ~]#
swift ユーザーを作成します。ここでは、swift ユーザーのパスワードは SWIFT_PASS としているので、適宜変更して下さい。
[root@controller ~]# openstack user create --domain default --password-prompt swift User Password: SWIFT_PASS Repeat User Password: SWIFT_PASS +---------------------+----------------------------------+ | Field | Value | +---------------------+----------------------------------+ | domain_id | default | | enabled | True | | id | 1085576577104c85b4d4d34362c6072e | | name | swift | | options | {} | | password_expires_at | None | +---------------------+----------------------------------+ [root@controller ~]#
admin ロールを swift ユーザーに追加します。
[root@controller ~]# openstack role add --project service --user swift admin [root@controller ~]#
swift サービスエンティティーを作成します。
[root@controller ~]# openstack service create --name swift \ > --description "OpenStack Object Storage" object-store +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Object Storage | | enabled | True | | id | 628ecad16c7745daacee1638998cd5b3 | | name | swift | | type | object-store | +-------------+----------------------------------+ [root@controller ~]#
Object Storage service API エンドポイントを作成します。
[root@controller ~]# openstack endpoint create --region RegionOne \ > object-store public http://controller:8080/v1/AUTH_%\(project_id\)s +--------------+-----------------------------------------------+ | Field | Value | +--------------+-----------------------------------------------+ | enabled | True | | id | 912da038b1cb4f0596098e6b699a5816 | | interface | public | | region | RegionOne | | region_id | RegionOne | | service_id | 628ecad16c7745daacee1638998cd5b3 | | service_name | swift | | service_type | object-store | | url | http://controller:8080/v1/AUTH_%(project_id)s | +--------------+-----------------------------------------------+ [root@controller ~]#
[root@controller ~]# openstack endpoint create --region RegionOne \ > object-store internal http://controller:8080/v1/AUTH_%\(project_id\)s +--------------+-----------------------------------------------+ | Field | Value | +--------------+-----------------------------------------------+ | enabled | True | | id | 6fbb09c84e0c42419784cc00dfdacdd8 | | interface | internal | | region | RegionOne | | region_id | RegionOne | | service_id | 628ecad16c7745daacee1638998cd5b3 | | service_name | swift | | service_type | object-store | | url | http://controller:8080/v1/AUTH_%(project_id)s | +--------------+-----------------------------------------------+ [root@controller ~]#
[root@controller ~]# openstack endpoint create --region RegionOne \ > object-store admin http://controller:8080/v1 +--------------+----------------------------------+ | Field | Value | +--------------+----------------------------------+ | enabled | True | | id | b44ac88dd2024a78888cca21521526f9 | | interface | admin | | region | RegionOne | | region_id | RegionOne | | service_id | 628ecad16c7745daacee1638998cd5b3 | | service_name | swift | | service_type | object-store | | url | http://controller:8080/v1 | +--------------+----------------------------------+ [root@controller ~]#
コンポーネントのインストールと設定
パッケージをインストールします。
[root@controller ~]# yum --enablerepo=centos-openstack-rocky -y install openstack-swift-proxy python-swiftclient \ > python-keystoneclient python-keystonemiddleware \ > memcached 読み込んだプラグイン:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.riken.jp * extras: ftp.riken.jp * updates: ftp.riken.jp base | 3.6 kB 00:00:00 centos-ceph-luminous | 2.9 kB 00:00:00 centos-openstack-rocky | 2.9 kB 00:00:00 centos-qemu-ev | 2.9 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/3): updates/7/x86_64/primary_db | 6.0 MB 00:00:01 (2/3): centos-qemu-ev/7/x86_64/primary_db | 51 kB 00:00:01 (3/3): centos-ceph-luminous/7/x86_64/primary_db | 118 kB 00:00:03 パッケージ python2-swiftclient-3.6.0-1.el7.noarch はインストール済みか最新バージョンです パッケージ 1:python2-keystoneclient-3.17.0-1.el7.noarch はインストール済みか最新バージョンです パッケージ python2-keystonemiddleware-5.2.0-1.el7.noarch はインストール済みか最新バージョンです パッケージ memcached-1.5.6-1.el7.x86_64 はインストール済みか最新バージョンです 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ openstack-swift-proxy.noarch 0:2.19.0-1.el7 を インストール --> 依存性の処理をしています: python-swift = 2.19.0-1.el7 のパッケージ: openstack-swift-proxy-2.19.0-1.el7.noarch --> 依存性の処理をしています: python2-ceilometermiddleware のパッケージ: openstack-swift-proxy-2.19.0-1.el7.noarch --> トランザクションの確認を実行しています。 ---> パッケージ python-swift.noarch 0:2.19.0-1.el7 を インストール --> 依存性の処理をしています: python2-pyeclib のパッケージ: python-swift-2.19.0-1.el7.noarch --> 依存性の処理をしています: python2-dns のパッケージ: python-swift-2.19.0-1.el7.noarch ---> パッケージ python2-ceilometermiddleware.noarch 0:1.3.0-1.el7 を インストール --> トランザクションの確認を実行しています。 ---> パッケージ python-dns.noarch 0:1.15.0-5.el7 を インストール --> 依存性の処理をしています: python-crypto のパッケージ: python-dns-1.15.0-5.el7.noarch ---> パッケージ python2-pyeclib.x86_64 0:1.5.0-3.el7 を インストール --> 依存性の処理をしています: liberasurecode >= 1.5.0 のパッケージ: python2-pyeclib-1.5.0-3.el7.x86_64 --> 依存性の処理をしています: liberasurecode.so.1()(64bit) のパッケージ: python2-pyeclib-1.5.0-3.el7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ liberasurecode.x86_64 0:1.5.0-1.el7 を インストール ---> パッケージ python2-crypto.x86_64 0:2.6.1-15.el7 を インストール --> 依存性の処理をしています: libtomcrypt.so.0()(64bit) のパッケージ: python2-crypto-2.6.1-15.el7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ libtomcrypt.x86_64 0:1.17-26.el7 を インストール --> 依存性の処理をしています: libtommath >= 0.42.0 のパッケージ: libtomcrypt-1.17-26.el7.x86_64 --> 依存性の処理をしています: libtommath.so.0()(64bit) のパッケージ: libtomcrypt-1.17-26.el7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ libtommath.x86_64 0:0.42.0-6.el7 を インストール --> 依存性解決を終了しました。 依存性を解決しました ========================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ========================================================================================== インストール中: openstack-swift-proxy noarch 2.19.0-1.el7 centos-openstack-rocky 33 k 依存性関連でのインストールをします: liberasurecode x86_64 1.5.0-1.el7 centos-openstack-rocky 54 k libtomcrypt x86_64 1.17-26.el7 extras 224 k libtommath x86_64 0.42.0-6.el7 extras 36 k python-dns noarch 1.15.0-5.el7 centos-openstack-rocky 248 k python-swift noarch 2.19.0-1.el7 centos-openstack-rocky 1.4 M python2-ceilometermiddleware noarch 1.3.0-1.el7 centos-openstack-rocky 30 k python2-crypto x86_64 2.6.1-15.el7 extras 477 k python2-pyeclib x86_64 1.5.0-3.el7 centos-openstack-rocky 47 k トランザクションの要約 ========================================================================================== インストール 1 パッケージ (+8 個の依存関係のパッケージ) 総ダウンロード容量: 2.5 M インストール容量: 10 M Downloading packages: (1/9): libtommath-0.42.0-6.el7.x86_64.rpm | 36 kB 00:00:00 (2/9): libtomcrypt-1.17-26.el7.x86_64.rpm | 224 kB 00:00:00 (3/9): liberasurecode-1.5.0-1.el7.x86_64.rpm | 54 kB 00:00:01 (4/9): openstack-swift-proxy-2.19.0-1.el7.noarch.rpm | 33 kB 00:00:01 (5/9): python-dns-1.15.0-5.el7.noarch.rpm | 248 kB 00:00:01 (6/9): python2-crypto-2.6.1-15.el7.x86_64.rpm | 477 kB 00:00:00 (7/9): python2-ceilometermiddleware-1.3.0-1.el7.noarch.rpm | 30 kB 00:00:00 (8/9): python2-pyeclib-1.5.0-3.el7.x86_64.rpm | 47 kB 00:00:00 (9/9): python-swift-2.19.0-1.el7.noarch.rpm | 1.4 MB 00:00:07 ------------------------------------------------------------------------------------------ 合計 266 kB/s | 2.5 MB 00:00:09 Running transaction check Running transaction test Transaction test succeeded Running transaction インストール中 : python2-ceilometermiddleware-1.3.0-1.el7.noarch 1/9 インストール中 : libtommath-0.42.0-6.el7.x86_64 2/9 インストール中 : libtomcrypt-1.17-26.el7.x86_64 3/9 インストール中 : python2-crypto-2.6.1-15.el7.x86_64 4/9 インストール中 : python-dns-1.15.0-5.el7.noarch 5/9 インストール中 : liberasurecode-1.5.0-1.el7.x86_64 6/9 インストール中 : python2-pyeclib-1.5.0-3.el7.x86_64 7/9 インストール中 : python-swift-2.19.0-1.el7.noarch 8/9 インストール中 : openstack-swift-proxy-2.19.0-1.el7.noarch 9/9 検証中 : liberasurecode-1.5.0-1.el7.x86_64 1/9 検証中 : libtommath-0.42.0-6.el7.x86_64 2/9 検証中 : python2-pyeclib-1.5.0-3.el7.x86_64 3/9 検証中 : openstack-swift-proxy-2.19.0-1.el7.noarch 4/9 検証中 : python2-ceilometermiddleware-1.3.0-1.el7.noarch 5/9 検証中 : python-swift-2.19.0-1.el7.noarch 6/9 検証中 : python2-crypto-2.6.1-15.el7.x86_64 7/9 検証中 : libtomcrypt-1.17-26.el7.x86_64 8/9 検証中 : python-dns-1.15.0-5.el7.noarch 9/9 インストール: openstack-swift-proxy.noarch 0:2.19.0-1.el7 依存性関連をインストールしました: liberasurecode.x86_64 0:1.5.0-1.el7 libtomcrypt.x86_64 0:1.17-26.el7 libtommath.x86_64 0:0.42.0-6.el7 python-dns.noarch 0:1.15.0-5.el7 python-swift.noarch 0:2.19.0-1.el7 python2-ceilometermiddleware.noarch 0:1.3.0-1.el7 python2-crypto.x86_64 0:2.6.1-15.el7 python2-pyeclib.x86_64 0:1.5.0-3.el7 完了しました! [root@controller ~]#
プロキシーサービスの設定ファイル( /etc/swift/proxy-server.conf )をバックアップします。
[root@controller ~]# ls /etc/swift/ container-reconciler.conf proxy-server swift.conf object-expirer.conf proxy-server.conf [root@controller ~]# [root@controller ~]# cp -rp /etc/swift/proxy-server.conf /etc/swift/proxy-server.conf.org [root@controller ~]# [root@controller ~]# ls /etc/swift/ container-reconciler.conf proxy-server proxy-server.conf.org object-expirer.conf proxy-server.conf swift.conf [root@controller ~]#
プロキシーサービスの設定ファイルを Object Storage のソースディレクトリーから取得します。
[root@controller ~]# curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/queens % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 41237 100 41237 0 0 29600 0 0:00:01 0:00:01 --:--:-- 29624 [root@controller ~]#
プロキシーサービス( /etc/swift/proxy-server.conf )を編集し、以下設定します。
[root@controller ~]# vi /etc/swift/proxy-server.conf
[DEFAULT] セクションで、バインドするポート、ユーザー、設定ディレクトリーを設定します。
[DEFAULT] ... bind_port = 8080 user = swift swift_dir = /etc/swift
[pipeline:main] セクションで、適切なモジュールを有効にします。
[pipeline:main] pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo versioned_writes proxy-logging proxy-server
[app:proxy-server] セクションで、自動アカウント作成を有効にします。
[app:proxy-server] use = egg:swift#proxy ... account_autocreate = True
[filter:keystoneauth] セクションで、operator ロールを設定します。ここでは、admin ユーザー以外に、myrole ロールを割り当てているユーザーでもオブジェクトストレージが使用できるように設定しています。
[filter:keystoneauth] use = egg:swift#keystoneauth ... operator_roles = admin,myrole
[filter:authtoken] セクションに、Identity サービスへのアクセス方法を設定します。ここでは、swift ユーザーのパスワードは SWIFT_PASS としているので、実際の情報に置き換えてください。
[filter:authtoken] paste.filter_factory = keystonemiddleware.auth_token:filter_factory ... www_authenticate_uri = http://controller:5000 auth_url = http://controller:5000 memcached_servers = controller:11211 auth_type = password project_domain_id = default user_domain_id = default project_name = service username = swift password = SWIFT_PASS delay_auth_decision = True
[filter:cache] セクションに、memcached の位置を設定します。
[filter:cache] use = egg:swift#memcache ... memcache_servers = controller:11211
ファイアウォールでの通信許可
Object Storage サービス( Swift )で必要となる TCP 8080( Object Storage service API )通信をファイアウォールで許可します。
[root@controller swift]# firewall-cmd --add-port=8080/tcp --permanent success [root@controller swift]#
ファイアウォールの設定状況を確認します。
[root@controller swift]# firewall-cmd --list-port --zone=public --permanent 5000/tcp 5672/tcp 8778/tcp 6080/tcp 80/tcp 3306/tcp 9696/tcp 9292/tcp 8472/tcp 6081/tcp 6082/tcp 123/udp 67/udp 8776/tcp 8472/udp 9191/tcp 11211/tcp 8774/tcp 8775/tcp 8080/tcp [root@controller swift]#
firewalld をリロードし、設定を反映します。
[root@controller swift]# firewall-cmd --reload success [root@controller swift]#