Swift AKA OpenStack Object Storageは、マルチテナントオブジェクトストレージシステムであり、クラスター内のストレージノード全体に分散スケールアウトオブジェクトストアを提供します。このガイドは、Ubuntu14.04.2でswiftを構成するのに役立ちます。
Swiftには2つの主要なコンポーネントがあります:
迅速なプロキシ:
APIと生のhttpリクエストを受け入れて、ファイルのアップロード、メタデータの変更、コンテナの作成を行います。リクエストはRESTAPIを介して行われるため、PUTやGETなどの単純なコマンドでHTTP動詞を使用します。ユーザーが書き込むデータを送信すると、リクエストはプロキシサーバーに送信され、データを保存するのに最適なストレージノードが選択されます。パフォーマンスと冗長性のために、複数のプロキシサーバーを使用できます。この例では、コントローラーノードを迅速なプロキシサーバーとして使用します。
ストレージノード:
これはユーザーデータが保存される場所であり、環境内に複数のストレージノードを持つことができます。 Swiftは複製ベースのシステムであり、その中に保存されているすべてのデータは、データの高可用性を確保するために複数回(レプリカ)で保存されます。
前提条件:
以下は、プロキシノードとストレージノードのネットワーク構成です。ストレージノードには、管理ネットワーク上に1つのネットワークインターフェイスがあります。
役割 | NWカード1 |
---|---|
プロキシサーバー(コントローラーノード) | 192.168.12.21 / 24、GW =192.168.12.2 (管理ネットワーク) |
オブジェクトストレージノード1 | 192.168.12.25 / 24、GW =192.168.12.2 (管理ネットワーク) |
オブジェクトストレージノード1 | 192.168.12.26 / 24、GW =192.168.12.2 (管理ネットワーク) |
オブジェクトストレージノード1 | 192.168.12.27 / 24、GW =192.168.12.2 (管理ネットワーク) |
コントローラーノードにswiftプロキシをインストールして構成します:
環境スクリプトから管理者クレデンシャルをロードします。
# source admin-openrc.sh
サービス資格情報を作成するための迅速なユーザーを作成します。
# openstack user create --password-prompt swift User Password: Repeat User Password: +----------+----------------------------------+ | Field | Value | +----------+----------------------------------+ | email | None | | enabled | True | | id | 023c019a62f3476d986627e8615b034f | | name | swift | | username | swift | +----------+----------------------------------+
迅速なユーザーに管理者の役割を追加します。
# openstack role add --project service --user swift admin +-------+----------------------------------+ | Field | Value | +-------+----------------------------------+ | id | 33af4f957aa34cc79451c23bf014af6f | | name | admin | +-------+----------------------------------+
迅速なサービスエンティティを作成します。
# openstack service create --name swift --description "OpenStack Object Storage" object-store +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Object Storage | | enabled | True | | id | b835a5fbfe3d4a9592f6dbd69ddb148d | | name | swift | | type | object-store | +-------------+----------------------------------+
Object StorageServiceAPIエンドポイントを作成します。
# openstack endpoint create --publicurl 'http://controller:8080/v1/AUTH_%(tenant_id)s' --internalurl 'http://controller:8080/v1/AUTH_%(tenant_id)s' --adminurl http://controller:8080 --region RegionOne object-store +--------------+----------------------------------------------+ | Field | Value | +--------------+----------------------------------------------+ | adminurl | http://controller:8080 | | id | d250217af148491abc611e2b72a227b8 | | internalurl | http://controller:8080/v1/AUTH_%(tenant_id)s | | publicurl | http://controller:8080/v1/AUTH_%(tenant_id)s | | region | RegionOne | | service_id | b835a5fbfe3d4a9592f6dbd69ddb148d | | service_name | swift | | service_type | object-store | +--------------+----------------------------------------------+
コントローラーノードにパッケージをインストールします。
# apt-get install swift swift-proxy python-swiftclient python-keystoneclient python-keystonemiddleware memcached
/ etc/swiftディレクトリを作成します。
# mkdir /etc/swift
ソースリポジトリからプロキシ構成ファイルを取得します。
# curl -o /etc/swift/proxy-server.conf https://git.openstack.org/cgit/openstack/swift/plain/etc/proxy-server.conf-sample?h=stable/kilo
/etc/swift/proxy-server.confファイルを編集します。
# nano /etc/swift/proxy-server.conf
以下の設定を変更し、適切なセクションにエントリを配置してください。セクションが存在しない場合はセクションを追加する必要があり、ファイルに欠落しているエントリをすべてではなくいくつか追加する必要がある場合もあります。
[DEFAULT] ... bind_port = 8080 user = swift swift_dir = /etc/swift [pipeline:main] pipeline = catch_errors gatekeeper healthcheck proxy-logging cache container_sync bulk ratelimit authtoken keystoneauth container-quotas account-quotas slo dlo proxy-logging proxy-server [app:proxy-server] ... account_autocreate = true [filter:keystoneauth] use = egg:swift#keystoneauth ... operator_roles = admin,user [filter:authtoken] paste.filter_factory = keystonemiddleware.auth_token:filter_factory ... auth_uri = http://controller:5000 auth_url = http://controller:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = swift password = password ## Replace "password" with the password you chose for swift user in the identity service delay_auth_decision = true ## Comment out or remove any other options in the [filter:authtoken] section [filter:cache] ... memcache_servers = 127.0.0.1:11211
以上です!!!次のチュートリアルでは、ストレージノードを構成します。