*

サーバ1台でのクラスタの構築 ~ Swiftによるオブジェクトストレージシステムの構築(2)

公開日: 最終更新日:2014/07/23  |  By  |  Object Storage, OpenStack, Swift

by yamagata 2013/1/21

(Swift関連の記事の一覧はこちらをご覧ください)

(1/23:追記 7. Swiftの起動  に rsync についての記述を追加しました)

ビットアイル総研の山縣です。

前回 Swift の概要について説明しましたが、今回から実際に Swift のシステムを構築していきたいと思います。
Swift は分散型のオブジェクトストレージシステムですので通常は複数のサーバで構築します。
しかしとりあえずお試しで触りたい場合には複数台のサーバを用意して設定していくのは面倒です。
そこで今回は一台のサーバに複数のサーバの機能を持たせるやり方で構築します。
Swift では SAIO (Swift All in One ) という一つのサーバに複数のサーバの機能を持たせクラスタを構築する方法がありますので今回こちらを利用します。
SAIO では一つのサーバに Proxyサーバを1台、Storage サーバ4台分を動かします。
SAIO の構築方法はSwift の開発者向けWebサイトに載っています。英語ですが、手順が一つづづ丁寧に載っていますのでこれを読みながら作業を進めれば問題なく構築ができると思います。
ただし SAIO は Swift の開発者が開発をするための環境という位置づけのようで、github からSwiftのソースコードを持ってきてそのソースをもとに構築することになっています。
これでも良いのですが、今回は将来的に複数サーバで構築する前準備と考えると、標準のパッケージを使った方がわかりやすいと思うので、そのように変更します。
またSAIO は手順が丁寧に書かれていますが、これに基づいて手で一つ一つ設定をしていくのは結構面倒です。
そこで今回は Chef のレシピを用意し chef-solo を実行することでこのあたりの作業を自動化しました。
少し前置きが長くなりましたが以下、実際に構築作業を進めていきたいと思います。

1. サーバ・OS の準備

OS は Ubuntu 12.04.1 LTS (precise)を使います。
また Swift は Ubuntu の CloudArchive を使って最新の folsom バージョン(1.7.4) のパッケージをインストールします。

 CloudArchive とは?
 CloudArchive は Ubuntu 12.04 に対して最新のOpenStack パッケージを提供するリポジトリです。12.04 に標準で提供されている OpenStack は essex という 2012年の春にリリースされたパッケージになります。CloudArchive で提供されているリポジトリを利用することで 2012年の秋にリリースされた最新の folsom 版をインストールすることが可能となります。

サーバはクラウドや仮想環境上のもので構いません。
メモリは1.5~2GB 用意してください。
HDDは OS インストール用(sda 12GB)とSwiftのストレージ用(sdb 4GB)に2本あると想定します。
OSのインストールは最小構成で問題ありません。
インターネットに接続できるように設定してください。

2. ストレージ用ディスクの設定

ストレージ用ディスクは fdisk 等を使い全体を一つのパーティション(sdb1)として設定してください。
また以下のように XFS でファイルシステムを構築してください。

> apt-get install xfsprogs
> mkfs.xfs -i size=1024 /dev/sdb1

次に /etc/fstab に以下の行を追加してください。

/dev/sdb1       /mnt/sdb1       xfs noatime,nodiratime,nobarrier,logbufs=8 0 0

/mnt/sdb1 ディレクトリを作成しマウントします。

> mkdir /mnt/sdb1
> mount /mnt/sdb1
> mount


/dev/sdb1 on /mnt/sdb1 type xfs (rw,noatime,nodiratime,nobarrier,logbufs=8)

以上のように mount されていることが確認できればでストレージ用ディスクの準備は終了です。

3. Chef のインストール

次 に chef-solo をインストールします。Opscode 社のドキュメント を参考にインストールします。
インストールの詳細については Opscode社のドキュメントを参照してください。
以下の作業は root または sudo で root 権限で実行してください。
Opscode社のリポジトリを apt に追加します。

> echo “deb http://apt.opscode.com/ `lsb_release -cs`-0.10 main” | sudo tee /etc/apt/sources.list.d/opscode.list
deb http://apt.opscode.com/ precise-0.10 main

gpg の鍵を登録します。
> mkdir -p /etc/apt/trusted.gpg.d
> gpg –keyserver keys.gnupg.net –recv-keys 83EF826A
> gpg –export packages@opscode.com | sudo tee /etc/apt/trusted.gpg.d/opscode-keyring.gpg > /dev/null

apt の更新を行い Chef をインストールします。

> apt-get update
> apt-get install opscode-keyring
> apt-get install chef

※ URL for Chef Server という入力画面が表示されますが chef server は使いませんので何も入力せず “了解” ボタンを押してください。

4. Chef cookbook の取得

Chef の準備ができたので cookbook を取得します。
git をインストールします。

> apt-get install git

github から cookbook をダウンロードします。

> git clone -b release01 git://github.com/yoyama/chef-swift-recipes.git

ディレクトリ chef-swift-recipes/ 以下に chef のファイル類がダウンロードされます。
>ls chef-swift-recipes
README.md  cookbooks  node.json  solo.rb

5. レシピの修正

取得した cookbook は環境に合わせて修正が必要です。
solo.rb の cookbook_path を cookbook を clone した場所に合わせて修正してください。

>cd chef-swift-recipes
>vi solo.rb

cookbook_path “/home/yoyama/chef-swift-recipes/cookbooks”

次に cookbooks/saio_pkg/attributes/default.rb を開いてください。

