技術情報

技術情報

OpenStack: 分散オブジェクトストレージ Swift

2013年3月6日

技術文書トップへ

初期設定

Swiftの起動

proxy-serverとaccount-server、container-server、object-serverおよび関連プロセスを起動します。

1. プロキシノード

プロキシノードでproxy-serverを起動する。

[root@proxy ~]# swift-init proxy start
Starting proxy-server...(/etc/swift/proxy-server.conf)
[root@proxy ~]#
[root@proxy ~]# swift-init proxy status
proxy-server running (1274 - /etc/swift/proxy-server.conf)
[root@proxy ~]#

2. ストレージノードの起動

ストレージノードではaccount-server、container-server、object-serverおよび関連プロセスを起動します。

[root@stor1 ~]# swift-init all start
Starting container-updater...(/etc/swift/container-server.conf)
Starting account-auditor...(/etc/swift/account-server.conf)
Starting object-replicator...(/etc/swift/object-server.conf)
Starting container-replicator...(/etc/swift/container-server.conf)
Starting object-auditor...(/etc/swift/object-server.conf)
Starting container-auditor...(/etc/swift/container-server.conf)
Starting container-server...(/etc/swift/container-server.conf)
Starting account-server...(/etc/swift/account-server.conf)
Starting account-reaper...(/etc/swift/account-server.conf)
Unable to locate config for proxy-server
Starting account-replicator...(/etc/swift/account-server.conf)
Starting object-updater...(/etc/swift/object-server.conf)
Starting object-server...(/etc/swift/object-server.conf)
[root@stor1 ~]#
[root@stor1 ~]# swift-init all status
container-updater running (1294 - /etc/swift/container-server.conf)
account-auditor running (1295 - /etc/swift/account-server.conf)
object-replicator running (1296 - /etc/swift/object-server.conf)
container-replicator running (1297 - /etc/swift/container-server.conf)
object-auditor running (1298 - /etc/swift/object-server.conf)
container-auditor running (1299 - /etc/swift/container-server.conf)
container-server running (1300 - /etc/swift/container-server.conf)
account-server running (1301 - /etc/swift/account-server.conf)
account-reaper running (1302 - /etc/swift/account-server.conf)
No proxy-server running
account-replicator running (1303 - /etc/swift/account-server.conf)
object-updater running (1304 - /etc/swift/object-server.conf)
object-server running (1305 - /etc/swift/object-server.conf)

swift-initコマンドで「all」を指定すると設定ファイルが存在するサービスが全て起動されます。ここでは、proxy-serverの設定ファイルが存在しないため、proxy-serverを除いたサービスが起動します。
個別にサービスを指定する場合は、以下のようになります。

# swift-init object-server start
# swift-init object-replicator start
# swift-init object-updater start
# swift-init object-auditor start
# swift-init container-server start
# swift-init container-replicator start
# swift-init container-updater start
# swift-init container-auditor start
# swift-init account-server start
# swift-init account-replicator start
# swift-init account-auditor start
# swift-init account-reaper start

Ubuntuでは、各サービスに応じたrcスクリプトがインストールされているため、次のようにserviceコマンドを使ってもサービスを起動することができます。

# service swift-proxy start
# service swift-object start
# service swift-object-replicator start
# service swift-object-updater start
# service swift-object-auditor start
# service swift-container start
# service swift-container-replicator start
# service swift-container-updater start
# service swift-container-auditor start
# service swift-account start
# service swift-account-replicator start
# service swift-account-auditor start
# service swift-account-reaper start

ただし、swift-initコマンドのように全サービスをまとめて起動することはできません。

ページトップ

Swiftの停止

proxy-serverとaccount-server、container-server、object-serverおよび関連プロセスを停止します。

1. プロキシノード

プロキシノードでproxy-serverを停止する。

[root@proxy ~]# swift-init proxy stop
Signal proxy-server pid: 1291 signal: 15
proxy-server (1291) appears to have stopped
[root@proxy ~]#
[root@proxy ~]# swift-init proxy status
No proxy-server running
[root@proxy ~]#

2. ストレージノード

ストレージノードで、account-server、container-server、object-serverおよび関連プロセスを停止します。

