OpenStack へのブロックデバイスのガイド
OpenStack のバックエンドとして Ceph を使用するように、Ceph、QEMU、libvirt、OpenStack を設定
概要
第1章 Ceph ブロックデバイスおよび OpenStack リンクのコピーリンクがクリップボードにコピーされました!
The Red Hat Enterprise Linux OpenStack Platform Director は、Glance、Cinder、Cinder Backup、および Nova のバックエンドとして Ceph を使用するための 2 つの方法を提供します。
- OpenStack は Ceph Storage クラスターを作成: OpenStack director は Ceph Storage クラスターを作成できます。これには、Ceph OSD のテンプレートを設定する必要があります。OpenStack は Ceph ホストのインストールと設定を処理します。このシナリオでは、OpenStack は OpenStack のコントローラーホストで Ceph モニターをインストールします。
- OpenStack は既存の Ceph Storage クラスターに接続: Red Hat OpenStack Platform 9 以降を使用して、Ceph モニターに接続して OpenStack のバックエンドとして使用するように Ceph Storage クラスターを設定することができます。
前述の方法は、インストールと設定の多くを自動的に処理してくれるため、OpenStack のバックエンドとして Ceph を設定するための好ましい方法です。
本書では、Ceph をバックエンドとして使用するように Ceph、QEMU、libvirt、および OpenStack を設定する手順を詳しく説明します。本書は、RHEL OSP Director を使用する予定のないユーザーを対象としています。
OpenStack のバックエンドとして Ceph ブロックデバイスを使用するには、稼働中の Ceph Storage クラスターと少なくとも 1 つの OpenStack ホストが必要です。
OpenStack の 3 つの部分は、Ceph のブロックデバイスと統合されます。
- イメージ: OpenStack Glance は仮想マシンのイメージを管理します。イメージを変更することはできません。OpenStack はイメージをバイナリーブロブとして扱い、それに応じてイメージをダウンロードします。
- ボリューム: ボリュームはブロックデバイスです。OpenStack では、仮想マシンを起動したり、実行中の仮想マシンにボリュームを接続したりするためにボリュームを使用します。OpenStack は Cinder サービスを使用してボリュームを管理します。Ceph は、OpenStack Cinder および Cinder Backup のブラックリストとしてのロールを果たすことができます。
-
ゲストディスク: ゲストディスクは、ゲストオペレーティングシステムのディスクです。デフォルトでは、仮想マシンのブート時に、ディスクはハイパーバイザーのファイルシステムにファイルとして表示されます (デフォルトでは
/var/lib/nova/instances/<uuid> /ディレクトリー下に)。OpenStack Glance は、Ceph ブロックデバイスにイメージを保存することができ、イメージの Copy-on-Write クローンを使用して Cinder を使用して仮想マシンをブートすることができます。
Ceph は、仮想マシンのディスクをホストする QCOW2 をサポートしません。仮想マシンを起動するには、エフェメラルバックエンドまたはボリュームから起動するには、Glance イメージのフォーマットを RAW にする必要があります。
OpenStack では、イメージ、ボリューム、またはゲストディスクの仮想マシンに Ceph を使用することができます。3 つとも使う必要はありません。
関連情報
- 詳細は、Red Hat OpenStack Platform のドキュメントを参照してください。
第2章 OpenStack 用 Ceph のインストールおよび設定 リンクのコピーリンクがクリップボードにコピーされました!
ストレージ管理者は、Red Hat OpenStack Platform が Ceph ブロックデバイスを使用する前に、Ceph をインストールおよび設定する必要があります。
前提条件
- 新しい Red Hat Ceph Storage クラスターまたは既存の Red Hat Ceph Storage クラスター。
2.1. Openstack 用の Ceph プールの作成 リンクのコピーリンクがクリップボードにコピーされました!
OpenStack で使用するための Ceph プールを作成することができます。デフォルトでは、Ceph ブロックデバイスは rbd プールを使用しますが、利用可能なプールをすべて使用することができます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスター。
手順
Red Hat Ceph Storage クラスターが実行中で、
HEALTH_OK状態にあることを確認します。ceph -s
[root@mon ~]# ceph -sCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ceph プールを作成します。
例
ceph osd pool create volumes 128 ceph osd pool create backups 128 ceph osd pool create images 128 ceph osd pool create vms 128
[root@mon ~]# ceph osd pool create volumes 128 [root@mon ~]# ceph osd pool create backups 128 [root@mon ~]# ceph osd pool create images 128 [root@mon ~]# ceph osd pool create vms 128Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の例では、
128は配置グループの数になります。重要Red Hat は、Ceph Placement Group's per Pool Calculator を使用して、プールに適した配置グループ数を計算することを推奨します。
関連情報
- プールの作成の詳細は、ストレージ戦略 ガイドの プール の章を参照してください。
2.2. Openstack への Ceph クライアントのインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform に Ceph クライアントパッケージをインストールすることで、Ceph Storage クラスターにアクセスすることができます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスター。
- Ceph ソフトウェアリポジトリーへのアクセス。
- OpenStack の Nova、Cinder、Cinder Backup、および Glance ノードへのルートレベルのアクセス。
手順
OpenStack Nova、Cinder、Cinder Backup ノードは以下のパッケージをインストールします。
dnf install python-rbd ceph-common
[root@nova ~]# dnf install python-rbd ceph-commonCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenStack Glance ホストで
python-rbdパッケージをインストールします。dnf install python-rbd
[root@glance ~]# dnf install python-rbdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. Ceph 設定ファイルの Openstack へのコピー リンクのコピーリンクがクリップボードにコピーされました!
Ceph 設定ファイルを nova-compute ノード、cinder-backup ノード、cinder-volume ノード、および glance-api ノードにコピーします。
前提条件
- 稼働中の Red Hat Ceph Storage クラスター。
- Ceph ソフトウェアリポジトリーへのアクセス。
- OpenStack Nova、Cinder、および Glance ノードへのルートレベルのアクセス。
手順
Ceph 設定ファイルを Ceph Monitor ホストから OpenStack Nova ノード、Cinder ノード、Cinder Backup ノード、および Glance ノードにコピーします。
scp /etc/ceph/ceph.conf OPENSTACK_NODES:/etc/ceph
[root@mon ~]# scp /etc/ceph/ceph.conf OPENSTACK_NODES:/etc/cephCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.4. Ceph クライアント認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
Ceph クライアントが Red Hat OpenStack Platform にアクセスするように認証を設定することができます。
前提条件
- Ceph Monitor ホストへの root レベルのアクセス。
- 稼働中の Red Hat Ceph Storage クラスター。
手順
Ceph Monitor ホストから、Cinder、Cinder Backup、および Glance の新しいユーザーを作成します。
ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images' ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups' ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
[root@mon ~]# ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images' [root@mon ~]# ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups' [root@mon ~]# ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'Copy to Clipboard Copied! Toggle word wrap Toggle overflow client.cinder、client.cinder-backup、およびclient.glanceのキーリングを適切なノードに追加し、それらの所有権を変更します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenStack Nova ノードには、
nova-computeプロセスのキーリングファイルが必要です。ceph auth get-or-create client.cinder | ssh NOVA_NODE tee /etc/ceph/ceph.client.cinder.keyring
[root@mon ~]# ceph auth get-or-create client.cinder | ssh NOVA_NODE tee /etc/ceph/ceph.client.cinder.keyringCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenStack Nova ノードは、
libvirtにclient.cinderユーザーの秘密鍵を保存する必要もあります。libvirtプロセスでは、Cinder からブロックデバイスを接続する際にクラスターにアクセスするために秘密鍵が必要です。OpenStack Nova ノードに秘密鍵の一時的なコピーを作成します。ceph auth get-key client.cinder | ssh NOVA_NODE tee client.cinder.key
[root@mon ~]# ceph auth get-key client.cinder | ssh NOVA_NODE tee client.cinder.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow exclusive-lock機能を使用する Ceph ブロックデバイスイメージがストレージクラスターに含まれている場合は、すべての Ceph ブロックデバイスユーザーに、クライアントをブロックリストするパーミッションがあることを確認してください。ceph auth caps client.ID mon 'allow r, allow command "osd blacklist"' osd 'EXISTING_OSD_USER_CAPS'
[root@mon ~]# ceph auth caps client.ID mon 'allow r, allow command "osd blacklist"' osd 'EXISTING_OSD_USER_CAPS'Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenStack Nova ホストに戻ります。
ssh NOVA_NODE
[root@mon ~]# ssh NOVA_NODECopy to Clipboard Copied! Toggle word wrap Toggle overflow シークレットの UUID を生成し、後で
nova-computeを設定するためにシークレットの UUID を保存します。uuidgen > uuid-secret.txt
[root@nova ~]# uuidgen > uuid-secret.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記すべての Nova コンピュートノードに UUID は必要ありません。ただし、プラットフォームの一貫性から、同じ UUID を維持する方が適切です。
OpenStack Nova ノードで、
libvirtにシークレットキーを追加して、キーの一時コピーを削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow libvirtのシークレットを設定して定義します。virsh secret-define --file secret.xml virsh secret-set-value --secret $(cat uuid-secret.txt) --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
[root@nova ~]# virsh secret-define --file secret.xml [root@nova ~]# virsh secret-set-value --secret $(cat uuid-secret.txt) --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第3章 Ceph ブロックデバイスを使用するように OpenStack 設定 リンクのコピーリンクがクリップボードにコピーされました!
ストレージ管理者は、Red Hat OpenStack Platform が Ceph ブロックデバイスを使用するように設定する必要があります。Red Hat OpenStack Platform では、Cinder、Cinder Backup、Glance、および Nova に Ceph ブロックデバイスを使用することができます。
前提条件
- 新しい Red Hat Ceph Storage クラスターまたは既存の Red Hat Ceph Storage クラスター。
- 稼働中の Red Hat OpenStack Platform 環境。
3.1. Ceph ブロックデバイスを使用するように Cinder を設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform は Ceph ブロックデバイスを使用して Cinder ボリュームのバックエンドストレージを提供することができます。
前提条件
- Cinder ノードへのルートレベルのアクセス。
-
Ceph
volumeプール。 - Ceph ブロックデバイスと対話するシークレットのユーザーおよび UUID。
手順
Cinder 設定ファイルを編集します。
vim /etc/cinder/cinder.conf
[root@cinder ~]# vim /etc/cinder/cinder.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow [DEFAULT]セクションで、Cinder のバックエンドとして Ceph を有効にします。enabled_backends = ceph
enabled_backends = cephCopy to Clipboard Copied! Toggle word wrap Toggle overflow Glance API のバージョンが 2 に設定されていることを確認します。複数の cinder バックエンドを
enabled_backendsに設定する場合、glance_api_version = 2設定は[DEFAULT]セクションではなく、[ceph]セクションに記載されている必要があります。glance_api_version = 2
glance_api_version = 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
cinder.confファイルに[ceph]セクションを作成します。以下のステップで[ceph]セクションに Ceph 設定を追加します。 volume_driverの設定を指定し、Ceph ブロックデバイスドライバーを使用するように設定します。volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_driver = cinder.volume.drivers.rbd.RBDDriverCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター名と Ceph の設定ファイルの場所を指定します。典型的なデプロイメントでは、
cephクラスターのクラスター名および Ceph 設定ファイルは/etc/ceph/ceph.confにあります。Ceph クラスター名がcephになっていない場合は、クラスター名と設定ファイルパスを適切に指定します。rbd_cluster_name = us-west rbd_ceph_conf = /etc/ceph/us-west.conf
rbd_cluster_name = us-west rbd_ceph_conf = /etc/ceph/us-west.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、Red Hat OpenStack Platform は Ceph ボリュームを
rbdプールに保管します。以前に作成したvolumesプールを使用するには、rbd_pool設定を指定し、volumesプールを設定します。rbd_pool = volumes
rbd_pool = volumesCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat OpenStack Platform には、ボリュームのシークレットのデフォルトユーザー名または UUID がありません。
rbd_userを指定して、cinderユーザーに設定します。次に、rbd_secret_uuid設定を指定し、これをuuid-secret.txtファイルに保存されている生成された UUID に設定します。rbd_user = cinder rbd_secret_uuid = 4b5fd580-360c-4f8c-abb5-c83bb9a3f964
rbd_user = cinder rbd_secret_uuid = 4b5fd580-360c-4f8c-abb5-c83bb9a3f964Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の設定を指定します。
rbd_flatten_volume_from_snapshot = false rbd_max_clone_depth = 5 rbd_store_chunk_size = 4 rados_connect_timeout = -1
rbd_flatten_volume_from_snapshot = false rbd_max_clone_depth = 5 rbd_store_chunk_size = 4 rados_connect_timeout = -1Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cinder が Ceph ブロックデバイスを使用するように設定すると、設定ファイルは以下のようになります。
例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デフォルトの
[lvm]セクションと、その設定を削除することを検討してください。
3.2. Ceph ブロックデバイスを使用する Cinder バックアップの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform では、Cinder バックアップが Ceph ブロックデバイスを使用するように設定できます。
前提条件
- Cinder ノードへのルートレベルのアクセス。
手順
Cinder 設定ファイルを編集します。
vim /etc/cinder/cinder.conf
[root@cinder ~]# vim /etc/cinder/cinder.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
設定ファイルの
[ceph]セクションに移動します。 backup_driverの設定を指定し、それを Ceph ドライバーに設定します。backup_driver = cinder.backup.drivers.ceph
backup_driver = cinder.backup.drivers.cephCopy to Clipboard Copied! Toggle word wrap Toggle overflow backup_ceph_confの設定を指定し、Ceph 設定ファイルへのパスを指定します。backup_ceph_conf = /etc/ceph/ceph.conf
backup_ceph_conf = /etc/ceph/ceph.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Cinder バックアップ Ceph 設定ファイルは、Cinder に使用する Ceph 設定ファイルとは異なる場合があります。たとえば、別の Ceph Storage クラスターを指定することができます。
バックアップ用の Ceph プールを指定します。
backup_ceph_pool = backups
backup_ceph_pool = backupsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Cinder バックアップに使用される Ceph 設定ファイルは、Cinder に使用される Ceph 設定ファイルとは異なる場合があります。
backup_ceph_user設定を指定し、ユーザーをcinder-backupとして指定します。backup_ceph_user = cinder-backup
backup_ceph_user = cinder-backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の設定を指定します。
backup_ceph_chunk_size = 134217728 backup_ceph_stripe_unit = 0 backup_ceph_stripe_count = 0 restore_discard_excess_bytes = true
backup_ceph_chunk_size = 134217728 backup_ceph_stripe_unit = 0 backup_ceph_stripe_count = 0 restore_discard_excess_bytes = trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Cinder オプションを指定すると、
cinder.confファイルの[ceph]セクションは以下のようになります。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cinder バックアップが有効になっているかどうかを確認します。
cat /etc/openstack-dashboard/local_settings | grep enable_backup
[root@cinder ~]# cat /etc/openstack-dashboard/local_settings | grep enable_backupCopy to Clipboard Copied! Toggle word wrap Toggle overflow enable_backupをFalseに設定すると、local_settingsファイルを編集し、これをTrueに設定します。例
OPENSTACK_CINDER_FEATURES = { 'enable_backup': True, }OPENSTACK_CINDER_FEATURES = { 'enable_backup': True, }Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. Ceph ブロックデバイスを使用するように Glance の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform は、Ceph ブロックデバイスを使用する Glance を設定できます。
前提条件
- Glance ノードへのルートレベルのアクセス。
手順
デフォルトで Ceph ブロックデバイスを使用するには、
/etc/glance/glance-api.confファイルを編集します。別のプールを使用した場合は、ユーザーまたは Ceph の設定ファイルの適切な値が適用されます。必要に応じて以下の設定のコメント設定を解除し、値を変更します。vim /etc/glance/glance-api.conf
[root@glance ~]# vim /etc/glance/glance-api.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow CoW (copy-on-write) クローン作成を有効にするには、
show_image_direct_urlをTrueに設定します。show_image_direct_url = True
show_image_direct_url = TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要CoW を有効にすると、Glance の API 経由でバックエンドの場所を公開するため、エンドポイントは一般にアクセスできないはずです。
必要に応じてキャッシュ管理を無効にします。
flavorは、keystone+cachemanagementではなく、keystoneにのみ設定する必要があります。flavor = keystone
flavor = keystoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat では、イメージに以下のプロパティーを推奨します。
hw_scsi_model=virtio-scsi hw_disk_bus=scsi hw_qemu_guest_agent=yes os_require_quiesce=yes
hw_scsi_model=virtio-scsi hw_disk_bus=scsi hw_qemu_guest_agent=yes os_require_quiesce=yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow virtio-scsiコントローラーのパフォーマンスが向上し、破棄操作に対応します。SCSI/SAS ドライブを使用するシステムの場合は、そのコントローラーにすべての Cinder ブロックデバイスを接続します。また、QEMU ゲストエージェントを有効にし、QEMU ゲストエージェントを介してfs-freeze/thaw呼び出しを送信します。
3.4. Ceph ブロックデバイスを使用する Nova の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform は、Ceph ブロックデバイスを使用する Nova を設定できます。
一時バックエンドストレージデバイスを使用するように各 Nova ノードを設定する必要があります。これにより、すべての仮想マシンが Ceph ブロックデバイスを使用できるようになります。
前提条件
- Nova ノードへのルートレベルのアクセス。
手順
Ceph 設定ファイルを編集します。
vim /etc/ceph/ceph.conf
[root@nova ~]# vim /etc/ceph/ceph.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のセクションを Ceph 設定ファイルの
[client]セクションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 管理ソケットとログファイル用に新規ディレクトリーを作成し、
qemuユーザーおよびlibvirtdグループを使用するディレクトリーのパーミッションを変更します。mkdir -p /var/run/ceph/guests/ /var/log/ceph/ chown qemu:libvirt /var/run/ceph/guests /var/log/ceph/
[root@nova ~]# mkdir -p /var/run/ceph/guests/ /var/log/ceph/ [root@nova ~]# chown qemu:libvirt /var/run/ceph/guests /var/log/ceph/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ディレクトリーは SELinux または AppArmor が許可している必要があります。
それぞれの Nova ノードで、
/etc/nova/nova.confファイルを編集します。[libvirt]セクションで、以下の設定を設定します。例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rbd_user_secretの UUID は、uuid-secret.txtファイルの UUID に置き換えます。
3.5. OpenStack サービスの再起動 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform サービスを再起動すると、Ceph ブロックデバイスドライバーをアクティベートできます。
前提条件
- Red Hat OpenStack Platform ノードへのルートレベルのアクセス。
手順
- ブロックデバイスプール名と Ceph ユーザー名を設定ファイルに読み込みます。
該当する設定ファイルを変更したら、適切な OpenStack サービスを再起動します。
systemctl restart openstack-cinder-volume systemctl restart openstack-cinder-backup systemctl restart openstack-glance-api systemctl restart openstack-nova-compute
[root@osp ~]# systemctl restart openstack-cinder-volume [root@osp ~]# systemctl restart openstack-cinder-backup [root@osp ~]# systemctl restart openstack-glance-api [root@osp ~]# systemctl restart openstack-nova-computeCopy to Clipboard Copied! Toggle word wrap Toggle overflow