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