Cephがスケールできる理由、単一障害点を排除する仕組み、負荷を減らす実装:Ceph/RADOS入門(4)(1/4 ページ)
Ceph/RADOS が採用しているCRUSH、Paxosといった、分散したデータから正しく応答するための仕組みを支えるアルゴリズムの概要を学びながら、挙動を見ていきます。
本連載では、オープンソースの分散オブジェクトストレージであるCeph/RADOSの技術詳細、実装について見ていきます。第1回ではCephの概要を、第2回ではCeph/RADOSを構成する要素を、第3回では実際にインストールして動作させるところまでを見てきました。
第4回である今回は、Ceph/RADOSの動作する仕組みについて、採用している分散アルゴリズムや単一障害点をなくす仕組み、メタデータ削減の方法などを見ていきます。
Ceph/RADOSのアーキテクチャ概要
Ceph/RADOSのアーキテクチャ概要はCeph Documentationの「ARCHITECTURE」のページにまとめられています。本稿ではそれをさらに要約して見ていきましょう。
Ceph/RADOSを理解する上で、いくつかの分散のアルゴリズムや、合意形成の仕組みなども確認しておきます。ここでは、第1〜3回で紹介した仕組みを思い出してから読み進めてみましょう。monitorやOSDといった各種コンポーネントについては第2回で言及しています。
CRUSHアルゴリズム(1)オブジェクト所在の確認
Ceph/RADOSには中央サーバーがなく、各クライアントがOSDとの間で直接オブジェクトをやりとりします。また、各OSDはオブジェクトの複製を別のノード上に作成し、高可用性を確保します。このときの各OSD間も必要な情報を直接やりとりします。
クライアントとOSDはオブジェクトの所在を計算する際にCRUSHアルゴリズムを使用します。CRUSHアルゴリズムは、各クライアント、各OSDが「Ceph Storage Clusterのトポロジを知っていること(持っている情報)」に依存しています。
「クラスターマップ」を構成する要素
Ceph Storage Clusterのトポロジは「クラスターマップ」で管理されます。クラスターマップはさらに下記5つのマップで構成されています。
- モニタマップ
- OSDマップ
- PGマップ
- CRUSHマップ
- MDSマップ
クラスターマップはmonitorが管理します。monitorはデータをkey/value型データストア(leveldb)に格納します。その実体は(デフォルトでは)各monitorの/var/lib/ceph/mon/配下にあります。
クライアントはOSDとやりとりする前にmonitorから最新のクラスターマップを取得する必要があります。この時、monitorが何らかのアクシデントで「不在」とならないように、monitorはクラスター構成を採っておきます。
Copyright © ITmedia, Inc. All Rights Reserved.