4×4 BOXで作る、Proxmoxクラスター3

さて、Proxmoxクラスター。ひとまず6台分追加して、クラスターにがんがんノードをぶち込みました。

途中、ネットワークの設定のMTUが漏れててCephのOSDがダウンしたり、クラスタ参加に失敗したりしましたが、だいたい自分のケアレスミスなので見直せば治ります。

Cephのノードも順調に追加し、さて、VMでも立ち上げるか、とOSイメージをアップしようとしたのですが。ふと気が付いてみるとクラスターのストレージとしてCephのファイルシステムがいません。個々のノードにもcephfsがいらっしゃいません。バカな。

適当なノードでシェルから/etc/pve/storage.cfgを開き、cephfsのストレージ設定をぶち込みます。

cephfs: cephfs
   monhost: pve1,pve2,pve3,pve4,pve5,pve6
   path: /mnt/pve/cephfs
   content vztmpl iso backup

本来自動で追加されるはずなんですが、いないものはしょうがないので、クラスターのストレージからCephFSの追加を行ってみます。

設定作業を行ったpve1だけエラー。そしてpve2以降にはcephfsが出現。どういうことだよ!w

pve-ceph-mountがマウントできないとか言い出しました。何言ってんだこいつ。/mnt/pve/を覗いてみると、マウント用のディレクトリはありますが、いかにも中身はなさそうです。試しにGUIでcephfsが見えているノード上で直接CephFSにファイルを置いてみましたが、当然見えてきません。マウントしてないんだから当たり前です。

インデントがタブじゃなかったってオチでした。corosyncが同期するときにcfgのフォーマット整形して同期してるっぽいですね。書き直して問題解消。

あとはほっとけばそのうち正常になります。いちいちデーモンリロードいらないのはいいですね。そのままCephRDBも作っておきます。こちらはCephで利用できるブロックストレージ。iSCSI居るので別にいらないんですが。

さあ、ここまで終わったらクラスターは一応完成です。簡単でしたね。OpenStackとは何だったのか。ていうかOpenStackはそのうちまたリベンジしますが。heatが難解すぎるんだよ、アレ…。

とりあえずVM用のVLANとストレージVLAN、そしてPublicのVLANをつなぐルータを作ります。もう慣れっこのVyOSですね。ストレージはiSCSIに用意しました。Cephでもよかったんですが、慣れたところでやっただけ。どうせ10GBも切り出せばオーバースペックですしね。

さくっとISOから起動して…あれ? 起動時にネットワーク一個しかつけられないんだ。と思ったら作ってもすぐに起動しないで止まっててくれました。ありがたい。

ネットワークをさくさくと追加し、えいやで起動。install imageしてストレージに突っ込んだらあとはいつものインターフェース作成とNAT定義。こまかいとこはのちのちやることにして、さっそくマイグレーションしましょう!

適当なホストからping撃ちっぱなしにして、ライブマイグレーションでホスト間移動。うん、パケット落ちないですね。いい感じ。OVSがいい仕事してるね。

お次はHA。とりあえずめんどくさいので、すべてのノードをHAのクラスタノードに指定して、HAグループとする。VyOSを起動したVMにHAをかけ、起動数1でHAグループに登録。おもむろにホストしたノードをダウンさせてみる。

さくっと別ノードでVyOSが起動した状態に遷移。ちょっとしたダウンタイムはあるものの、十分に有用。問題ないですね。ついでなんでCephのダッシュボードも入れておきました。

apt-get install ceph-manager-dashboard

を全ノードで実行したら、ceph mgr module enable dashboard。

ceph dashboard create-self-signed-certを実行してオレオレ証明かまし、ceph dashboard ac-user-create <user> -i <password_file> administartorでadministrator権限持ちのユーザーを作成。

https://<mgrの稼働アドレス>:8443/でcephのダッシュボード出現。楽。

もちろん管理画面なのでS3のファイルマネージャのような機能はありませんが、そもそもファイルにアクセスしたいなら/mnt/pve/から直接見ればいいわけで。ProxmoxでやれないCephの操作周りをGUIでやるための画面です。別にcephコマンド使えばいいだけなんですが。

ひとまず、動く仮想基盤としてはこれで完成。こまごまとした作業はまだ諸々残ってはいますし、ログだとかメトリクスだとかのフレームは組まないといけませんが、クラスタとしてはもうこれできちんと動作しています。あとはこの上にELKスタックを組むなり、ZabbixやPrometheus置いたり、Graylogでログ収集したりすればいい感じの基盤になっていきます。時系列のメトリクスはInfluxDBかGraphiteに投げれるようなので、Graphiteに投げましょうか。

もろもろの作業はまた後日に。