読者です 読者をやめる 読者になる 読者になる

仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

OpenStack SwiftだけをRDO PackStackで構築する

OpenStack Swiftを簡単に試すにはKeystoneとSwiftが最低限必要です。この二つくらいなら公式の手順書に従ってマニュアルインストールしてもいいのですが、手を抜けるところはとことん抜きたい人なのでRDO Packstackを使って構築することにしました。

基本的にはここの手順のStep 4まで実施して、次の通りanswer-textを編集してデプロイするだけです。answer-textのdiffの結果を貼り付けてみます。

今回は日付つきの設定を使って、CentOS 7ベースでデプロイしました。もう少しはまるかなと思ったのですが、デプロイは数十分程度で終わりました。

--- packstack-answers-moto.txt 2015-10-15 19:08:42.774697473 +0900
+++ packstack-answers-20151015-190609.txt 2015-10-15 19:09:51.678852212 +0900
@@ -14,21 +14,21 @@
CONFIG_MARIADB_INSTALL=y

# Specify 'y' to install OpenStack Image Service (glance). ['y', 'n']
-CONFIG_GLANCE_INSTALL=y
+CONFIG_GLANCE_INSTALL=n

# Specify 'y' to install OpenStack Block Storage (cinder). ['y', 'n']
-CONFIG_CINDER_INSTALL=y
+CONFIG_CINDER_INSTALL=n

# Specify 'y' to install OpenStack Shared File System (manila). ['y',
# 'n']
CONFIG_MANILA_INSTALL=n

# Specify 'y' to install OpenStack Compute (nova). ['y', 'n']
-CONFIG_NOVA_INSTALL=y
+CONFIG_NOVA_INSTALL=n

# Specify 'y' to install OpenStack Networking (neutron); otherwise,
# Compute Networking (nova) will be used. ['y', 'n']
-CONFIG_NEUTRON_INSTALL=y
+CONFIG_NEUTRON_INSTALL=n

# Specify 'y' to install OpenStack Dashboard (horizon). ['y', 'n']
CONFIG_HORIZON_INSTALL=y
@@ -37,7 +37,7 @@
CONFIG_SWIFT_INSTALL=y

# Specify 'y' to install OpenStack Metering (ceilometer). ['y', 'n']
-CONFIG_CEILOMETER_INSTALL=y
+CONFIG_CEILOMETER_INSTALL=n

# Specify 'y' to install OpenStack Orchestration (heat). ['y', 'n']
CONFIG_HEAT_INSTALL=n
@@ -59,12 +59,12 @@

# Specify 'y' to install Nagios to monitor OpenStack hosts. Nagios
# provides additional tools for monitoring the OpenStack environment.
# ['y', 'n']
-CONFIG_NAGIOS_INSTALL=y
+CONFIG_NAGIOS_INSTALL=n

# Comma-separated list of servers to be excluded from the
# installation. This is helpful if you are running Packstack a second
@@ -133,7 +133,7 @@

# Specify 'y' to enable the EPEL repository (Extra Packages for
# Enterprise Linux). ['y', 'n']
-CONFIG_USE_EPEL=n
+CONFIG_USE_EPEL=y

# Comma-separated list of URLs for any additional yum repositories,
# to use for installation.

Horizonをインストールしましたので、デプロイした後DashboardにアクセスするとSwiftが利用できます。今回のインストールではSwiftとKeystoneくらいしか入れていないので、他のコンポーネントに関するページを開くと色々エラーがでます。コマンドを使ってSwiftの操作も可能です。

RDO Packstackが構築したSwiftの構成だとループバックデバイスの小さいサイズのストレージが1つだけしか使えないので、データの冗長化を実現するために次のようにストレージを追加しました。

Swiftにストレージノードを追加する方法は弊社発行の「OpenStack構築手順書 Juno版」のp.87からの内容を参考にしました(ただしUbuntuでの手順なので、17-3のサービスをCentOS 7のサービスに置き換えています)。資料は以下からダウンロードできます。

http://enterprisecloud.jp/installguide-openstack/

8GBのディスクを二つ追加(大きいファイルの管理をしたければもっと大きいサイズを追加する)
/dev/sdb
/dev/sdc
起動してシステムにディスクが認識されていることを確認
dmesg |egrep ‘sdb|sdc’
16-5(p.88)
pvcreate /dev/sdb
pvcreate /dev/sdc
16-5(p.88)
vgcreate vg1 /dev/sdb
vgcreate vg2 /dev/sdc
16-5(p.88)
lvcreate -n /dev/vg1/xfs1 -l 100%FREE
lvcreate -n /dev/vg2/xfs2 -l 100%FREE
16-5(p.88)
mkfs.xfs /dev/vg1/xfs1
mkfs.xfs /dev/vg2/xfs2
16-5(p.88)
mkdir -p /srv/node/xfs1
mkdir -p /srv/node/xfs2
16-5(p.88)
/etc/fstabに書く
/dev/vg1/xfs1 /srv/node/xfs1 xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
/dev/vg2/xfs2 /srv/node/xfs2 xfs noatime,nodiratime,nobarrier,logbufs=8 0 2
16-5(p.88)
mount /srv/node/xfs1
mount /srv/node/xfs2
16-11(p.92)
chown -R swift:swift /srv/node
16-12(p.92)
mkdir -p /var/cache/swift
chown -R swift:swift /var/cache/swift
17-1 リングファイルの作成(p.93)
cd /etc/swift
swift-ring-builder account.builder create 10 2 1
swift-ring-builder account.builder add r1z1-172.17.14.239:6002/xfs1 100
swift-ring-builder account.builder add r1z2-172.17.14.239:6002/xfs2 100
swift-ring-builder account.builder
swift-ring-builder account.builder rebalance
swift-ring-builder container.builder create 10 2 1
swift-ring-builder container.builder add r1z1-172.17.14.239:6001/xfs1 100
swift-ring-builder container.builder add r1z2-172.17.14.239:6001/xfs2 100
swift-ring-builder container.builder
swift-ring-builder container.builder rebalance
swift-ring-builder object.builder create 10 2 1
swift-ring-builder object.builder add r1z1-172.17.14.239:6000/xfs1 100
swift-ring-builder object.builder add r1z2-172.17.14.239:6000/xfs2 100
swift-ring-builder object.builder
swift-ring-builder object.builder rebalance
17-3(p.94)
systemctl restart  memcached.service
systemctl restart  openstack-swift-proxy.service
17-5(p.95)
swift-init all start
SELinux関連の設定
restorecon -R /srv/node
restorecon -R /var/cache/swift
getsebool -a|grep swift
swift_can_network -> off  #これをオンにすれば良さそう
setsebool -P swift_can_network on
確認
swift-get-nodes -a /etc/swift/account.ring.gz admin
swift-get-nodes -a /etc/swift/container.ring.gz admin
swift-get-nodes -a /etc/swift/object.ring.gz admin

17-1で設定している172.17.14.239は、Swiftを動かしたいサーバーのIPアドレスに置き換えてください。 ちなみにこんな感じで動いています。普段はCLIで操作しています。

Snap 2015-10-16 10.34.54

環境構築はできたのにコンテナー(PCで言う所のフォルダーorディレクトリーに該当)を作ろうとしたらできなくて、なんでかなーと思ったらSELinuxだったというオチでした。一応手順にSELinuxの設定(無効化する手順じゃないですよ!)を追加したところ、上手く動くようになりました。

なんちゃってDropboxの出来上がりですね。