[root@stor1 ~]# swift-init all stop
Signal container-updater pid: 1294 signal: 15
Signal account-auditor pid: 1295 signal: 15
Signal object-replicator pid: 1296 signal: 15
Signal container-replicator pid: 1297 signal: 15
Signal object-auditor pid: 1298 signal: 15
Signal container-auditor pid: 1299 signal: 15
Signal container-server pid: 1300 signal: 15
Signal account-server pid: 1301 signal: 15
Signal account-reaper pid: 1302 signal: 15
No proxy-server running
Signal account-replicator pid: 1303 signal: 15
Signal object-updater pid: 1304 signal: 15
Signal object-server pid: 1305 signal: 15
container-updater (1294) appears to have stopped
account-auditor (1295) appears to have stopped
object-replicator (1296) appears to have stopped
container-replicator (1297) appears to have stopped
object-auditor (1298) appears to have stopped
container-auditor (1299) appears to have stopped
container-server (1300) appears to have stopped
account-server (1301) appears to have stopped
account-reaper (1302) appears to have stopped
account-replicator (1303) appears to have stopped
object-updater (1304) appears to have stopped
object-server (1305) appears to have stopped
[root@stor1 ~]#
[root@stor1 ~]# swift-init all status
No container-updater running
No account-auditor running
No object-replicator running
No container-replicator running
No object-auditor running
No container-auditor running
No container-server running
No account-server running
No account-reaper running
No proxy-server running
No account-replicator running
No object-updater running
No object-server running
[root@stor1 ~]#

停止の場合も起動と同様に、個別のサービスを指定して停止することも可能です。また、Ubuntuでは、serviceコマンドを使って停止することもできます。

ページトップ

Swiftの再起動

proxy-serverとaccount-server、container-server、object-serverおよび関連プロセスの再起動を行います。
再起動は、変更した設定ファイルの内容を反映させたい時などに利用します。

1. プロキシノード

プロキシノードでproxy-serverを再起動します。

[root@proxy ~]# swift-init proxy restart
Signal proxy-server pid: 1274 signal: 15
proxy-server (1274) appears to have stopped
Starting proxy-server...(/etc/swift/proxy-server.conf)
[root@proxy ~]#
[root@proxy ~]# swift-init proxy status
proxy-server running (1291 - /etc/swift/proxy-server.conf)
[root@proxy ~]#

2. ストレージノード

ストレージノードで、account-server、container-server、object-serverおよび関連プロセスを再起動します。

[root@stor1 ~]# swift-init all restart
Signal container-updater pid: 1390 signal: 15
Signal account-auditor pid: 1391 signal: 15
Signal object-replicator pid: 1392 signal: 15
Signal container-replicator pid: 1393 signal: 15
Signal object-auditor pid: 1394 signal: 15
Signal container-auditor pid: 1395 signal: 15
Signal container-server pid: 1396 signal: 15
Signal account-server pid: 1397 signal: 15
Signal account-reaper pid: 1398 signal: 15
No proxy-server running
Signal account-replicator pid: 1399 signal: 15
Signal object-updater pid: 1400 signal: 15
Signal object-server pid: 1401 signal: 15
container-updater (1390) appears to have stopped
account-auditor (1391) appears to have stopped
object-replicator (1392) appears to have stopped
container-replicator (1393) appears to have stopped
object-auditor (1394) appears to have stopped
container-auditor (1395) appears to have stopped
container-server (1396) appears to have stopped
account-server (1397) appears to have stopped
account-reaper (1398) appears to have stopped
account-replicator (1399) appears to have stopped
object-updater (1400) appears to have stopped
object-server (1401) appears to have stopped
Starting container-updater...(/etc/swift/container-server.conf)
Starting account-auditor...(/etc/swift/account-server.conf)
Starting object-replicator...(/etc/swift/object-server.conf)
Starting container-replicator...(/etc/swift/container-server.conf)
Starting object-auditor...(/etc/swift/object-server.conf)
Starting container-auditor...(/etc/swift/container-server.conf)
Starting container-server...(/etc/swift/container-server.conf)
Starting account-server...(/etc/swift/account-server.conf)
Starting account-reaper...(/etc/swift/account-server.conf)
Unable to locate config for proxy-server
Starting account-replicator...(/etc/swift/account-server.conf)
Starting object-updater...(/etc/swift/object-server.conf)
Starting object-server...(/etc/swift/object-server.conf)
[root@stor1 ~]#
[root@stor1 ~]# swift-init all status
container-updater running (1478 - /etc/swift/container-server.conf)
account-auditor running (1479 - /etc/swift/account-server.conf)
object-replicator running (1480 - /etc/swift/object-server.conf)
container-replicator running (1481 - /etc/swift/container-server.conf)
object-auditor running (1482 - /etc/swift/object-server.conf)
container-auditor running (1483 - /etc/swift/container-server.conf)
container-server running (1484 - /etc/swift/container-server.conf)
account-server running (1485 - /etc/swift/account-server.conf)
account-reaper running (1486 - /etc/swift/account-server.conf)
No proxy-server running
account-replicator running (1487 - /etc/swift/account-server.conf)
object-updater running (1488 - /etc/swift/object-server.conf)
object-server running (1489 - /etc/swift/object-server.conf)
[root@stor1 ~]#

