CephはLinux上で動作する分散ファイルシステム(Distributed File System)、ということでOpenStackのストレージに採用する目的で使い始めました。
まずは軽く基本インストール手順から記していきます。
選んだ理由
OpenStackに使うのに選んだ理由は色々ありますが…ほぼ採用を決定していますが、重要な運用面はこれから検証していく状況になっています。
リンク
本家
概要
構築
設定
運用
コマンド
ベンチマーク
環境
Debian Wheezyで、DFSですので台数が最低の3台としています。
データディレクトリは XFS : /data としています。
IPアドレスは 192.168.0.11, 12, 13 で、
テストですので ssh -p22 root@host で入れるようにしています。
作業はある1台を軸に行いますが、
仕上がる3台の内容に差異はない… と今のところ思います。
パッケージのインストール
全台にインストールします。CephのデータディレクトリのファイルフォーマットはXFSが良いとされていますが、ext4などでも利用できます。
1 2 3 4 5 6 7 8 9 10 11 |
# 鍵 apt-get install gnome-keyring wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | apt-key add - # ソースリスト echo deb http://ceph.com/debian/ $(lsb_release -sc) main | tee /etc/apt/sources.list.d/ceph.list apt-get update # インストール # - XFSを使う場合xfsprogsを入れておく apt-get install ceph xfsprogs |
設定
SSHパスワード無し鍵
インストールの過程で必要なため、root で互いを入れるようにしておきます。後始末はひと通りの動作確認が完了した後に各々の好みでお願いします。
1 2 3 4 5 6 7 8 |
# 1台目で作って cd ssh-keygen mv .ssh/id_rsa.pub .ssh/authorized_keys # 残りに転送 rsync -r .ssh/ root@192.168.0.12:.ssh/ rsync -r .ssh/ root@192.168.0.13:.ssh/ |
ceph.conf
メインの設定ファイルを作成します。/etc/ceph/ceph.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
[global] auth supported = cephx keyring = /etc/ceph/keyring.admin pid file = /var/run/ceph/ceph.pid debug ms = 0 [osd] osd data = /data/ceph/osd osd journal = /data/ceph/osd/journal osd journal size = 512 keyring = /etc/ceph/keyring.$name ; working with ext4 (sileht: disable because xfs is used) ;filestore xattr use omap = true ; solve rbd data corruption (sileht: disable by default in 0.48) filestore fiemap = false debug osd = 0 debug filestore = 0 [osd.11] host = 192.168.0.11 [osd.21] host = 192.168.0.12 [osd.31] host = 192.168.0.13 [mon] mon data = /data/ceph/mon [mon.1] host = 192.168.0.11 mon addr = 192.168.0.11:6789 [mon.2] host = 192.168.0.12 mon addr = 192.168.0.12:6789 [mon.3] host = 192.168.0.13 mon addr = 192.168.0.13:6789 [mds] debug mds = 0 [mds.1] host = 192.168.0.11 [mds.2] host = 192.168.0.12 [mds.3] host = 192.168.0.13 |
他2台に転送しておきます。
1 2 |
scp /etc/ceph/ceph.conf 192.168.0.12:/etc/ceph/ceph.conf scp /etc/ceph/ceph.conf 192.168.0.13:/etc/ceph/ceph.conf |
ディレクトリ作成
基本の /var/lib/ceph から移動する場合は構造丸ごとコピーしておきます。
1 |
cp -R /var/lib/ceph /data/ |
初期化と起動
データと鍵の作成
何台目で実行してもよいですが、実行したサーバとそれ以外で少し違う編集をします。これを実行すると、ceph.conf を見て全対象サーバにSSHログインして初期化してくれます。メッセージがたくさん出ますが、エラーは明らかにわかるので、エラーが出たら設定を見なおしたり、データディレクトリを綺麗にします。
もし色々試していて全てやり直したい時は、全Cephプロセスを止めて、データディレクトリを空にしてから再実行すればOKです。
1 2 3 4 5 6 7 8 9 10 11 |
mkcephfs -a -c /etc/ceph/ceph.conf -k /etc/ceph/keyring.admin # メッセージ temp dir is /tmp/mkcephfs.Hbj8IqkY9M preparing monmap in /tmp/mkcephfs.Hbj8IqkY9M/monmap ~snip~ # 実行したサーバの mds.N の行はメモっておく added entity mds.1 auth auth(auid = 18446744073709551615 key=AQA6pT1RoBD7JhAAxY7nH74IL3Tq7M38HMQ8BQ== with 0 caps) ~snip~ # 無事完了した最終行 placing client.admin keyring in /etc/ceph/keyring.admin |
これにより、データディレクトリに色々できて、鍵が作成されます。
鍵の修正
実行したサーバの鍵ファイルは [client.admin] だけになり、他2台は [mds.N] だけになります。1台目で実行したとすると、[mds.1] を追加してやる必要があり、そのkeyの値が初期化時にメモった key=*** with… の *** の部分になります。これを追加しないとmdsプロセスが落ちるので必須です。
/etc/ceph/keyring.admin (1台目)
1 2 |
[mds.1] key = AQA6pT1RoBD7JhAAxY7nH74IL3Tq7M38HMQ8BQ== |
2, 3台目には [client.admin] を追加してやります。内容は、1台目からそのままコピーしてきます。これにより、2, 3台目でも色々コマンドを実行できるようになります。
/etc/ceph/keyring.admin (2, 3台目)
1 2 |
[client.admin] key = AQA8pT1RcHOPMhAAXlL7dLMqdyGc0QNK2AX/HA== |
鍵の修正は起動前に完了させてください。
この辺を修正してからサービスをrestartすると、プロセスが重複したりするので注意してください。
この辺を修正してからサービスをrestartすると、プロセスが重複したりするので注意してください。
全サービス開始
-a (–allhosts) により、1サーバで実行したら全サーバで起動されます。
1 |
/etc/init.d/ceph -a start |
動作確認
ヘルスチェックをします。OKがでるまで数分かかることがあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
ceph -k /etc/ceph/keyring.admin -c /etc/ceph/ceph.conf health # パターン1 HEALTH_WARN 58 pgs peering; 58 pgs stuck inactive; 374 pgs stuck unclean; recovery 1/22 degraded (4.545%) # パターン2 HEALTH_WARN 120 pgs stuck unclean # パターン3 HEALTH_OK ceph -s # パターン1 health HEALTH_WARN 178 pgs peering; 178 pgs stuck inactive; 470 pgs stuck unclean; recovery 4/20 degraded (20.000%) monmap e1: 3 mons at {1=192.168.0.11:6789/0,2=192.168.0.12:6789/0,3=192.168.0.13:6789/0}, election epoch 8, quorum 0,1,2 1,2,3 osdmap e6: 3 osds: 3 up, 3 in pgmap v18: 768 pgs: 292 active, 298 active+clean, 178 peering; 1976 bytes data, 92579 MB used, 5428 GB / 5518 GB avail; 4/20 degraded (20.000%) mdsmap e6: 1/1/1 up {0=3=up:creating}, 1 up:standby # パターン2 health HEALTH_OK monmap e1: 3 mons at {1=192.168.0.11:6789/0,2=192.168.0.12:6789/0,3=192.168.0.13:6789/0}, election epoch 8, quorum 0,1,2 1,2,3 osdmap e6: 3 osds: 3 up, 3 in pgmap v62: 768 pgs: 768 active+clean; 8730 bytes data, 92582 MB used, 5428 GB / 5518 GB avail mdsmap e7: 1/1/1 up {0=3=up:active}, 1 up:standby |
これでCephの基本基盤が完成です。
次回以降は細かく分けて使い方を書いていきたいと思います。