Diablo版Swiftインストール:ストレージサーバ編
前回、前々回からの続きで最後にストレージサーバを構築したときの手順をメモしておく。
構成とOS環境
keystone やプロクシサーバと同様。
パッケージインストール
ストレージサーバに必要なパッケージは以下のようにしてインストールした。
# yum install python-greenlet python-netifaces # yum --disablerepo=diablo install openstack-swift-object openstack-swift-account openstack-swift-container xinetd
データ保存ディスクの準備
今回は、/dev/sdb に接続されたディスクにデータを保存する構成とした。そのために、fdisk で /dev/sdb 全体を1つのパーティションをつくり /dev/sdb1 として構成した。
これを以下のように XFS でフォーマットし、マウントしておく。
# yum -y install xfsprogs # mkfs.xfs -i size=1024 /dev/sdb1 # echo "/dev/sdb1 /srv/node/sdb1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 0" >> /etc/fstab # mkdir -p /srv/node/sdb1 # mount /srv/node/sdb1 # chown -R swift:swift /srv/node
rsync
Swiftではデータの復旧などにrsyncを使うので、rsyncに関する設定をおこなっておく。まず、/etc/rsyncd.confを以下の内容で作成。address 部分は各ストレージサーバのIPに対応したものとなる。
uid = swift gid = swift log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid address = 192.168.0.101 [account] max connections = 25 path = /srv/node/ read only = false lock file = /var/lock/account.lock [container] max connections = 25 path = /srv/node/ read only = false lock file = /var/lock/container.lock [object] max connections = 25 path = /srv/node/ read only = false lock file = /var/lock/object.lock
サービスと起動させるために、/etc/xinetd.d/rsync を以下のように記述し
service rsync { disable = no flags = IPv4 socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID }
xinetd サービスを再起動する。
# service xinetd restart
ストレージサーバ設定
/etc/swift に account-server.conf, container-server.conf, object-server.conf を以下の内容で作成。各ファイルのbind_ipが、各ストレージサーバのIPに対応するように記述する。
account-server.conf
[DEFAULT] bind_ip = 192.168.0.101 workers = 2 mount_check = false user = swift log_facility = LOG_LOCAL2 [pipeline:main] pipeline = account-server [app:account-server] use = egg:swift#account [account-replicator] [account-auditor] [account-reaper]
container-server.conf
[DEFAULT] bind_ip = 192.168.0.101 workers = 2 mount_check = false user = swift log_facility = LOG_LOCAL2 [pipeline:main] pipeline = container-server [app:container-server] use = egg:swift#container [container-replicator] [container-updater] [container-auditor]
object-server.conf
[DEFAULT] bind_ip = 192.168.0.101 workers = 2 mount_check = false user = swift log_facility = LOG_LOCAL2 [pipeline:main] pipeline = object-server [app:object-server] use = egg:swift#object [object-replicator] [object-updater] [object-auditor]
ファイルのオーナーを修正しておく。
# chown -R swift.swift /etc/swift
以上で設定ができたので、
# swift-init main start
で起動する。
動作確認
すべてのストレージサーバをセットアップした後、以下のようにして動作確認を行った。
コンテナを作成する。
$ swift -A http://172.16.0.99:5000/v1.0 -U demo -K secrete post folder1
コンテナにファイルをアップする。
$ swift -A http://172.16.0.99:5000/v1.0 -U demo -K secrete upload folder1 file1.txt
コンテナの内容を確認
$ swift -A http://172.16.0.99:5000/v1.0 -U demo -K secrete list folder1
以上で、Diablo版Swiftの環境ができた。
今後は、これをベースにいろいろいじっていきたい。。。けれど、はたして。。。