再起動も起動と同様に、個別のサービスを指定して再起動することも可能です。また、Ubuntuでは、serviceコマンドを使って再起動することもできます。

ページトップ

Swift管理者用アカウントを作成しての動作確認

インストールが完了したら、実際にSwiftにリクエストを送り期待通りに動作することを確認します。
プロキシノードから以下のコマンドを実行します。

1. 管理者権限を持つユーザ(アカウント = system、ユーザ名 = root、パスワード = testpass)を作成します。

以下の例にあるswauthkeyは、前出のproxy-server.confファイル内で割り当てたsuper_adminキーに置き換えてください。注:アカウント、ユーザ名、パスワードは、特別なものでないため、任意に選んでも構いません。

swauth-prep -A https://<PROXY_HOSTNAME>:8080/auth/ -K swauthkey
swauth-add-user -A https://<PROXY_HOSTNAME>:8080/auth/ -K swauthkey -a system root testpass

2. 作成したアカウントとユーザで認証を受け、ストレージURL(X-Storage-Url)とトークン(X-Auth-Token)を取得します。

curl -k -v -H 'X-Storage-User: system:root' -H 'X-Storage-Pass: testpass' https://<PROXY_HOSTNAME>:8080/auth/v1.0

3. アカウントにアクセスできることを確認します。

curl -k -v -H 'X-Auth-Token: <token-from-x-auth-token-above>' <url-from-x-storage-url-above>

4. stコマンド(Diabloリリース以降はswiftコマンド)のstatサブコマンドで動作を確認します。この時点では、コンテナ数0、オブジェクト数0、バイト数0という出力になるはずです。

st -A https://<PROXY_HOSTNAME>:8080/auth/v1.0 -U system:root -K testpass stat

5. stコマンドを使用して、コンテナ"myfiles"配下にファイル"bigfile1.tgz"と"bigfile2.tgz"をオブジェクトとしてアップロードします。

st -A https://<PROXY_HOSTNAME>:8080/auth/v1.0 -U system:root -K testpass upload myfiles bigfile1.tgz
st -A https://<PROXY_HOSTNAME>:8080/auth/v1.0 -U system:root -K testpass upload myfiles bigfile2.tgz

6. stコマンドを使用して、コンテナ"myfiles"配下のオブジェクトを全てダウンロードします。

st -A https://<PROXY_HOSTNAME>:8080/auth/v1.0 -U system:root -K testpass download myfiles

7. stコマンドを使用して、ビルダファイル(リングファイル生成用の中間ファイル)のバックアップをコンテナ"builders"に保存します。ビルダファイルはリングファイルを作り直す時に必要となりますので、それらが失わないようにするため、必ず保存することを推奨します。

st -A https://<PROXY_HOSTNAME>:8080/auth/v1.0 -U system:root -K testpass upload builders /etc/swift/*.builder

8. stコマンドを使用して、コンテナの一覧を取得します。

st -A https://<PROXY_HOSTNAME>:8080/auth/v1.0 -U system:root -K testpass list

9. stコマンドを使用して、コンテナ"builders"コンテナ配下のオブジェクト一覧を取得します。

st -A https://<PROXY_HOSTNAME>:8080/auth/v1.0 -U system:root -K testpass list builders

10. stコマンドを使用して、コンテナ"builders"から全てのオブジェクトをダウンロードします。

st -A https://<PROXY_HOSTNAME>:8080/auth/v1.0 -U system:root -K testpass download builders

以上で、動作確認は完了です。

ページトップ