Proxmox VE 6.1でCephをインストール

Proxmox VE 6.1でCephをインストールしたメモ

最初に

前記事からの続きになりますので
PC3台ともにProxmox VE 6.1-5でクラスタ構築済です

Cephについて

Proxmoxで共有ストレージを使う場合はESXi同様にiSCSIやNFSに対応
他にもCIFSやGlusterFS・Cephにも対応していますが
おすすめされているのはZFS over iSCSIかCeph/RBDになります

今回はProxmoxのWEBGUIにも組み込まれているCeph/RBDを試すことにしました

Ceph自体は分散ストレージシステムになっていて
VMwareでいうvSAN的なシステムが組める為
VMのライブマイグレーション対応はもちろんのこと
単一障害点を排除できるのが最大のメリットになります

デメリットはvSAN同様にシステム要件になります
Cephをまともに使おうとするとよく言われるのは
PC3台以上・CPUはそこそこで大丈夫ですがメモリは1GB+1TBごとに1GB
HDD/SSDはOSとは別にCeph専用ディスクを6本以上
ネットワークはCeph専用に10GbE(ケーブルは光ファイバー)
こんな感じです

メモリは仮にストレージ容量が8TBの場合はCephだけで9GBの空きが必要
iSCSIやNFSだとストレージサーバ上のメモリでカバーできますがCephの場合は
Proxmox機のメモリを消費するのでVM割り当て分+Ceph分+Proxmox分(1GB)が必要です

HDD/SSDについてはCephではOSD(Object Storage Device)と呼ばれていて
基本的には1OSD=1HDD or SSDです
Ceph動作自体は1ノードに1OSD(全体で3OSD)があれば動作可能ですが
ノード内ではRAID0のように分散書き込みで処理されるので
速度を求めるなら各ノードに本数を確保するのは大事です

読み込み速度はVMが動作しているノード内にデータがあれば
ネットワークを使わず読み込めるのもあって
ほぼ内蔵デバイスと同様の速度になりそこまで問題にはなりませんが
書き込み速度は都度複数PCへの書き込み処理を行うだけでも待ち時間が発生し
更には同期ミスを防ぐために全ての書き込み処理を同期書き込みで処理している関係で
データは安全なのですが速度はかなり厳しい傾向にあります

各OSDにはDBやWALといった領域を設定可能で
DBはメタデータ格納領域で初期値ではOSD容量の10%を消費
WALはjournalデータや書き込みログ領域で初期値はOSD容量の1%を消費
DB/WALのデバイスを個別に設定しなければ各OSDの中から確保されます

DB/WALは全体のパフォーマンスに影響しやすい部分ということで
OSDがHDDであってもDB/WALだけはSSDを指定できるようにして
高速化と大容量のバランスを確保できるようになっています

WALの注意点としてはデータの整合性を確保する為に
journalデータは書き込みバッファを活用せず同期書き込み(要はfsync)で処理される関係で
WALに割り当てるSSDはスーパーキャパシタ搭載のサーバ向けSSDのように
fsyncコマンドをスルーまたはキャッシュ無効化ができないと大幅に速度が低下します
よって一般向けのSSDを使ってもSSD本来の性能がフルに発揮できないのは仕様となります

ネットワークについてはGbEだと帯域がボトルネックになるのは他のNAS同様ですが
1:1通信をする場合と違って他の2台へ同時に通信した場合に
実質的な帯域が半分まで落ちるのを考慮する必要があります

そしてCephネットワークにおいて帯域と同様に重要なのはレイテンシになります
レイテンシへの影響を考えるとProxmox管理用やVM用とは別の専用NIC割り当ては必須で
10GbEでも銅ケーブルはレイテンシが高いので光ファイバーを使ったSFP+が推奨されてます

今回の目的について

Ceph自体が結構なスペックを要求するのもあってか
ネットで調べてもサーバ向けの10000rpmを超えるHDD8台×ノード5台とか
サーバ向けSSDを贅沢に使った構成をしてたりするハイレベルな速度計測結果ばっかりで
一般レベルで普通に組めばどの程度の速度なのかが不明だった為
今回はProxmox検証ついでに試してみることにしました

ハードウェア構成

pve01
i7-9700・メモリ64GB・40GB SSD(OSで使用)・2NIC(GbE)

pve02
i7-9700・メモリ64GB・256GB SSD(OSで使用)・2NIC(GbE)

pve03
Pentium G4620・メモリ32GB・256GB SSD(OSで使用)・2NIC(GbE)

Ceph用のストレージは以下5台を各サーバに搭載
HDD ST1000DM010 1TB 7200rpm 3台
HDD WD40EZRZ 4TB 5400rpm 1台
SSD SATA Crucial MX500 500GB 1台

