Upload
kimihiko-kitase
View
3.264
Download
2
Embed Size (px)
DESCRIPTION
How to use Ceph RBD as CloudStack Primary Storage This is Japanese slide.
Citation preview
CloudStack プライマリストレージに
オブジェクト分散ストレージ Cephを
使ってみた 富士通 ストレージシステム事業本部: 熊野、木村、森多
CloudStackユーザー会: 島崎、中島、北瀬
09/12/2013
第14回CloudStackユーザー会
4.1新機能深堀プロジェクト
CLOUDSTACK STORAGE
プライマリストレージにCephを使ってみた
セカンダリストレージ (NFS, OpenStack Swift)
管理サーバー ネットワーク機器 (LB, FW, SDN/OpenFlow)
セルフサービスポータル
プライマリストレージ (NFS, iSCSI, FC SAN,
Ceph RBD, Local)
CloudPlatformアーキテクチャ概要
CEPHって?
プライマリストレージにCephを使ってみた
オブジェクトベースの分散ストレージ基盤 • 汎用サーバ・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 FUSE REST API
http://ceph.com/
• 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 クラスタ構成
レイアウト情報
検証スケジュール、環境
プライマリストレージにCephを使ってみた
目的: 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 環境構築
機能 検証
性能 環境構築
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
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
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
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
構築
プライマリストレージにCephを使ってみた
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クラスタ構築作業は管理ノードから実施
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構築
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メンバの表示
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 rwx 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
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に合わせて修正してビルド・インストール
CloudStack環境の構築
• 基本的なCloudStack+KVM環境を構築
• CloudStack徹底入門第3章参照
プライマリストレージとして追加
• プロトコル: RBD
• RADOS Monitor: モニターノードのIPアドレス
• RADOS Pool: Pool名
• RADOS User: Cephのユーザー名 (今回はlibvirt)
• RADOS Secret: ユーザーのシークレットKEY(Cephのモニターノードで # ceph auth list で表示される)
• ストレージタグ: RBD
プライマリストレージにCephを使ってみた
ディスクオファリングの作成
• ストレージタグ: RBD
コンピューティングオファリングの作成
• ストレージタグ: RBD
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を使った場合、問題発生せず。
結果
プライマリストレージにCephを使ってみた
機能テスト結果
機能 テスト結果
プライマリストレージとしてCeph RBDの追加 ○
インスタンスの作成、削除 ○
インスタンスの起動、停止 ○
ボリュームの追加 ○
ライブマイグレーション ○
スナップショット × (4.2から対応)
セカンダリストレージとしてCeph RBDの追加 - (4.2から対応)
性能テスト結果
• 性能測定
• 測定ツールfioを用いてCeph/NFSの性能比較を実施
参考資料
• http://ceph.com/docs/next/rbd/rbd-cloudstack/
• http://loadays.org/static/slides/ceph%20storage%20for%20cloudstack.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/[email protected]/msg10108.html
CloudStackユーザー会 メンバー激しく募集中
Web: http://cloudstack.jp/
Mailing Lists: http://cloudstack.jp/community
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