Ceph
目次
Cephとは
分散ファイルシステム
必要機器
3台以上のPCが必要。
計画(予定)
第一段階でEeePC HDD500G×3台で構築してみる。
第二段階でBeagleBone Black HDD1.5T×4台の追加。
第三段階でRaspberryPi2B HDD2T×2台の追加。
Host名 | IPアドレス | OSD容量 | OS | 機器 |
---|---|---|---|---|
eeepc1 | 192.168.100.1 | 500G | Ubuntu14.04.2 | EeePC 1000H |
eeepc2 | 192.168.100.2 | 500G | Ubuntu14.04.2 | EeePC 1000H |
eeepc3 | 192.168.100.3 | 500G | Ubuntu14.04.2 | EeePC 1000H |
bbb1 | 192.168.100.11 | 1.5T | Ubuntu14.04.2 | BeagleBone Black |
bbb2 | 192.168.100.12 | 1.5T | Ubuntu14.04.2 | BeagleBone Black |
bbb3 | 192.168.100.13 | 1.5T | Ubuntu14.04.2 | BeagleBone Black |
bbb4 | 192.168.100.14 | 1.5T | Ubuntu14.04.2 | BeagleBone Black |
pi1 | 192.168.100.21 | 2T | Raspbian | RaspberryPi2B |
pi2 | 192.168.100.22 | 2T | Raspbian | RaspberryPi2B |
小型ボードだけで構築予定だったが、諸事情によりノートPC 3台で基本的なクラスターを作成し段階的に増やす方向にしました。
当初は、RaspberryPi2BのOSとしてOSMCを計画していたが、実験の結果OSDがDownする事が有り安定していなので急遽Raspbianに変更した。
EeePC 1000H の仕様
OS:Ubuntu 14.04.2 LTS CPU:Atom N270 RAM:2G HDD:500G LAN:100M USB:増設LAN Giga (実測値253Mbps) USB3.0の時は実測892Mbpsだそうです。
BeagleBone Black のPCの仕様
OS:Ubuntu 14.04.2 LTS CPU:ARM RAM:512M LAN:100M USB:増設HDD 1.5T
BeagleBone Black はメモリーが少ないので、最初から入っているApaceh2を削除します。
apt-get --purge remove apache2
Raspberry Pi2B の仕様
OS:Raspbian CPU:ARM RAM:1G LAN:100M USB:増設HDD 2T
前準備
IPアドレスの設定
Hostsの設定
rootログインの設定
EeePCにセットアップしたUbuntuにはssh接続出来なかったのでsshをインストールした。
sudo su apt-get install ssh
rootでいきなりログイン出来る様に設定してしまう。
rootのパスワードを設定します。これでいきなりsshでrootでログイン出来る様になります。
sudo su passwd root 設定するパスワードを2回入力
OSMCは、これでいきなりログイン出来る様になりました。
Ubuntuは頑固でrootのパスワードを設定してもsshでいきなりrootログインはさせてくれなかった。
そこで、設定を変更しました。
sudo su nano /etc/ssh/sshd_config
次の行を見つけ出し変更する。
PermitRootLogin without-password 変更前 ↓ PermitRootLogin yes 変更後
変更後、sshを再起動する。
service ssh restart
SSHパスワード無し鍵の設定
インストール中に何度もパスワードを入力するのは大変、なのでrootで互いに入れるようにしておきます。
1台目で鍵を作って、それを配ります。
cd ~ ssh-keygen ssh-copy-id root@eeepc1 ssh-copy-id root@eeepc2 ssh-copy-id root@eeepc3
配る為に、最初はパスワードを聞いて来ます。今回だけ頑張って入力してください。
Cephのセットアップ
1台目のPCでインストール指示をします
まず、ceph-deployをインストールします。
apt-get install ceph-deploy
次にセットアップデータがカレントに出来る仕様の様なので適当なフォルダーを作ってその中で作業を行う。
cd mkdir ceph cd ceph ceph-deploy new eeepc1 eeepc2 eeepc3 ceph-deploy install eeepc1 eeepc2 eeepc3
これで、各ノードにcephがインストールされます。
monの設置
monを各ノードに設置します。
ceph-deploy mon create-initial
これでmonが3台のPCにインストール出来たはずだ。monの状態を確認してみよう。
ceph mon stat
osdの設置(HDD提供開始)
提供予定のHDDを予め/mnt/sda1にマウントしておきます。
osdを設定します。
ceph-deploy osd prepare eeepc1:/mnt/sda1 ceph-deploy osd prepare eeepc2:/mnt/sda1 ceph-deploy osd prepare eeepc3:/mnt/sda1 ceph-deploy osd activate eeepc1:/mnt/sda1 ceph-deploy osd activate eeepc2:/mnt/sda1 ceph-deploy osd activate eeepc3:/mnt/sda1
これでosdの設定が出来ました。osdの状態を確認してみましょう。
ceph osd stat
mdsの設置
mdsを設置します。
ceph-deploy mds create eeepc1 eeepc2 eeepc3
これでmdsの設置が出来ました。mdsの状態を確認してみましょう。
ceph mds stat
最後に全体の状態の確認
mon,osd,mdsの設定が終わったら、全体の確認をします。
ceph health
Cephのコマンドまとめ
コマンド名 | 意味 |
---|---|
ceph health | 全体の状態を見る |
ceph health detail | 全体の状態を詳しく見る |
ceph osd stat | osdの状態を見る |
ceph osd tree | osdの状態を詳しく見る |
ceph mon stat | monの状態を詳しく見る |
ceph mds stat | mdsの状態を詳しく見る |
ceph df | ディスク・ドライブの使用量を表示する |
ceph-deployのコマンドまとめ
調査中の為、暫くお待ちください。
CephFSでのマウント
マウント用のフォルダーを作成します。
mkdir /mnt/cluster
CephFSで使うキーを/etc/ceph/admin.keyに保管します。
ceph auth get-key client.admin > /etc/ceph/admin.key
マウントします。monを提供しているノードならどこでもいいらしい。今回はpi1に接続。
mount -t ceph pi1:6789:/ /mnt/cluster/ -o name=admin,secretfile=/etc/ceph/admin.key
マウント出来ているか確認します。
df -h
cronでマウント
レプリケーション数を変更するには
標準状態でインストールすると、レプリケーションは3になっていた。
つまり、三重化し耐障害性を高めている。ちょっとやりすぎかも。
そこで、二重化に変更してみた。
ceph osd pool set data size 2 ceph osd pool set metadata size 2 ceph osd pool set rbd size 2
このコマンドで即座に、変更される様だ。ceph -wは、もう使わない?
今回は、poolデータ三種類とも二重化に変更したが、rdbだけ三重化とか出来る。
レプリケーション数は多い方が安全だが、多いと書き込み量が増えて速度が落ちる様だ。
2~3ぐらいでいいでしょう。3から2に変更した事により1.5倍ぐらい速度アップした感じです。
Raspberry Pi での注意事項
OSMCをOSとして使う場合
OSMCの場合、カーネルに問題が有り、CephFSマウントは出来ませんでした。
RaspbianをOSとして使う場合
Raspbian標準のcephパッケージはかなり古いそうです。以下を実行し最新の状態にするとよい。
apt-get update apt-get upgrade wget --no-check-certificate -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add - echo deb http://ceph.com/debian-firefly/ wheezy main | sudo tee /etc/apt/sources.list.d/ceph.list
sources.listの編集
nano /etc/apt/sources.list
内容を次の様に変更します。
deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi 変更前 ↓ deb http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi 変更後
更に
apt-get update apt-get upgrade apt-get dist-upgrade
Raspbianの場合、カーネルに問題が有りCephFSマウントは出来ませんでした。
カーネルをコンパイルする事により解決するそうですが、コンパイルには12時間ほどかかるらしい。
時計の時刻のズレ
内蔵クロックが無いので起動時に、タイムサーバで調整する様だが、Cephのルールが厳しすぎる。
0.05秒以上のズレはダメみたいです。monサーバ同士で調整し最終的には、ピッタリ一致するようですが、調整に凄く時間がかかります。家の場合、最大5秒のズレがあった様で、調整には30分程度かかりました。
root@arm1:~# ceph health detail HEALTH_WARN clock skew detected on mon.osmc2, mon.osmc3 mon.osmc2 addr 192.168.100.102:6789/0 clock skew 2.42326s > max 0.05s (latency 0.0367512s) mon.osmc3 addr 192.168.100.103:6789/0 clock skew 0.16542s > max 0.05s (latency 0.103259s)
こうならない為にもNTPはインストールしておこう。
apt-get install ntp