pve01

pve02

pve03

HDDは全て空の状態にしているのでGPTも「いいえ」になっている
GPTなどパーティションなどを全て削除したい場合はCUIで「sgdisk -Z /dev/sda」を実行

192.168.0.xがProxmox管理用ネットワーク
192.168.1.xがCeph用ネットワーク

各サーバの状況は
pve01が192.168.0.11/192.168.1.11
pve02が192.168.0.12/192.168.1.12
pve03が192.168.0.13/192.168.1.13

Cephをインストール

WEBGUIにCephメニューはありますがまだCephはインストールされていないので
pve01から順番にCephをインストールしていきます

左メニューでpve01を選択してからCephメニューを選択すると
Cephをインストールするかどうか聞かれるので
「Install Ceph-nautilus」ボタンを選択

Setup画面が表示されるので詳細設定にチェックを入れてから
「Start installation」を選択

Setup画面内にCUIが表示されるので
Do you want to continue?が表示されるまで待機
入力待ちになればyを入力してエンターキー

installed ceph nautilus successfullyと表示されて
右下の「次へ」ボタンが選択可能になれば無事完了なので
「次へ」ボタンを選択します

Cephクラスタの設定を行います
Public NetworkでCephで使用するネットワークを指定
Cluster NetworkでProxmoxクラスタのネットワークを指定します
同一NICを使用する場合はPublic NetworkだけでOK
Number of replicasはノード何台までデータをレプリカ(複製)するかどうかで
Minimum replicasはストレージ機能を動作させる為の最低ノード台数です

ノード3台構成でNumber of replicas:3、Minimum replicas:2で設定すると
3台全てが同じデータを保持しつつ2台構成(1台ダウン)でも同じように動作可能
2台ダウンして1台構成になるとデータ保護のためCephのストレージ機能が停止しますが
データ自体は残っているので2台構成に戻ると再び機能します

各ノードだけを見るとRAID0的な動作なのでOSDが1台でも故障するとアウトですが
他のノードにも同じデータがあるので全体としてはデータ復旧可能という仕組み

構成台数とNumber of replicasを同じ数にしておくと
全てのノードが同じデータを保持することになるので
VMをマイグレーションしても高速で処理できます

今回の設定値はこちら

最後に完了画面が表示されるので「完了」ボタンで閉じます

Ceph画面に戻るとCephの状態が確認できるようになります
右下のサービスにpve01が登録されていればOK
状態がHEALTH_WARNになっているのはサマリー記載の通り
Ceph稼働には最低でも3OSDが必要なのにまだOSDが1台も登録されていないからで
現時点では問題ありません

同様にpve02、pve03もインストールしていきます

2台目以降のSetup設定画面では「Configuration already initialized」と出て
設定が選択できませんが1台目で既に設定したのでこれで問題ありません
そのまま「次へ」を選択してください

モニターとマネージャー登録

pve01/pve02/pve03の全てにCephのインストールが完了したら
次は各ノードをモニター・マネージャー登録をします

モニター

モニターは最低3台の登録が必要なので3台構成の場合は全て登録することになります

pve01の画面からCeph -> モニターを選択
pve01は既に登録されているのでpve02とpve03を登録していきます(pve01の画面のまま)
登録はモニター欄の「作成」ボタンを選択

ホスト名をプルダウンで選択できるのでpve02を選択

正常に登録できればDone!という表示が出ます

そしてモニター画面に戻るとノードが追加されているのが確認できます

同様にpve03も登録します
状態も全てrunningでアドレスもCeph用の192.168.1.xが表示されているのを確認します

Ceph状態確認画面でも右にあるモニターに3ノード登録されています

マネージャー

マネージャーは最低1台が登録されていれば動作しますのでこのままでも使用できますが
登録されているノードがダウンするとCephステータスなど一部機能が使えなくなるので
こちらも3台体制にしておきます

pve01の画面からCeph -> モニターを選択
こちらもpve01の画面からpve02とpve03を登録していきます
Managerの欄にある「作成」ボタンを選択します

モニター同様にホスト名をプルダウンでpve02を選択して「作成」ボタンを選択するのみ

今回も問題なければDone!表示になります

3台全てが登録できればこのような状態になります
Managerはモニターと違って常に1台だけアクティブになるので
pve01がactiveでpve02とpve03がStandby
アドレスはモニター同様にCeph用ネットワークになっていればOK

Ceph状態確認画面でもManagersに3ノード表示されます

最後に

これでCephのベースは完成したので
次はOSDを追加していきます

コメント

  1. kota より:

    読んでますよ!
    Cephの要件とreplica数のとこ大変参考になります。