kikumotoのメモ帳

インフラ・ミドル周りを中心に、興味をもったことを適当な感じで。twitter : @takakiku

Diablo版Swiftインストール:プロクシサーバ編

前回の記事 Diablo版Swiftインストール:keystone編 に引き続き、Swift環境として必要となるプロクシサーバを構築した時のメモ。

構成とOS環境

前回の記事の通りであるが、今回はストレージサーバのIP情報も必要となるので、それらについては以下の通り。

ストレージ1 192.168.0.101/24
ストレージ2 192.168.0.102/24
ストレージ3 192.168.0.103/24
ストレージ4 192.168.0.104/24

また、各ストレージには /dev/sdb としてデータ保存用ディスクが1つ接続されており、/dev/sdb1 という1つのパーティションのみ存在するものとしている。これについてはストレージサーバ編でも記述予定。

パッケージインストール

プロクシサーバに必要なパッケージは以下のようにしてインストールした。

# yum install python-greenlet python-httplib2 python-netifaces
# yum --disablerepo=diablo install openstack-swift-proxy openstack-keystone memcached python-memcached xinetd

openstack-keystone はプロクシサーバが Keystone にアクセスするために利用しているので必要。

プロクシサーバの設定

まずは memcached を起動しておく。

# chkconfig memcached on
#service memcached start

/etc/swift/swift.conf の記述。適当な文字列を設定しておく。

[swift-hash]
# random unique string that can never change, keep it secret and do NOT lose it
swift_hash_path_suffix = hogehoge_2011_10_24_xxxxxx

今回はSSLは使わないので、証明書などの作成は行わなかった。

そのうえで、/etc/swift/proxy-server.conf を以下のように作成した。

[DEFAULT]
# Enter these next two values if using SSL certifications
#cert_file = /etc/swift/cert.crt
#key_file = /etc/swift/cert.key
bind_port = 8080
workers = 8
user = swift

[pipeline:main]
#pipeline = healthcheck cache tempauth proxy-server
pipeline = healthcheck cache swift3 keystone proxy-server

[app:proxy-server]
use = egg:swift#proxy
allow_account_management = true
account_autocreate = true

#[filter:tempauth]
#use = egg:swift#tempauth
#user_system_root = testpass .admin https://192.168.30.133:8080/v1/AUTH_system

[filter:keystone]
use = egg:keystone#tokenauth
auth_protocol = http
auth_host = 172.16.0.99
auth_port = 5001
admin_token = 999888777666
delay_auth_decision = 0
service_protocol = http
service_host = 172.16.0.99
service_port = 5000
service_pass = dTpw

[filter:swift3]
use = egg:swift#swift3

[filter:healthcheck]
use = egg:swift#healthcheck

[filter:cache]
use = egg:swift#memcache
memcache_servers = 172.16.0.100:11211

ringファイルの作成

ringファイルの作成は以下のスクリプトで行った。パラメータの説明などはOpenStackの大容量ストレージサービス、Swiftの使い方 − TechTargetジャパン 仮想化が詳しい。

#!/bin/bash
export LANG=C
set -x
cd /etc/swift

PART_POWER=10
REPLICAS=3
MIN_PART_HOURS=1

#
# (1) Initialize builder files
#
swift-ring-builder account.builder create ${PART_POWER} ${REPLICAS} ${MIN_PART_HOURS}
swift-ring-builder container.builder create ${PART_POWER} ${REPLICAS} ${MIN_PART_HOURS}
swift-ring-builder object.builder create ${PART_POWER} ${REPLICAS} ${MIN_PART_HOURS}

#
# (2) Add devices
#
# zone 1
swift-ring-builder account.builder   add z1-192.168.0.101:6002/sdb1 1
swift-ring-builder container.builder add z1-192.168.0.101:6001/sdb1 1
swift-ring-builder object.builder    add z1-192.168.0.101:6000/sdb1 1

# zone 2
swift-ring-builder account.builder   add z2-192.168.0.102:6002/sdb1 1
swift-ring-builder container.builder add z2-192.168.0.102:6001/sdb1 1
swift-ring-builder object.builder    add z2-192.168.0.102:6000/sdb1 1

# zone 3
swift-ring-builder account.builder   add z3-192.168.0.103:6002/sdb1 1
swift-ring-builder container.builder add z3-192.168.0.103:6001/sdb1 1
swift-ring-builder object.builder    add z3-192.168.0.103:6000/sdb1 1

# zone 4
swift-ring-builder account.builder   add z4-192.168.0.104:6002/sdb1 1
swift-ring-builder container.builder add z4-192.168.0.104:6001/sdb1 1
swift-ring-builder object.builder    add z4-192.168.0.104:6000/sdb1 1

#
# (3) create ring files (rebalance)
#
swift-ring-builder account.builder rebalance
swift-ring-builder container.builder rebalance
swift-ring-builder object.builder rebalance

ここで、オーナの設定をしておく。

# chown -R swift:swift /etc/swift

以上で設定が完了なので

# swift-init proxy start

プロクシサーバを起動する。

現時点で動作確認する手段が不明なので、とりあえず 8080 ポートが python プロセスにより LISTEN されていればOK。

以上で、プロクシサーバの構築は終了。次回は最後に残ったストレージサーバについて記述予定。