さて、一応構成のほうを。
基盤ノードとしては、下記を6台用意しました。一台あたりがせいぜい7万円くらいで用意できるかとは思いますが、半導体価格が上がってきているので今はもうちょっとかかるかもしれません。とはいえDRAM系ってそこまで高騰してる印象はないのですが。VGA刺さない(刺せない)ので、高騰のメインステージの連中のことは忘れておくことができます。とにかくDRAM価格に左右される感じですね。
うちのこれは、OpenStackで遊ぶのに用意して、少し遊んだあと放置されていた、本当に「余っていた」ものです。コレ作ったらESXiとXenが動いてる子達を窓から投げ捨てようともくろんでいます。世代も古いのでノードに組み込むのもなぁ、と。まあvCPU不足感を感じたら合流させるかもしれませんが。
CPU:Ryzen V1605B(4Core 8Thread)
Memory:32GB
Storage: M.2 Key 2242 128GB(SATA3) + SATA3 SSD 2.5inch 1TB
ネットワークとしては、パブリックに接続可能なルータ直下のネットワーク(タグなし)とVM間での通信やvMotionなどで使用するvlan、そしてストレージサーバが大量のNICをトランクしているストレージネットワーク用のVLANとなります。
本機は物理NIC二枚なので、パブリック用VLANに一枚、ストレージとVM間用に一枚を割り当てることにします。全部にタグつけてトランクしてもいいんですが、そのへんはお好みで。無線はFirmware入れようとしたら、pveのfirmwareとConflictしました。よって利用不可です。まあ無線なんかサーバで使うなって話ですけれど。
まずやることは、リポジトリの調整。GUIからできるのでご心配なく。
ホストのアップデート->Repositoriesを開き、pve-enterpriseのリポジトリを選んでDisableします。そして、追加を選んでno-subscriptionのリポジトリを追加。以上。
次に、インストールでNICに暫定的にIPを当てていますが、OpenvSwtichによるホスト間ネットワークを組みたいので、サクッとこのNICからIPとかを奪いたいと思います。まず、OpenvSwtitchが入ってないので、ホストでシェルを実行し、
apt-get update
apt-get upgrade
apt-get install openvswitch-switch
をそれぞれ実行。これでネットワークにOVSを作れるようになります。updateとかは単にaptのキャッシュを更新したいだけです、リポジトリ変更したから。カーネルとか上がってたらRebootしましょう。
まず、ジャンボフレームパケットさんが通れる環境なので、パケットサイズを引き上げます。ホスト->ネットワークに行き、物理NICのMTUを9000に。次いで、おもむろにvmbr0の標準インターフェースを削除します。いきなり反映されたりしませんし、失敗したらRevertできるようになっています。いやー、よく考えられていますね。
LinuxBridgeに消えて頂いたら、OVSBridgeを作ります。作成からですね。NICはパブリックVLANにつながる物理NICをバインド。こちらのMTUも9000にします。詳細設定のチェック入れればMTUの設定が出てきます。同様に、ストレージとVM間用のVLANを割り当てるOVSBridgeを二枚目のNICにバインドしておきます。
この時点ではIPも何も充てる必要はありません。IPを持つのはOVSIntPortです。
さて、二枚のBridgeが出来たら、OVSIntPortを作ります。NICのお化けみたいなサーバを使って作っていて、Bondingしまくる場合はOVSBondで作ってください。
さて、名前はVLANを通る場合VLANIDで決め打ちです。VLAN IDが1ならvlan1、100ならvlan100で。また、ここでIPも振ります。MTU9000も同時に。さらに、どのブリッジとバインドするかを指定します。IPの指定はCIDR指定でネットマスクも合わせて指定。VLANがタグVLANの場合はここでタグも指定です。うちのパブリックVLANがタグなしにしているのは、そもそもここでタグ指定すると、スイッチも合わせて変更しないといけないから、面倒だっただけです。基本タグVLANの人はタグに寄せるべきかとは思います。ポートベースとかいい加減いらないでしょ、と言いたいですが、世の中そういうわけにもいかないので残念です。
LACP周りはスイッチとの兼ね合いがあるので、適切に設定しないと苦労します。昔ながらのインフラ屋さんはこの辺も普通にできるので、そもそもネットワーク屋さんとはかなり仲がよかったりします。物理配線はめんどくさいのでネットワーク屋さんにやってほしいですが、結局その境目ってあやふや。パッチパネルも触るし、ケーブル追跡もするし。でも大工工事的なとこになってくると弱い。そんな感じ。ほんとうに上手なネットワーク屋さんのネットワークは見ていて本当に美しいです。自宅のネットワークも引き回してはいますが、とてもじゃないですけれど美しい、とは程遠いです。それをぱっぱと作れてしまうからすごいなぁ、と思いますね。
さて、ネットワークの論理をくみ上げたら、設定を適用しましょう。ミスがないか十分に確認を。
ネットワークが切り替わったら、再びウェブ設定画面に戻り、システム->ホスト名を。
どう見てもhostsです。で、これの上のほうにパブリックネットワークのアドレスがpveのノードのホスト名とバインドしています。別にパブリックネットワークでクラスタ組むならこれでもよいのですが、今回はノード間通信は別のVLANに振っているので、そちらのアドレスに書き換えます。とくにこの設定画面、ACLかけているわけではないので、ここ変えたからってこまりゃしません。逆に変えないとクラスタ組む時に困る。
やらなくてもいいっちゃいいんですが、証明書のIPがインストール時のIPのままなので、hosts書き換えたら/etc/pve/local/pve-ssl.pemを消して、pvecm updatecertsやっておくと一応こちらの証明書も新しく作成されます。Let’s Encryptのアカウント使って証明書とることもできますが、そもそもこの手のプライベートクラウドを外とつなげるとか普通やんないでしょうね。プロジェクトならなおさらですし。まあそういうとこは内部にCA局くらいあるのが普通なので、CA局にCSR送って払い出してもらいましょう。というかADサーバくらいおるやろ、そういうとこは。
うちもADはいますが、あんまり活用していないのでそろそろさようならしようかと…。というか物理サーバに乗っかってるので、これを機に仮想環境にADも移行したい。AzureとかのADはちょっと制約がいろいろあるので、オンプレミスでのAD構築のお勉強に使うにはちょっと向かない。というかお勉強するのにフルマネージド使ったら意味ないでしょ。MSDN買ってWindows Server立ててくださいね。海外でライセンス買えば多少安いです。OS配るのはアレなのはわかりますが、もちっとインフラ屋に優しいライセンスもほしいなぁとか思いつつも、VisualStudioも基本高いのでしょうがないのかな…とも思いなおし、でも個人用無償配布あるやんけ。とか思ったりもしますね。Preview Releaseでやるのもねぇ…。
閑話休題。ここまで終わったら、クラスタを作ります。Cephを作る人はこの辺でCephも作っておきましょう。うちは128GBがブート、1TBをCephに与えるので、ここでCephを作っておきました。この段階ではシングルノードなので、Unhealthyで怒られますが、モニタ、マネージャ、OSDを組み、CephFSをセットアップだけしておきます。Cephのクラスタネットワークはストレージネットワークに振りました。
とりあえずCeph使うときはシングルノードを組み終えておきましょう。一気に全ホスト並列でやらかしたらひどい目にあったので、Cephは一台ずつやりましょう。
クラスタはデータセンターから作ります。バックエンドネットワークの指定で、フェイルオーバーネットワークも指定できるので、せっかくだから全部振っておきます。どう使うのかさっぱりわからないですが。本当にフェイルオーバーするんでしょうか。
で、クラスタとCephの設定以外を残りのノードでも行います。めんどくさい…。基本的に作業は流れなので、やること自体はそれほど多くないのですが、6台も用意するんじゃなかった。3台でええやんけ。とかぶつくさ言いながら、でも余らせるのももったいないし使い切りに行きます。
いったん切りましょうかね。