> vi cookbooks/saio_pkg/attributes/default.rb

default[:swift][:hash_path_suffix]= “TestTestTest”

の値を適当なものに変更してください。

6. Chef の実行

前準備が終わりましたので、いよいよ Chef を実行してインストールをはじめます。
以下のように実行してください。

>chef-solo -c solo.rb -j node.json 2>&1 | tee /tmp/chef.log

インストールは環境に依存すると思いますが数分程度かかると思います。
終了後、/tmp/chef.log を見て特にエラーが無いようであればインストールは成功です。
なお chef のバージョンによって以下のような警告がたくさん出る場合があります。

[Fri, 18 Jan 2013 15:25:14 +0900] WARN: Cloning resource attributes
for package[apt-file] from prior resource (CHEF-3694)

実行そのものには影響ないようなので無視してください。

7. Swift の起動

インストールに問題が無いようであれば swift を起動します。

まず rsync を起動します。

>/etc/init.d/rsync start

次に swift のプロセスを起動します。

> /usr/bin/swift-init all start

Starting container-updater…(/etc/swift/container-server/1.conf)

のような出力がたくさん出ます。なお

Unable to locate config for object-expirer

の表示は問題ありませんので無視してください。

8. 動作確認

それではswift CLI (/usr/bin/swift) を使って Swift にアクセスし、動作確認をします。

> swift -A http://localhost:8080/auth/v1.0 -U test:tester -K testing stat

Account: AUTH_test
Containers: 0
   Objects: 0
     Bytes: 0
Accept-Ranges: bytes
X-Timestamp: 1358479437.89893

上記のような感じの結果が返ってくれば OK です。
次にファイルをアップロードします。
Chef の cookbooks のファイルを一つアップロードしてみます。

> swift -A http://localhost:8080/auth/v1.0 -U test:tester -K testing upload folder1 solo.rb
solo.rb

folder1 というコンテナの配下に solo.rb をアップロードしました。

(コンテナ folder1 は自動的に作成されます。)
本当にアップロードされたか確認してみましょう。まずコンテナの一覧を表示します。

> swift -A http://localhost:8080/auth/v1.0 -U test:tester -K testing list
folder1

コンテナ folder1 が存在していることがわかります。
次に folder1 下のオブジェクトの一覧を表示します。

> swift -A http://localhost:8080/auth/v1.0 -U test:tester -K testing list folder1
solo.rb

solo.rb ファイルがあります。
最後に solo.rb を /tmp/solo.rb にダウンロードします。

> swift -A http://localhost:8080/auth/v1.0 -U test:tester -K testing download folder1 –output /tmp/solo.rb solo.rb
solo.rb [headers 0.021s, total 0.021s, 0.004s MB/s]

/tmp/solo.rb が存在していることを確認してください。
以上、Swift クラスタを構築し、実際にファイルのアップロードからダウンロードまでを行ってみました。
これで Swift を試す環境ができましたので次回以降この環境を使って Swift の機能等をみていきたいと思います。
次回は swift CLI についてもう少し詳細に見ていく予定です。

関連記事

no image

Ceilometer によるメータリング機能の導入 ~ Swiftによるオブジェクトストレージシステムの構築(11)

by You Yamagata 2013.10.18 (Swift関連の記事の一覧は 

記事を読む

ODT2015logo

OpenStack Days Tokyo 2015

来る2月3日,4日にはOpenStack Days Tokyo 2015が開催されます。 日本国内

記事を読む

Rally-benchmark-results-in-both-tabular-and-graphic-displays

コマンドラインからRallyを使いこなす

RallyはOpenStackのベンチマークツールです。概要については以前書いた記事で紹介しています

記事を読む

no image

Pythonライブラリによる Swift の操作 ~ Swiftによるオブジェクトストレージシステムの構築(6)

by Yamagata 2013.03.14(Swift関連の記事の一覧はこちらをご覧ください)前回

記事を読む

image

OpenStack Summit Portland Quick レポート

by hasegawa 2013.04.172013年4月15日〜18日にかけて米国のオレゴン州ポー

記事を読む

no image

Keystone認証の利用 ~ Swiftによるオブジェクトストレージシステムの構築(9)

by You Yamagata 2013.05.13 (Last updated 2013

記事を読む

IMG_0870

OpenStack Summit San Diegoに参加しています

by hasegawa 2012/10/16ビットアイル総研の長谷川です。10月15日(月)〜18日

記事を読む

01.all

CentOS7 RDO Juno with Ceph

ご無沙汰しています。 先日のブログではCentOS7/RDOで OpenStack Juno環境を

記事を読む

docker_all

OpenStack Summit in Paris (Day3)

by Ikuo Kumagai (@kumagai19o) 少し遅れましたがOpenStack S

記事を読む

no image

LVM上にインスタンスを作成する

OpenStack 担当 石川です。 実際に自分が使うか使わないかは置いておき、気になったオプ

記事を読む

no image

ビットアイル総合研究所は、クラウド技術に関する調査&研究を通して、社会と会社に寄与していくことを目的に、ビットアイル・エクイニクスの企業内研究所として2011年8月に設立されました。

openstack-figure1-2x
COHO DataStream のCinder連携

OpenStack Cinder のストレージバックエンドとしてはCe

blog-ocata
Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプ

newton
Juju Manual Cloud で OpenStack 環境構築

本当にご無沙汰しております。 この投稿はOpenStack Adve

top
HACK! THE Juju/MAAS

6/8~6/10まで幕張メッセで開催されたInterop 2016。皆

dpdk
OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様

→もっと見る

PAGE TOP ↑