Ceph基本情報と構築手順

CephはLinux上で動作する分散ファイルシステム(Distributed File System)、ということでOpenStackのストレージに採用する目的で使い始めました。

まずは軽く基本インストール手順から記していきます。



選んだ理由

OpenStackに使うのに選んだ理由は色々ありますが…

  • Cephの過去Verは不安定と言われていたが、最近はわりと落ち着いたらしい
  • SwiftをGlanceだけに使うにはSwiftは扱いが重たい
  • Cinderに高価な共有ストレージを使うつもりはない
  • なんとCephはGlanceでもCinderでも使えるではないか
  • Cephは冗長性/拡張性に優れているらしいのでHDFS経験者として好ましい

  • ほぼ採用を決定していますが、重要な運用面はこれから検証していく状況になっています。


    リンク

    本家

  • Ceph本家
  • RELEASE NOTES

  • 概要

  • ceph: distributed storage for cloud infrastructure

  • 構築

  • 5-minute Quick Start ? Ceph documentation
  • Installing Debian/Ubuntu Packages ? Ceph documentation
  • OpenStackCephHowto – Debian Wiki
  • Block Devices and OpenStack ? Ceph documentation
  • Category:Ceph – LunaBiblos
  • Ceph を使ってみる
  • CephインストールHOWTO – 驟雨のカーネル探検隊
  • Introducing Ceph to OpenStack – Sebastien Han

  • 設定

  • Configuring Ceph ? Ceph Documentation
  • Basic Configuration ? glance 2013.1.a76.gdf7d9c7 documentation
  • Configuring RADOS Gateway ? Ceph Documentation

  • 運用

  • Ceph: Scalable distributed file system

  • コマンド

  • rbd ? manage rados block device (RBD) images ? Ceph Documentation
  • radosgw ? rados REST gateway ? Ceph Documentation

  • ベンチマーク

  • 分散ファイルシステムCephにおけるI/O性能の検討
  • Argonaut vs Bobtail Performance Preview – Ceph


  • 環境

    Debian Wheezyで、
    DFSですので台数が最低の3台としています。
    データディレクトリは XFS : /data としています。

    IPアドレスは 192.168.0.11, 12, 13 で、
    テストですので ssh -p22 root@host で入れるようにしています。

    作業はある1台を軸に行いますが、
    仕上がる3台の内容に差異はない… と今のところ思います。


    パッケージのインストール

    全台にインストールします。
    CephのデータディレクトリのファイルフォーマットはXFSが良いとされていますが、ext4などでも利用できます。


    設定

    SSHパスワード無し鍵

    インストールの過程で必要なため、root で互いを入れるようにしておきます。
    後始末はひと通りの動作確認が完了した後に各々の好みでお願いします。

    ceph.conf

    メインの設定ファイルを作成します。
  • ext4の場合は filestore xattr use omap = true にする必要があります
  • デーモン名に番号をつけるため、データディレクトリパスにも番号を埋め込む例が多くありますが、普通は1サーバに1デーモンなのでなくした方が運用上スッキリします

  • /etc/ceph/ceph.conf

    他2台に転送しておきます。

    ディレクトリ作成

    基本の /var/lib/ceph から移動する場合は構造丸ごとコピーしておきます。


    初期化と起動

    データと鍵の作成

    何台目で実行してもよいですが、実行したサーバとそれ以外で少し違う編集をします。

    これを実行すると、ceph.conf を見て全対象サーバにSSHログインして初期化してくれます。メッセージがたくさん出ますが、エラーは明らかにわかるので、エラーが出たら設定を見なおしたり、データディレクトリを綺麗にします。

    もし色々試していて全てやり直したい時は、全Cephプロセスを止めて、データディレクトリを空にしてから再実行すればOKです。

    これにより、データディレクトリに色々できて、鍵が作成されます。

    鍵の修正

    実行したサーバの鍵ファイルは [client.admin] だけになり、他2台は [mds.N] だけになります。
    1台目で実行したとすると、[mds.1] を追加してやる必要があり、そのkeyの値が初期化時にメモった key=*** with… の *** の部分になります。これを追加しないとmdsプロセスが落ちるので必須です。

    /etc/ceph/keyring.admin (1台目)

    2, 3台目には [client.admin] を追加してやります。内容は、1台目からそのままコピーしてきます。これにより、2, 3台目でも色々コマンドを実行できるようになります。

    /etc/ceph/keyring.admin (2, 3台目)

    鍵の修正は起動前に完了させてください。
    この辺を修正してからサービスをrestartすると、プロセスが重複したりするので注意してください。


    全サービス開始

    -a (–allhosts) により、1サーバで実行したら全サーバで起動されます。


    動作確認

    ヘルスチェックをします。OKがでるまで数分かかることがあります。



    これでCephの基本基盤が完成です。

    次回以降は細かく分けて使い方を書いていきたいと思います。