外部Cephを使用したKolla-Ansibleのデプロイ

Ceph logo

Kolla-Ansible をデプロイする際、Ceph クラスターを同時にデプロイすることも可能ですが、運用担当者が Ceph と OpenStack を分けて管理したい一方で、Ceph をストレージバックエンドとして利用したいというケースがあります。そんな時でも心配はいりません。Kolla-Ansible では、以前紹介した 設定オーバーライド (config override) の機能を使用して External Ceph Cluster を利用します。本記事では、Kolla-Ansible とその設定オーバーライド(config override)機能を使用して OpenStack をデプロイし、外部の Ceph を使用する方法を紹介します。

事前準備

外部の Ceph クラスターを使用するためには、まず Ceph クラスターをデプロイする必要があります。Ceph のデプロイ方法には多くの選択肢がありますが、以前紹介した Ceph-Ansible を参考にしてデプロイを行うこともできます。

また、Kolla-Ansible を使用するための基礎知識も必要です。こちらの記事を参考にしてください:Kolla-Ansible とコンテナによる OpenStack のデプロイ

Cephの設定

RBDプール

OpenStack の Nova、Cinder(Cinder Backup)、Glance はすべて RBD をストレージバックエンドとして使用できるため、これら 3 つのサービス用に RBD プールを作成する必要があります。

sudo ceph osd pool create images 128
sudo ceph osd pool create vms 128
sudo ceph osd pool create volumes 128

Cephキーリングの設定

Ceph は Keyring を使用して認証を行うため、同様に 3 つのサービスに対応する Keyring を作成し、使用するプールへの権限を付与する必要があります。

sudo ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rdb_children, allow rwx pool=images' -o /etc/ceph/ceph.client.glance.keyring

sudo ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rx pool=images' -o /etc/ceph/ceph.client.cinder.keyring

sudo ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups -o /etc/ceph/ceph.client.cinder-backup.keyring

sudo ceph auth get-or-create client.nova mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=vms, allow rx pool=images' -o /etc/ceph/ceph.client.nova.keyring

Kolla-Ansibleの設定

globals.yml

globals.yml 内では、Kolla-Ansible による Ceph デプロイのオプションを no に設定し、Nova、Cinder、Glance が Ceph をストレージバックエンドとして使用するオプションを yes に設定する必要があります。

enable_ceph: "no"
glance_backend_ceph: "yes"
cinder_backend_ceph: "yes"
nova_backend_ceph: "yes"

Glanceの設定

Glance で外部 Ceph を使用するための設定は、基本的に次の 3 つの手順で構成されます:

  1. glance-api.conf rbd バックエンドの使用設定
  2. /etc/ceph/ceph.conf Ceph 設定の追加
  3. 追加 /etc/ceph/ceph.client.images.keyring

ステップ 1 は設定オーバーライド(config override)を通じて実現します。まず、 /etc/kolla/config/glance/glance-api.conf を作成し、以下の内容を追加します。

[glance_store]
stores = rbd
default_store = rbd
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf

続いてステップ 2 でも、同じく /etc/kolla/config/glance/ceph.conf Cephの設定の追加

[global]
fsid = 88a8ea91-df1d-4f67-b78b-52bb2f04df4d
mon_initial_members = ceph01, ceph02, ceph03
mon_host = 192.168.113.10,192.168.113.11,192.168.113.10
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

最後に、作成済みのkeyringを /etc/kolla/config/glance/ceph.client.glance.keyring

sudo cp /etc/ceph/ceph.client.glance.keyring /etc/kolla/config/glance/ceph.client.glance.keyring

Kolla-Ansibleはディレクトリ内のすべての ceph* ファイルをコンテナ内の /etc/ceph 配下に配置します。

Cinderの設定

Cinderの設定手順はGlanceと同様です。まず /etc/kolla/config/cinder/cinder-volume.conf を作成し、以下の内容を追加します。

[DEFAULT]
enabled_backends=rbd-1

[rbd-1]
rbd_ceph_conf=/etc/ceph/ceph.conf
rbd_user=cinder
backend_host=rbd:volumes
rbd_pool=volumes
volume_backend_name=rbd-1
volume_driver=cinder.volume.drivers.rbd.RBDDriver
rbd_secret_uuid = {{ cinder_rbd_secret_uuid }}

次にCinder-Backupを設定し、作成します。 /etc/kolla/config/cinder/cinder-backup.conf そして、以下の内容を追加します。

[DEFAULT]
backup_ceph_conf=/etc/ceph/ceph.conf
backup_ceph_user=cinder-backup
backup_ceph_chunk_size = 134217728
backup_ceph_pool=backups
backup_driver = cinder.backup.drivers.ceph
backup_ceph_stripe_unit = 0
backup_ceph_stripe_count = 0
restore_discard_excess_bytes = true

次に、同様に ceph.conf<code> 放到 </code> /etc/kolla/config/cinder/

最後に、すべてのkeyringをコピーする必要があります。

sudo cp /etc/ceph/ceph.client.cinder.keyring /etc/kolla/config/cinder/cinder-backup/ceph.client.cinder.keyring
sudo cp /etc/ceph/ceph.client.cinder.keyring /etc/kolla/config/cinder/cinder-volume/ceph.client.cinder.keyring
sudo cp /etc/ceph/ceph.client.cinder-backup.keyring /etc/kolla/config/cinder/cinder-backup/ceph.client.cinder-backup.keyring

Novaの設定

Novaの設定も非常に似ており、基本的には同じ手順になります。

以下の内容に基づいて作成します。 /etc/kolla/config/nova/nova-compute.conf

[libvirt]
images_rbd_pool=vms
images_type=rbd
images_rbd_ceph_conf=/etc/ceph/ceph.conf
rbd_user=nova

ceph.conf<code> 放到 </code> /etc/kolla/config/nova/

最後にkeyringをコピーします。

sudo cp /etc/ceph/ceph.client.nova.keyring /etc/kolla/config/nova/ceph.client.nova.keyring

実際のデプロイ

実際のデプロイコマンドの詳細については、以下を参照してください。 Kolla-Ansible とコンテナによる OpenStack のデプロイ

cd kolla-ansible
tools/generate_passwords.py
tools/kolla-ansible -i ansible/inventory/multinode bootstrap-servers
tools/kolla-ansible -i ansible/inventory/multinode prechecks
tools/kolla-ansible -i ansible/inventory/multinode deploy

Playbookが正常に完了したら、各サービスを使用して正常に動作することを確認してください。

リファレンス

著作権表示:このブログのすべての記事は、以下のライセンスのもとで提供されています。 CC BY-NC-SA 4.0 (別途記載がある場合を除く)

コメントを残す