How to use Ceph RBD as CloudStack Primary Storage

4,518 views

Published on

How to use Ceph RBD as CloudStack Primary Storage
This is Japanese slide.

Published in: Technology

How to use Ceph RBD as CloudStack Primary Storage

  1. 1. CloudStack プライマリストレージに オブジェクト分散ストレージ Cephを 使ってみた 富士通 ストレージシステム事業本部: 熊野、木村、森多 CloudStackユーザー会: 島崎、中島、北瀬 09/12/2013 第14回CloudStackユーザー会 4.1新機能深堀プロジェクト
  2. 2. CLOUDSTACK STORAGE プライマリストレージにCephを使ってみた
  3. 3. セカンダリストレージ (NFS, OpenStack Swift) 管理サーバー ネットワーク機器 (LB, FW, SDN/OpenFlow) セルフサービスポータル プライマリストレージ (NFS, iSCSI, FC SAN, Ceph RBD, Local) CloudPlatformアーキテクチャ概要
  4. 4. CEPHって? プライマリストレージにCephを使ってみた
  5. 5. オブジェクトベースの分散ストレージ基盤 • 汎用サーバ・Linux上で動作するオープンソースソフト (LGPL) • 高信頼(データレプリケーション、フェイルオーバー) • 高スケーラビリティ(数千ノード程度まで拡張可) • インタフェースのバリエーションが豊富(ファイル・ブロック・オブジェ クト) • Inktank社がサポート(&開発の中心)、DreamHost社が主スポンサー Cephとは? RADOS: Reliable, Autonomic, Distributed Object Store librados RADOSGW S3 compatible REST Gateway RBD RADOS Block Device CephFS POSIX-compliant Distributed filesystem Object Block Filesystem QEMU-KVM Kernel Client Kernel Client FUSERESTAPI http://ceph.com/
  6. 6. • Ceph上でブロックストレージを提供 • データはOSD (Object Storage Device) プールに オブジェクトとして分散配置 o ディフォルトでは4MB単位で分散 o Thin Provisioning (使用している領域のみ実スペースを占有) • MonitorはOSDの構成・レイアウト管理、各サーバーの生存確認等を行う o クライアントはMonitorからレイアウト情報を入手し、OSDへアクセスする • OSD内のデータ配置管理やオブジェクトの冗長化はOSD側で行う RBD: RADOS Block Device OSD Monitor OSD OSD OSD OSD Client 仮想Diskクラスタ構成 レイアウト情報
  7. 7. 検証スケジュール、環境 プライマリストレージにCephを使ってみた
  8. 8. 目的: CloudStack配下でのCeph RBD利用について実証 期間: 2013年7月16日~26日 場所: 富士通トラステッド・クラウド・スクエア (TCS) • 浜松町世界貿易センタービル 30階 • http://jp.fujitsu.com/facilities/tcs/ CloudStack / Ceph RBD共同検証 日 月 火 水 木 金 土 14 15 海の日 16 17 18 19 20 21 22 23 24 25 26 27 Ceph / CloudStack 環境構築 機能 検証 性能 環境 構築
  9. 9. 10GbE Storage用 LAN OS: RHEL 6.3 x86_64 検証環境 CloudStack管理サーバー PRIMERGY RX200S7 Xeon 2.9GHz 8core ×2 16GB memory 1GbE PC 仮想環境サーバー PRIMERGY RX200S7 Xeon 2.9GHz 8core ×2 16GB memory Cephストレージサーバー PRIMERGY RX300S7 Xeon 2.9GHz 8core ×2 32GB memory OSD 600GB ×6 Cephストレージサーバー PRIMERGY RX300S7 Xeon 2.9GHz 8core ×2 32GB memory OSD 600GB ×6 Cephストレージサーバー PRIMERGY RX300S7 Xeon 2.9GHz 8core ×2 32GB memory OSD 600GB ×6 管理LAN
  10. 10. 10GbE Storage用 LAN OS: RHEL 6.3 x86_64 検証環境 (Live Migration検証時) CloudStack 管理サーバー PRIMERGY RX200S7 Xeon 2.9GHz 8core ×2 16GB memory 1GbE PC 仮想環境サーバー (ホスト) PRIMERGY RX200S7 Xeon 2.9GHz 8core ×2 16GB memory Cephストレージサーバー PRIMERGY RX300S7 Xeon 2.9GHz 8core ×2 32GB memory OSD 600GB ×6 Cephストレージサーバー PRIMERGY RX300S7 Xeon 2.9GHz 8core ×2 32GB memory OSD 600GB ×6 管理LAN 仮想環境サーバー (ホスト) PRIMERGY RX300S7 Xeon 2.9GHz 8core ×2 32GB memory
  11. 11. 10GbE ソフトウェア構成 (Ceph/RBD) CloudStack管理サーバー 仮想環境サーバー(ホスト) Cephストレージサーバー OSD Cephストレージサーバー Cephストレージサーバー librados qemu-kvm librbd CloudStack KVM Agent OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD mon libvirt RBD (仮想Disk) RBD (仮想Disk) NFS for System VM JSON コマンド qemu-img livbirt-java
  12. 12. 10GbE ソフトウェア構成 (性能比較対象NFS) CloudStack管理サーバー 仮想環境サーバー(ホスト) Cephストレージサーバー OSD Cephストレージサーバー Cephストレージサーバー NFS client qemu Guest OS Guest OS OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD OSD LVM (RAID-0) mon libvirt 仮想Disk NFS for System VM NFS
  13. 13. 構築 プライマリストレージにCephを使ってみた
  14. 14. RHEL 6.3へのCeph動作環境の構築 • Cephクラスタを構成するサーバー群に Ceph動作環境を構築 • Linux kernelのアップデート(全ノード) o Cephの推奨動作環境に沿うように、 今回は3.4.51.el6.x86_64をインストール o http://ceph.com/docs/master/install/os-recommendations/ • SELinuxとiptablesの停止(全ノード) • ssh環境構築(全ノード) o http://ceph.com/docs/master/start/quick-start-preflight/ o 今回は専用アカウントを作成せずにrootで作業を実施 • cephパッケージのインストール(全ノード:今回の検証環境特有) o http://ceph.com/docs/master/install/rpm/ o 本来は次項のceph-deployコマンドを使ってインストールを集中管理できるが、今回 はインターネットから隔離された環境のためマニュアルでパッケージをインストール o http://ceph.com/rpm-cuttlefish/el6/ • ceph-deployのインストール(管理ノード) o 一つのサーバーを管理ノードとし、 ceph-deployパッケージをインストール o http://ceph.com/rpm-cuttlefish/el6/noarch/ceph-deploy-1.0-0.noarch.rpm o 以降のCephクラスタ構築作業は管理ノードから実施
  15. 15. Cephクラスタの構築 • ceph-deployコマンドを使いCephクラスタを構築 http://ceph.com/docs/master/start/quick-ceph-deploy/ # ceph-deploy new rx300s7-14g # ceph-deploy mon create rx300s7-14g # ceph-deploy gatherkeys rx300s7-14g # ceph-deploy disk zap rx300s7-14g:/dev/sdb rx300s7-14g:/dev/sdc rx300s7-14g:/dev/sdd rx300s7- 14g:/dev/sde rx300s7-14g:/dev/sdf rx300s7-14g:/dev/sdg # ceph-deploy disk zap rx300s7-15g:/dev/sdb rx300s7-15g:/dev/sdc rx300s7-15g:/dev/sdd rx300s7- 15g:/dev/sde rx300s7-15g:/dev/sdf rx300s7-15g:/dev/sdg # ceph-deploy disk zap rx300s7-16g:/dev/sdb rx300s7-16g:/dev/sdc rx300s7-16g:/dev/sdd rx300s7- 16g:/dev/sde rx300s7-16g:/dev/sdf rx300s7-16g:/dev/sdg # ceph-deploy osd create rx300s7-14g:/dev/sdb rx300s7-14g:/dev/sdc rx300s7-14g:/dev/sdd rx300s 7-14g:/dev/sde rx300s7-14g:/dev/sdf rx300s7-14g:/dev/sdg # ceph-deploy osd create rx300s7-15g:/dev/sdb rx300s7-15g:/dev/sdc rx300s7-15g:/dev/sdd rx300s 7-15g:/dev/sde rx300s7-15g:/dev/sdf rx300s7-15g:/dev/sdg # ceph-deploy osd create rx300s7-16g:/dev/sdb rx300s7-16g:/dev/sdc rx300s7-16g:/dev/sdd rx300s 7-16g:/dev/sde rx300s7-16g:/dev/sdf rx300s7-16g:/dev/sdg クラスタ作成・Monitorノード構築 OSD用ディスク初期化 OSD構築
  16. 16. Cephクラスタの構築(続き) • Cephクラスタが構築できたことの確認 # ceph health --> HEALTH_OK # ceph osd tree # id weight type name up/down reweight -1 9.72 root default -2 3.24 host rx300s7-14g 0 0.54 osd.0 up 1 1 0.54 osd.1 up 1 2 0.54 osd.2 up 1 3 0.54 osd.3 up 1 4 0.54 osd.4 up 1 5 0.54 osd.5 up 1 -3 3.24 host rx300s7-15g 6 0.54 osd.6 up 1 7 0.54 osd.7 up 1 8 0.54 osd.8 up 1 9 0.54 osd.9 up 1 10 0.54 osd.10 up 1 11 0.54 osd.11 up 1 -4 3.24 host rx300s7-16g 12 0.54 osd.12 up 1 13 0.54 osd.13 up 1 14 0.54 osd.14 up 1 15 0.54 osd.15 up 1 16 0.54 osd.16 up 1 17 0.54 osd.17 up 1 クラスタのヘルスチェック OSDメンバの表示
  17. 17. CloudStack向けストレージプールの作成 • CloudStackで使用するRBD用の設定を行う # ceph osd lspools 0 data,1 metadata,2 rbd, # ceph osd pool create libvirt-pool 128 128 pool 'libvirt-pool' created # ceph osd lspools 0 data,1 metadata,2 rbd,3 libvirt-pool, # ceph auth get-or-create client.libvirt mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow r wx pool=libvirt-pool' [client.libvirt] key = AQC7OuZReMndFxAAY/qUwLbvfod6EMvgVWU21g== # ceph auth list installed auth entries: osd.0 ... client.libvirt key: AQC7OuZReMndFxAAY/qUwLbvfod6EMvgVWU21g== caps: [mon] allow r caps: [osd] allow class-read object_prefix rbd_children, allow rwx pool=libvirt-pool CloudStack用プールを作成 ※今回はlibvirt-poolというプール名で作成したが、任意のプール名を指定可能 CloudStackからプールへアクセスするためのクライアント認証情報を作成 ※今回はlibvirtというユーザー名でlibvirt-poolプールへアクセス可能とする設定 http://ceph.com/docs/master/rados/operations/authentication/#add-a-key
  18. 18. RHEL 6.3へのRBDクライアント環境の構築 • CloudStackから仮想マシンを構築するサーバーで RBDを使えるようにする • cephパッケージのインストール o http://ceph.com/docs/master/install/rpm/ o RHELではlibvirt/QEMUのコンパイルが必要なため、-develパッケージのイ ンストールも必要 • RBDを有効にしたlibvirtパッケージにアップデート o 今回はRHEL 6.4用のlibvirt 0.10.2のソースコードを使用 http://ftp.redhat.com/pub/redhat/linux/enterprise/6Server/en/os/SRPMS/libvi rt-0.10.2-18.el6_4.9.src.rpm o specファイルのwith_storage_rbdを有効にしてパッケージをビルドし、イ ンストール • RBDを有効にしたQEMUパッケージにアップデート o 今回はFedora 17用のqemu 1.0のソースコードを使用 http://dl.fedoraproject.org/pub/fedora/linux/releases/17/Everything/source/S RPMS/q/qemu-1.0-17.fc17.src.rpm o specファイルを改変してRBDを有効にし、RequresをRHELに合わせて修 正してビルド・インストール
  19. 19. CloudStack環境の構築 • 基本的なCloudStack+KVM環境を構築 • CloudStack徹底入門第3章参照
  20. 20. プライマリストレージとして追加 • プロトコル: RBD • RADOS Monitor: モニ ターノードのIPアドレス • RADOS Pool: Pool名 • RADOS User: Cephの ユーザー名 (今回はlibvirt) • RADOS Secret: ユーザー のシークレットKEY(Ceph のモニターノードで # ceph auth list で表示される) • ストレージタグ: RBD プライマリストレージにCephを使ってみた
  21. 21. ディスクオファリングの作成 • ストレージタグ: RBD
  22. 22. コンピューティングオファリングの作成 • ストレージタグ: RBD
  23. 23. Tips • ホストにUbuntu 12.04を利用するのが推奨 • ホストはKVMのみに対応 • System VM用に、NFS/SAN/Localストレージが必要。 • 4.1では、ユーザーインスタンス用に、Ceph RBDが利用可能 • 4.2からは、System VM用とにもCeph RBDが利用可能 • Ceph RBD用にコンパイルした Libvirt (>=0.9.13)、QEMUを使う必要あり。 • QEMUのバージョンに注意 • 1.5を使った場合、ユーザーインスタンスにブートディスクを追加 できず、起動時にパニック。 • 1.0を使った場合、問題発生せず。
  24. 24. 結果 プライマリストレージにCephを使ってみた
  25. 25. 機能テスト結果 機能 テスト結果 プライマリストレージとしてCeph RBDの追加 ○ インスタンスの作成、削除 ○ インスタンスの起動、停止 ○ ボリュームの追加 ○ ライブマイグレーション ○ スナップショット × (4.2から対応) セカンダリストレージとしてCeph RBDの追加 - (4.2から対応)
  26. 26. 性能テスト結果 • 性能測定 • 測定ツールfioを用いてCeph/NFSの性能比較を実施
  27. 27. 参考資料 • http://ceph.com/docs/next/rbd/rbd-cloudstack/ • http://loadays.org/static/slides/ceph%20storage%20for%20 cloudstack.pdf • http://blog.widodh.nl/2012/09/ceph-distributed-storage- with-cloudstack/ • http://www.youtube.com/watch?v=anODiwRmh0M • http://www.youtube.com/watch?feature=player_embedded& v=Xm0PkWfCOHc • http://www.inktank.com/news-events/new/inktank-partners- with-citrix-to-support-ceph-distributed-storage-in- cloudplatform/ • http://www.aarondelp.com/2013/02/apachelive-blog- powering-cloudstack-w.html • http://www.mail-archive.com/ceph- devel@vger.kernel.org/msg10108.html
  28. 28. CloudStackユーザー会 メンバー激しく募集中 Web: http://cloudstack.jp/ Mailing Lists: http://cloudstack.jp/community users@cloudstack.jp Twitter: @cloudstackja ustream: http://www.ustream.tv/channel/cloudstackja Facebook: https://www.facebook.com/cloudstackjapan Youtube: http://www.youtube.com/channel/ UCB_l4yMR2rE6VWa_H-THPWQ

×