夏休みの自由工作(3)
続々・Raspberry Pi3でCephを動かす
初回と二回目の続き
3. Ceph環境構築の続き
- 昨日バージョンを入れ替えた
ceph-deploy
の導入の続きを行う
3-1. モニタの構成の続き
Verを入れ替え
systemd
関連での問題は解消した- 新たにmonサービス起動で
ceph-deploy mon create-initial
実行時にエラー
- 新たにmonサービス起動で
ceph-deployの導入ドキュメントを参考に既存のインストールデータの削除を実施
無事にmonの起動を確認できた
3-2. トラブル ceph-node1脱落
ここで問題発生。ceph-node1が突然のシャットダウン
- 再起動するも
dpkg
周りの不整合が続く - 解消するも以降kernelが起動せず
- ハードウェアが原因なのかソフトウェアが原因なのかの切り分けもできず
- SDHDへイメージの焼き直しも複数回試したが解消しなかったため以降MONノードは2台で運用する
- 再起動するも
今のところraspai3本体側の問題ではないかと考えているが環境構築を優先する
- 後々kernel起動できるよう復活したらノード追加の手順を確認するために利用する
3-2-1. ノード減少対応
- ceph-nodde1をパージして再構成
$ ceph-deploy purge ceph-node1 $ ceph-deploy new ceph-node2 ceph-node3 $ ceph-deploy install ceph-node2 ceph-node3 ceph-node4 $ ceph-deploy --overwrite-conf mon create-initial
- OSD数も減るため
ceph.conf
に複製数を3から2に変更する設定を明示する
osd_pool_default_size = 2
3-3. OSDノード用領域の作成
ubuntu@ceph-node2:~$ sudo mkdir -p /data/OSD{01,04} ubuntu@ceph-node2:~$ ls /dev/sd?? /dev/sda1 /dev/sdb1 ubuntu@ceph-node2:~$ sudo mount -t auto -o noatime /dev/sda1 /data/OSD01 ubuntu@ceph-node2:~$ sudo mount -t auto -o noatime /dev/sdb1 /data/OSD04 ubuntu@ceph-node2:~$ df /data/OSD0* Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 119269620 183868 113004116 1% /data/OSD01 /dev/sdb1 119269620 60984 113127000 1% /data/OSD04 ubuntu@ceph-node2:~$ grep OSD /etc/mtab /dev/sda1 /data/OSD01 ext4 rw,noatime,data=ordered 0 0 /dev/sdb1 /data/OSD04 ext4 rw,noatime,data=ordered 0 0
- 同様の手順をceph-node3でもOSD02,OSD05として実施
3-4. OSD領域の登録
- 作成したデータ領域を
ceph-deploy osd prepare
で登録
ceph-deploy osd prepare ceph-node2:/data/OSD01 ceph-node2:/data/OSD04 ceph-node3:/data/OSD02 ceph-node3:/data/OSD05
- ここまでやって手順
3-3.
が間違っていたことに気付く。mkdirだけでよかった模様- マウントした各
/data/OSD*
をumount
した後に再度下記の登録を実施
- マウントした各
ceph-deploy osd prepare ceph-node2:/dev/sda1:/data/OSD01/jounal1 ceph-deploy osd prepare ceph-node2:/dev/sdb1:/data/OSD04/jounal4 ceph-deploy osd prepare ceph-node3:/dev/sda1:/data/OSD02/jounal2 ceph-deploy osd prepare ceph-node3:/dev/sdb1:/data/OSD05/jounal5
- activateの実行
ceph-deploy osd activate ceph-node2:/dev/sda1:/data/OSD01/jounal1 ceph-deploy osd activate ceph-node2:/dev/sdb1:/data/OSD04/jounal4 ceph-deploy osd activate ceph-node3:/dev/sda1:/data/OSD02/jounal2 ceph-deploy osd activate ceph-node3:/dev/sdb1:/data/OSD05/jounal5
3-5. adminノードの登録
- 今回の構成では
ceph-node4
該当
ceph-deploy admin ceph-node4 ceph-node2 ceph-node3
- ceph-node4でceph実行ユーザがkeyringを読めるようパーミッション付与
ubuntu@ceph-node4:~$ sudo chmod +r /etc/ceph/ceph.client.admin.keyring ubuntu@ceph-node4:~$ ll /etc/ceph/ceph.client.admin.keyring -rw-r--r-- 1 root root 63 Aug 17 20:10 /etc/ceph/ceph.client.admin.keyring
- ノード状態の確認ができているかを確認
ubuntu@ceph-node4:~$ ceph osd stat osdmap e21: 6 osds: 4 up, 4 in; 47 remapped pgs flags sortbitwise ubuntu@ceph-node4:~$ ceph health HEALTH_WARN 17 pgs degraded; 64 pgs stuck unclean; 17 pgs undersized; 1 mons down, quorum 1,2 ceph-node2,ceph-node3
- 登録中typoした関係で2OSDが死んでたりceph-node1のmon登録がちゃんと消えていなくて生き残ってたりと汚い
続く
- 会社の夏季休業が本日(8/17)のため夏休み中の完成は無理でした
- 平日は気力体力共にやれないと思うので土日で少しづつ進めます。8月中完成を目標
夏休みの自由工作(2)
続・Raspberry Pi3でCephを動かす
2. Ceph環境の構築
- 基本はありもののパッケージを利用する
- まずはオブジェクトストレージの検証を第一目標にする
- 手順についてはビットアイルのこちらの記事を多々参考にさせていただきました
2-1. 接続環境
- ズレてたらごめん
+----------------------------------+ |個人用PC(Win10),タブレット機器etc.| +-+--------------------------------+ | +-+-----------------------+ +----------- ... .. . |NECのブロードバンドルータ +--+ The Internet +-+---------------------+-+ +----------- ... .. . | | +-+----------------+ | |自宅サーバ(録画用)| | |Client兼Deployer | | |CentOS7 | | +------------------+ | +-----------------------++ |Netgear スイッチングハブ| +------------------------+ | +----------------------------------------+ +--+※Ceph-node1(MON.0) OSD.0,3(各USB 128GB)| | +----------------------------------------+ | | +----------------------------------------+ +--+※Ceph-node2(MON.1) OSD.1,4(各USB 128GB)| | +----------------------------------------+ | | +----------------------------------------+ +--+※Ceph-node3(MON.2) OSD.2,5(各USB 128GB)| | +----------------------------------------+ | | +--------------------+ +--+※Ceph-node4(MDS.0) | +--------------------+ ※4台共通で Raspberry Pi3/Ubuntu16.04
2-2. CephDeployerのインストール
- Clinetで実行
$ sudo yum install ceph-deploy
- バージョンは
1.5.25-1
でした
[ubuntu@comicsong ~]$ rpm -q ceph-deploy ceph-deploy-1.5.25-1.el7.noarch
- 各ceph-nodeに鍵配布してsshでパスなしでのログインを設定
ceph-deploy
を実施
[ubuntu@comicsong ~]$ ceph-deploy new ceph-node1 ceph-node2 ceph-node3 [ceph_deploy.conf][DEBUG ] found configuration file at: /home/ubuntu/.cephdeploy.conf [ceph_deploy.cli][INFO ] Invoked (1.5.25): /bin/ceph-deploy new ceph-node1 ceph-node2 ceph-node3 [ceph_deploy.new][DEBUG ] Creating new cluster named ceph [ceph_deploy.new][INFO ] making sure passwordless SSH succeeds [ceph-node1][DEBUG ] connected to host: comicsong.jp [ceph-node1][INFO ] Running command: ssh -CT -o BatchMode=yes ceph-node1 [ceph-node1][DEBUG ] connection detected need for sudo [ceph-node1][DEBUG ] connected to host: ceph-node1 [ceph-node1][DEBUG ] detect platform information from remote host [ceph-node1][DEBUG ] detect machine type [ceph-node1][DEBUG ] find the location of an executable [ceph-node1][INFO ] Running command: sudo /bin/ip link show [ceph-node1][INFO ] Running command: sudo /bin/ip addr show [ceph-node1][DEBUG ] IP addresses found: ['192.168.10.7'] [ceph_deploy.new][DEBUG ] Resolving host ceph-node1 [ceph_deploy.new][DEBUG ] Monitor ceph-node1 at 192.168.10.7 [ceph_deploy.new][INFO ] making sure passwordless SSH succeeds [ceph-node2][DEBUG ] connected to host: comicsong.jp [ceph-node2][INFO ] Running command: ssh -CT -o BatchMode=yes ceph-node2 [ceph-node2][DEBUG ] connection detected need for sudo [ceph-node2][DEBUG ] connected to host: ceph-node2 [ceph-node2][DEBUG ] detect platform information from remote host [ceph-node2][DEBUG ] detect machine type [ceph-node2][DEBUG ] find the location of an executable [ceph-node2][INFO ] Running command: sudo /bin/ip link show [ceph-node2][INFO ] Running command: sudo /bin/ip addr show [ceph-node2][DEBUG ] IP addresses found: ['192.168.10.8'] [ceph_deploy.new][DEBUG ] Resolving host ceph-node2 [ceph_deploy.new][DEBUG ] Monitor ceph-node2 at 192.168.10.8 [ceph_deploy.new][INFO ] making sure passwordless SSH succeeds [ceph-node3][DEBUG ] connected to host: comicsong.jp [ceph-node3][INFO ] Running command: ssh -CT -o BatchMode=yes ceph-node3 [ceph-node3][DEBUG ] connection detected need for sudo [ceph-node3][DEBUG ] connected to host: ceph-node3 [ceph-node3][DEBUG ] detect platform information from remote host [ceph-node3][DEBUG ] detect machine type [ceph-node3][DEBUG ] find the location of an executable [ceph-node3][INFO ] Running command: sudo /bin/ip link show [ceph-node3][INFO ] Running command: sudo /bin/ip addr show [ceph-node3][DEBUG ] IP addresses found: ['192.168.10.9'] [ceph_deploy.new][DEBUG ] Resolving host ceph-node3 [ceph_deploy.new][DEBUG ] Monitor ceph-node3 at 192.168.10.9 [ceph_deploy.new][DEBUG ] Monitor initial members are ['ceph-node1', 'ceph-node2', 'ceph-node3'] [ceph_deploy.new][DEBUG ] Monitor addrs are ['192.168.10.7', '192.168.10.8', '192.168.10.9'] [ceph_deploy.new][DEBUG ] Creating a random mon key... [ceph_deploy.new][DEBUG ] Writing monitor keyring to ceph.mon.keyring... [ceph_deploy.new][DEBUG ] Writing initial config to ceph.conf...
- 設定ファイルが作成された
- 何処に作られるのかなと探したがまさかの実行ディレクトリだった
[ubuntu@comicsong ~]$ pwd /home/ubuntu [ubuntu@comicsong ~]$ cat ceph.conf [global] fsid = 37164a6b-7187-4ba7-8b3f-4eccc58a9cf0 mon_initial_members = ceph-node1, ceph-node2, ceph-node3 mon_host = 192.168.10.7,192.168.10.8,192.168.10.9 auth_cluster_required = cephx auth_service_required = cephx auth_client_required = cephx filestore_xattr_use_omap = true
ceph-deploy install
を実施
$ ceph-deploy install ceph-node1 ceph-node2 ceph-node3 ceph-node4
ceph-deploy mon create-initial
を実施
$ ceph-deploy mon create-initial
- ここで問題発生。対象で
sudo initctl emit ceph-mon cluster=ceph id=ceph-node1
を実施する箇所でエラー出る - 実行される各nodeは
initctl
じゃなくてsystemd
だからね…
[ceph-node1][INFO ] Running command: sudo initctl emit ceph-mon cluster=ceph id=ceph-node1
解決策を調べていたがchangelogを見る限り
1.5.2x
台の後半からsystemdへの対応が多い最新の
1.5.34
を導入してnew
からやり直し
[ubuntu@comicsong ~]$ wget http://download.ceph.com/rpm/el7/noarch/ceph-deploy-1.5.34-0.noarch.rpm . . . `ceph-deploy-1.5.34-0.noarch.rpm' に保存中 100%[=========================================================================>] 288,604 95.8KB/s 時間 2.9s 2016-08-16 16:48:37 (95.8 KB/s) - `ceph-deploy-1.5.34-0.noarch.rpm' へ保存完了 [288604/288604] [ubuntu@comicsong ~]$ rpm --test -Uvh ceph-deploy-1.5.34-0.noarch.rpm 警告: ceph-deploy-1.5.34-0.noarch.rpm: ヘッダー V4 RSA/SHA1 Signature、鍵 ID 460f3994: NOKEY 準備しています... ################################# [100%] [ubuntu@comicsong ~]$ sudo rpm -Uvh ceph-deploy-1.5.34-0.noarch.rpm 警告: ceph-deploy-1.5.34-0.noarch.rpm: ヘッダー V4 RSA/SHA1 Signature、鍵 ID 460f3994: NOKEY 準備しています... ################################# [100%] 更新中 / インストール中... 1:ceph-deploy-1.5.34-0 ################################# [ 50%] 整理中 / 削除中... 2:ceph-deploy-1.5.25-1.el7 ################################# [100%]
- 旧バージョンで作成されたconfを削除しておく
rm ceph.conf
- newからやり直す
$ ceph-deploy new ceph-node1 ceph-node2 ceph-node3 $ ceph-deploy install ceph-node1 ceph-node2 ceph-node3 ceph-node4
- 続く
夏休みの自由工作(1)
Raspberry Pi3でCephを動かす
- 会社の仕事でCephをバックエンドストレージとして検証する必要が出た
- Cephについてはさわり程度しか扱ったことは無い
- 夏季休業中の間に最低限の知見は獲たい
- ただVMで立ち上げるだけでは味気ない
- いっそ変な環境でやろうぜと出来るかどうか調べる前にラズパイに手を出した
1. 準備編
- Cephのデータノードを置くサーバを準備する
1-1. 購入
当初は価格差と電源要求の緩さからRaspberry Pi2 Bを予定していた
- 10日に秋葉原でさまよったが秋月は当日丁度休業日
- 他の空いている店は軒並み2は扱っていないか品切れ
諦めかけたが色々落ち込む事があった13日に半ば自棄、半ばストレス解消でamazonで一式購入
Raspberry Pi3 B 4個
給電用のUSB電源アダプタ1個
- 電源ケーブル用途のUSBケーブル4本
ポートが足りないのでノンインテリなスイッチ
- 接続用LANケーブル4本
自宅Linux環境はSDHD読めないのでそのUSBリーダライタ
作業時用のUSB有線キーボードが無かったので有線キーボード
仮に出来上がってもその値段で買えるものから大きく劣るスペック。無駄遣いにも程がある
- でももっと給料がよければネットワークの勉強用にスイッチをインテリにしてたと思います
1-2. OSの準備
結果から言えば問題なく、懸念していたSDカードの相性問題も出なかった
- が、結果以外の経緯についてはそれなりに苦労したためメモする
前述のとおり、当初はラズパイ2の予定だった
- そのため事前に参考にしていた
ubuntu ラズパイ2
の検索で出てくるこの記事を参考に行った
- そのため事前に参考にしていた
記事内の手順を随時自分の環境+Pi3に置き換えてインストールを試した
公式のドキュメントでも探そうかと思ったら普通にパッケージが置いてあった
- この手順通りに作業し、冒頭でも書いた通り無事インストールが出来た
- 16.04を選択。またGUIは今回必要ないのでOptional系の手順は実施せず
ネットワークも深く考慮せずにDHCPでIP付与、自宅のネットワークと特に切り分けはしない
SDHDの書き込み速度が遅く、焼きながら並行してOS起動したPi3の初期設定などを行っていた
1-3. 配線と組み立て
全台仮接続を行い起動と疎通が確認が取れたので一旦全台起動のまま放置
この時点ではケースのみ到着していなかったため14日はここまで
日が明けて15日、早い時間にケースが届いたので装着しつつケーブリング
- 幸いケースが起動したままでの作業が可能な形式だったため起動したまま作業
- ケーブリングはいうに及ばず
最終的にはこんな外見で落ち着きました。初日に比べるとだいぶすっきり
準備編はここまで、次回はCephインストール編を予定しています