MicroCephによる分散ストレージの構築:RAID 10さえも「お手上げ」な時の解決策

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

データストレージ:RAIDだけが唯一の「救い」ではなくなる時

ストレージは常にシステム管理者を悩ませる課題です。以前は、個々のサーバー上のデータを保護するためにRAIDを絶対的に信頼していました。しかし、現実はもっと過酷なことが多いものです。もしサーバーの電源が焼けたり、メインボードが故障したり、ネットワーク接続が切れたりすれば、たとえRAID 10を組んでいても、すべてのデータはそこに取り残されてしまいます。ハードウェアを交換するまでアクセスできなくなります。そこで、Distributed Storage(分散ストレージ)への移行が必要だと気づきました。

システム管理者の間では、Cephは自己修復(self-healing)機能とほぼ無限の拡張性を保証する名前として知られています。しかし、従来のCephのインストールは、多くの複雑な設定を伴う非常に「苦しい」経験となることが一般的でした。幸いなことに、CanonicalはMicroCephをリリースしました。これはCephのパワーをそのままに、軽量化されたバージョンであり、以前なら丸一日かかっていたストレージクラスターの構築をわずか数分で完了させることができます。

5分でクイックラボ構築

クリーンなUbuntu Server 22.04と、空のハードドライブ(例:/dev/sdb)がある場合は、以下のコマンドセットを試してその効果を確認してください:

# Snap経由でMicroCephをインストール
sudo snap install microceph

# クラスターの初期化(ブートストラップ)
sudo microceph cluster bootstrap

# ストレージシステムにハードドライブを追加
sudo microceph disk add /dev/sdb

# ステータスの確認
sudo microceph status

これだけで、基本的なCephノードが構築されました。ただし、システムに真の耐障害性を持たせるには、最低3つのノードが必要です。それでは、実際のデプロイ方法を詳しく見ていきましょう。

なぜ従来のCephではなくMicroCephを選ぶのか?

複雑さという壁

ピュアなCephのインストールには、MON、OSD、Manager、MDSといったコンポーネントを深く理解している必要があります。設定ファイルのわずかなミスやネットワークの遅延だけで、クラスター全体が即座にハングアップする可能性があります。中規模プロジェクトや初心者にとって、Cephは自転車にジェットエンジンを積むようなもので、あまりにも過剰で制御が困難です。

MicroCeph:シンプルかつ効果的

MicroCephはすべてを1つのSnapパッケージにカプセル化しています。ネットワーク構成からハードドライブの管理、データの同期まで自動化されています。私は以前、Proxmoxクラスターのバックエンドとして、低スペックのVPS 5ノードでMicroCephを動かしてみたことがあります。結果は非常に印象的でした。システムはメンテナンスをほとんど必要とせず、6ヶ月間安定して稼働しました。

高可用性な3ノードクラスターの構築

高可用性(High Availability)を実現するために、1Gbpsまたは10Gbpsの内部ネットワークで動作する少なくとも3台のUbuntuサーバーを用意することをお勧めします。

ステップ1:一斉インストール

全3ノード(Node1、Node2、Node3)でMicroCephをインストールします:

sudo snap install microceph

ステップ2:ノードを1つのクラスターに接続

Node1で、他のマシンが参加するためのトークンを生成します:

sudo microceph cluster add node2
sudo microceph cluster add node3

画面に長いトークン文字列が表示されます。各コードをコピーし、対応するノードでjoinコマンドを実行します:

# Node2で実行
sudo microceph cluster join [TOKEN_NODE2]

# Node3で実行
sudo microceph cluster join [TOKEN_NODE3]

ステップ3:ハードドライブ(OSD)の設定

重要な注意:Cephは物理ハードドライブ全体の制御を奪います。このドライブは完全に空で、パーティションが含まれていない必要があります。

# 各ノードで実行
sudo microceph disk add /dev/sdb --wipe

実戦から得た教訓:SSDやNVMeへの投資を惜しまないでください。Cephはレイテンシ(遅延)に非常に敏感です。古いHDDを使用すると、複数のマシンから同時にアクセスがあった際に読み書き速度が劇的に低下します。

システムの健康状態の監視

3ノードクラスターの設定が完了したら、すべてが「健全」に動作しているか定期的に確認する必要があります。最も重要なコマンドは以下の通りです:

sudo microceph.ceph status

ステータス行にhealth: HEALTH_OKと表示されれば安心です。HEALTH_WARNが表示された場合は、ノード間のネットワーク接続やハードドライブの状態をすぐに確認してください。

実際の残り容量を確認するには、次のコマンドを使用します:

sudo microceph.ceph df

トラブルを避けるための実践的なアドバイス

以下は、多くの実戦導入を経て得られた重要な注意点です:

  • 内部ネットワーク(バックエンドネットワーク):可能であれば10Gbpsネットワークを使用してください。専用回線(Direct ConnectやVPN)がない場合は、パブリックインターネット経由でクラスターを運用しないでください。遅延が原因でデータの同期が取れなくなる可能性があります。
  • 奇数ルールの適用:リーダーノードの選出(Quorum)時にスプリットブレイン(Split-brain)状態を避けるため、ノード数は常に奇数(3、5、7)に保ってください。
  • RAMリソース:各OSD(ストレージドライブ)には少なくとも2GBのRAMを割り当てる必要があります。クラスターに10TBのデータがある場合は、バックグラウンドプロセス用にシステムに約20GBの空きRAMがあることを確認してください。
  • 実用的なアプリケーション:ブロックデバイス(RBD)を作成して、Webサーバークラスターにマウントできます。1台のWebサーバーに障害が発生しても、別のサーバーがCephから同じハードドライブをマウントしてサービスを継続できます。

MicroCephは、高級なストレージテクノロジーを真に民主化しました。耐障害性のあるストレージシステムを構築するために専門家である必要はありません。ラボにある古いマシンを活用して、すぐにMicroCephクラスターを構築してみましょう。1台のサーバーの電源プラグを抜いても、ウェブサイト上のデータがスムーズに動作し続けるのを見るのは、本当に素晴らしい体験です!

Share: