*

CentOS7 RDO Juno with Ceph

公開日: 最終更新日:2015/06/06  |  By  |  CentOS, Ceph, Cinder, OpenStack, OSS, RDO, Storage , ,

ご無沙汰しています。
先日のブログではCentOS7/RDOで OpenStack Juno環境を構築する方法についてご紹介しました。

今回の記事ではCentOS7/RDOで構築したOpenStack Junoの環境でCinderのバックエンドにCephを使用する際の構築、設定方法をご紹介します。

 

構築する環境の概要

今回構築する環境を図に表すと以下のようになります。

01.all

前提となる環境の構築

まず、OpenStack Juno環境とCeph環境を構築します。

PackStackを使用したOpenStack Juno環境の構築はこのブログの以前の記事 を参考としてください。

Ceph環境の構築はこのブログの以前の記事 や公式ドキュメントを参考に構築してください。

02.step1

コントローラーノードでの作業

コントローラーノードで必要な設定を行います。

03.controller

1.必要パッケージのインストールのインストール

Cephのクライアントモジュール(ceph-common)とカーネルモジュール(kmod-rbd,kmod-libceph)のインストールが必要です。
ceph-commonは epel7よりインストールすることができますが、カーネルモジュールは現時点では cephのtestリポジトリから取得する必要があります。
以下の手順でパッケージのインストールを実施してください。


# epel-releaseのインストール
$ yum install epel-release
# ceph-commonパッケージのインストール
$ yum install ceph-common
$ cat > /etc/yum.repos.d/ceph.repo << EOF 
[ceph-test]
name=Ceph packages for $basearch/$releasever
baseurl=http://ceph.com/rpm-testing/rhel7/$basearch
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc
EOF
$ yum install --enablerepo=ceph-test kmod-rbd kmod-libceph

2.Ceph アクセスのための設定とCinder用プールの作成

コントローラーノードからCephの操作を行うための設定をし、Ceph上にOpenStack Cinder用のプールを作成します。Cephの公式ドキュメントにはGlanceのバックエンドやcinder-backup用の設定も一緒に記載されていますが、今回はCinder用の設定のみを行います。

まず、Cephを操作するための設定ファイルをCephノードから取得します。

 $ scp -p {CephノードのIPアドレス}:/etc/ceph/ceph.conf /etc/ceph/ceph.conf
 $ scp -p {CephノードのIPアドレス}:/etc/ceph/ceph.client.admin.keyring /etc/ceph/ceph.client.admin.keyring

次に、以下の手順でCeph上にCinder Volume用のプールを作成し、ceph authによる認証の設定も行います。

 # プールを作成します。指定する数はPG(Placement Group)の数です。
 $ ceph osd pool create volumes 128
 $ ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes'

Cephクラスター側に配置した ceph.confと同じものをコントローラーノードの /etc/ceph/ceph.conf に配置します。

 $ ceph auth get-or-create client.cinder | sudo tee /etc/ceph/ceph.client.cinder.keyring
 $ sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring

3.設定ファイル(cinder.conf)の編集

CinderのバックエンドとしてCephを使用するため、/etc/cinder/cinder.conf の下記の箇所を編集します。
ここで生成したuuidはコンピュートノードでも設定時に使用します。

 $ uuidgen
 {生成されたuuid}
 # --- 書き換え ---
 enabled_backends=ceph    # 書き換え

 # --- 追記 ---
  [ceph]
 volume_driver = cinder.volume.drivers.rbd.RBDDriver
 rbd_pool = volumes
 rbd_ceph_conf = /etc/ceph/ceph.conf
 rbd_flatten_volume_from_snapshot = false
 rbd_max_clone_depth = 5
 rbd_store_chunk_size = 4
 rados_connect_timeout = -1
 glance_api_version = 2
 rbd_user = cinder
 rbd_secret_uuid = {生成されたuuid}
# ---

コンピュートノードの設定

コンピュートノードで必要な設定を行います。

04.conpute

1.qemu-kvm / qemu-imgの再インストール

( この箇所は、この記事を書いた当初、CentOS7.0では必要でしたが、CentOS7.1 では不要となっています。 2015/6/6 追記)

現在、RDO/PackStackでインストールしたコンピュートノード上のkvmでは Cephのrbdプロトコルでマウントを行うことはできません。この件についてAsk OpenStack のやり取りをみると、qemu-kvmのソースを取得し、リビルドする必要があるということですが、、リンク先の手順のとおりやってみると、ビルド時にrhevのオプションを指定するとrbdも使用できるようになっていることが分かります。

ということで、今回はRHEVの Upstream版 oVirtから 必要パッケージをインストールしなおします。

$ yum remove qemu-kvm qemu-img qemu-kvm-tools qemu-kvm-common
$ yum install http://resources.ovirt.org/pub/yum-repo/ovirt-release35.rpm
$ yum install qemu-kvm-rhev qemu-img-rhev qemu-kvm-tools-rhev openstack-nova-compute
$ systemctl start openstack-nova-compute

2.libvirtの設定

libvirtで、ceph上のvolumeに接続するために、keyを指定しておく必要があります。以下の手順で設定します。

$ ceph auth get-key client.cinder | ssh {your-compute-node} tee client.cinder.key
$ cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
 <uuid>{コントローラーノードで生成したUUID}</uuid>
 <usage type='ceph'>
 <name>client.cinder secret</name>
 </usage>
</secret>
EOF
$ sudo virsh secret-define --file secret.xml
Secret {コントローラーノードで生成したUUID} created
$ sudo virsh secret-set-value --secret {コントローラーノードで生成したUUID} --base64 $(cat client.cinder.key)
$ rm client.cinder.key secret.xml

 

動作の確認

上記の設定でOpenStack上のインスタンスにCephのボリュームをマウントすることができるようになります。
OpenStack上で作成したインスタンスにボリュームをアタッチしたとき、どのような状態になっているかを確認します。
OpenStack上でのインスタンス作成とボリュームの接続の操作についてはここでは説明しません。

05.check

以下の手順で確認します。

1.コントローラーノードで実施(OpenStackコマンドはadmin権限で実行します。)

$ nova hypervisor-servers {コンピュートノード}   # コンピュートノード上のインスタンス名を確認
+--------------------------------------+-------------------+---------------+------------------------+
|            ID                        |     Name          | Hypervisor ID |  Hypervisor Hostname   |
+--------------------------------------+-------------------+---------------+------------------------+
| ed3a9884-afd8-40bf-9dbc-1b95c517e8e1 | instance-000000c0 | 11            | compute_node           |
+--------------------------------------+-------------------+---------------+------------------------+

$ cinder list --all-tenants  # ボリュームのIDを確認
+-------------------------+-----------------+--------+--------------+------+-------------+----------+--------------------------------------+
|              ID         | Tenant ID       | Status | Display Name | Size | Volume Type | Bootable |   Attached to                        |
+-------------------------+-----------------+--------+--------------+------+-------------+----------+--------------------------------------+
| {Cinder ID}             |  (略)           | in-use | (略)         | 20   | None        |  false   | ed3a9884-afd8-40bf-9dbc-1b95c517e8e1 |
+-------------------------+-----------------+--------+--------------+------+-------------+----------+--------------------------------------+

$ rbd -p volumes ls -l   # volumesプール上のrbdイメージを確認
NAME SIZE PARENT FMT PROT LOCK
volume-{cinderボリュームのID} 20480M 2

コンピュートノードでvirshコマンドを実行すると以下のようにvdbにボリュームがマウントされていることが確認できます。

$ virsh domblklist instance-000000c0  # virshで管理しているイメージのブロックデバイスを表示
ターゲット ソース
------------------------------------------------
vda /var/lib/nova/instances/ed3a9884-afd8-40bf-9dbc-1b95c517e8e1/disk
vdb volumes/volume-{Cinder ID}    #これが Ceph上のボリューム

by @kumagai19o

このブログの記事に関するご意見等は #bird_blog までお願いします。

関連記事

Rally-benchmark-results-in-both-tabular-and-graphic-displays

コマンドラインからRallyを使いこなす

RallyはOpenStackのベンチマークツールです。概要については以前書いた記事で紹介しています

記事を読む

affinity_swift-get-node

Swift のグローバルクラスタ(2) affinity の設定

Swift のグローバルクラスタ(2) affinity 山縣です。Havana 版(1.10.0)

記事を読む

no image

Ceph Index

分散ストレージCeph紹介 インデックス Ceph "ブロックアクセス可能な分散ストレージ"

記事を読む

no image

OpenStack DBaas (Trove) を動かした話

本記事はOpenStack Advent Calendar 2015 12/17 のエントリー記事で

記事を読む

no image

CLIによるSwiftへのアクセス(後編) ~ Swiftによるオブジェクトストレージシステムの構築(4)

by yamagata 2013/2/7(Swift関連の記事の一覧はこちらをご覧ください)前回の

記事を読む

no image

Nova Availability Zone と Cinder Availability Zone

OpenStack 担当 石川です。 実際に自分が使うか使わないかは置いておき、気になったオプ

記事を読む

horizon

OpenStack Cinder Multiple driver backends 機能を使ってみよう

by Hiroki Ishikawa OpenStack 担当、石川です。 Grizzly

記事を読む

blog-ocata

Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプロイして触ってみたいです。 前

記事を読む

top

OpenStack API でSoftLayerを操作する “Jumpgate”

by Ikuo Kumagai (@kumagai19o) この記事はAdvent Calen

記事を読む

no image

CLIによるSwiftへのアクセス(前編) ~ Swiftによるオブジェクトストレージシステムの構築(3)

by yamagata 2013/1/30(Swift関連の記事の一覧はこちらをご覧ください)(2/

記事を読む

no image

ビットアイル総合研究所は、クラウド技術に関する調査&研究を通して、社会と会社に寄与していくことを目的に、ビットアイル・エクイニクスの企業内研究所として2011年8月に設立されました。

openstack-figure1-2x
COHO DataStream のCinder連携

OpenStack Cinder のストレージバックエンドとしてはCe

blog-ocata
Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプ

newton
Juju Manual Cloud で OpenStack 環境構築

本当にご無沙汰しております。 この投稿はOpenStack Adve

top
HACK! THE Juju/MAAS

6/8~6/10まで幕張メッセで開催されたInterop 2016。皆

dpdk
OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様

→もっと見る

PAGE TOP ↑