オーバークラウドの既存 Red Hat Ceph クラスターとの統合

Red Hat OpenStack Platform 15

オーバークラウドでスタンドアロンの Red Hat Ceph Storage を使用するための設定

概要

本ガイドでは、Red Hat OpenStack Platform director を使用して、オーバークラウドを既存のスタンドアロン Red Hat Ceph クラスターと統合する方法について説明します。

第1章 はじめに

Red Hat OpenStack Platform director は、オーバークラウド と呼ばれるクラウド環境を作成します。director は、Red Hat Ceph Storage (director で作成した Ceph Storage クラスターおよび既存の Ceph Storage クラスターの両方) との統合を含む、オーバークラウドの追加機能を設定することができます。

1.1. Ceph Storage の概要

Red Hat Ceph Storage は、優れたパフォーマンス、信頼性、スケーラビリティーを提供するように設計された、分散型のデータオブジェクトストアです。非構造化データに対応しており、クライアントが新しいタイプのオブジェクトインターフェースと従来のインターフェースを同時に使用できる分散型のオブジェクトストアは、今後のストレージのあるべき姿です。Ceph デプロイメントはすべて、2 種類のデーモンで構成される Ceph Storage クラスター を中心とします。

Ceph OSD (Object Storage Daemon)
Ceph OSD は、Ceph クライアントの代わりにデータを格納します。また、Ceph OSD は Ceph ノードの CPU とメモリーを使用して、データの複製、リバランス、復旧、監視、レポート作成を実行します。
Ceph Monitor
Ceph monitor は、ストレージクラスターの現在の状態を含む Ceph Storage クラスターのマッピングのマスターコピーを管理します。

Red Hat Ceph Storage に関する詳細は、『Red Hat Ceph Storage Architecture Guide』を参照してください。

重要

本ガイドでは、Ceph Block Storage および Ceph Object Gateway(RGW)の統合情報を提供します。Ceph File(CephFS)ストレージに関する情報は含まれません。

1.2. シナリオの定義

本ガイドでは、既存の Ceph Storage クラスターをオーバークラウドと統合する手順について説明します。この場合、director はストレージ用途に Ceph Storage クラスターを使用するようにオーバークラウドを設定します。クラスターそのものは、オーバークラウド設定とは独立して管理およびスケーリングします。

第2章 オーバークラウドノードの準備

本章のシナリオでは、オーバークラウドは 6 台のノードで構成されます。

  • 高可用性のコントローラーノード 3 台
  • コンピュートノード 3 台

director は、独自のノードで構成される独立した Ceph Storage クラスターをオーバークラウドに統合します。このクラスターは、オーバークラウドとは別々に管理されます。たとえば、Ceph Storage クラスターは、OpenStack Platform director ではなく Ceph 管理ツールを使用してスケーリングします。詳しくは、Red Hat Ceph Storage のドキュメントを参照してください。

2.1. Ceph Storage のデプロイメント前の検証

オーバークラウドのデプロイメントが失敗しないようにするには、必要なパッケージがサーバーに存在することを確認します。

2.1.1. ceph-ansible パッケージバージョンの確認

アンダークラウドには Ansible ベースの検証が含まれ、これを実行してオーバークラウドをデプロイする前に潜在的な問題を特定することができます。これらの検証は、典型的な問題が発生する前にそれらを特定し、オーバークラウドのデプロイメントの失敗を回避するのに役立ちます。

手順

ceph-ansible パッケージの修正バージョンがインストールされていることを確認してください。

$ ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/openstack-tripleo-validations/validations/ceph-ansible-installed.yaml

2.1.2. 事前にプロビジョニングされたノード用のパッケージの確認

オーバークラウドのデプロイメントで事前にプロビジョニングされたノードを使用する場合には、Ceph サービスをホストするオーバークラウドノードに必要なパッケージがサーバーにあることを確認することができます。

事前にプロビジョニング されたノードの詳細は、「事前にプロビジョニングされたノードを使用した基本的なオーバークラウドの設定」を参照して ください。

手順

サーバーに必要なパッケージが含まれていることを確認します。

ansible-playbook -i /usr/bin/tripleo-ansible-inventory /usr/share/openstack-tripleo-validations/validations/ceph-dependencies-installed.yaml

2.2. 既存の Ceph Storage クラスターの設定

  1. お使いの環境に適した Ceph クラスターに以下のプールを作成します。

    • volumes: OpenStack Block Storage (cinder) のストレージ
    • images: OpenStack Image Storage (glance) のストレージ
    • vms: インスタンスのストレージ
    • backups: OpenStack Block Storage Backup (cinder-backup) のストレージ
    • metrics: OpenStack Telemetry Metrics (gnocchi) のストレージ

      以下のコマンドは指針として使用してください。

      [root@ceph ~]# ceph osd pool create volumes PGNUM
      [root@ceph ~]# ceph osd pool create images PGNUM
      [root@ceph ~]# ceph osd pool create vms PGNUM
      [root@ceph ~]# ceph osd pool create backups PGNUM
      [root@ceph ~]# ceph osd pool create metrics PGNUM

      PGNUM配置グループ の数に置き換えます。1 OSD につき 100 程度を推奨します。たとえば、OSD の合計数を 100 で乗算して、レプリカ数で除算します (osd pool default size)。適切な値を判断するには Ceph Placement Groups (PGs) per Pool Calculator を使用することを推奨します。

  2. 以下の機能を指定して client.openstack ユーザーを Ceph クラスターに作成します。

    • cap_mgr: “allow *”
    • cap_mon: profile rbd
    • cap_osd: profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images, profile rbd pool=backups, profile rbd pool=metrics

      以下のコマンドは指針として使用してください。

      [root@ceph ~]# ceph auth add client.openstack mgr 'allow *' mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images, profile rbd pool=backups, profile rbd pool=metrics'
  3. client.openstack ユーザー向けに作成された Ceph クライアントキーをメモします。

    [root@ceph ~]# ceph auth list
    ...
    [client.openstack]
    	key = AQC+vYNXgDAgAhAAc8UoYt+OTz5uhV7ItLdwUw==
    	caps mgr = "allow *"
    	caps mon = "profile rbd"
    	caps osd = "profile rbd pool=volumes, profile rbd pool=vms, profile rbd pool=images, profile rbd pool=backups, profile rbd pool=metrics"
    ...

この例の key 値 (AQC+vYNXgDAgAhAAc8UoYt+OTz5uhV7ItLdwUw==) は Ceph クライアントキーです。

  1. 最後に、Ceph Storage クラスターの file system ID をメモします。この値は、クラスターの設定ファイルにある fsid の設定で指定されています ([global] のセクション下)。

    [global]
    fsid = 4b5c8c0a-ff60-454b-a1b4-9747aa737d19
    ...
    注記

    Ceph Storage クラスターの設定ファイルに関する詳しい情報は、『Red Hat Ceph Storage Configuration Guide』「Configuration Reference」を参照してください。

Ceph クライアントキーおよびファイルシステム ID はいずれも、後ほど「3章既存 Ceph クラスターとの統合」で使用します。

2.3. stack ユーザーの初期化

stack ユーザーとして director ホストにログインし、以下のコマンドを実行して director の設定を初期化します。

$ source ~/stackrc

このコマンドでは、director の CLI ツールにアクセスする認証情報が含まれる環境変数を設定します。

2.4. ノードの登録

ノード定義のテンプレート (instackenv.json) は JSON ファイル形式で、ノード登録用のハードウェアおよび電源管理の情報が含まれています。以下に例を示します。

{
    "nodes":[
        {
            "mac":[
                "bb:bb:bb:bb:bb:bb"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.0.2.205"
        },
        {
            "mac":[
                "cc:cc:cc:cc:cc:cc"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.0.2.206"
        },
        {
            "mac":[
                "dd:dd:dd:dd:dd:dd"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.0.2.207"
        },
        {
            "mac":[
                "ee:ee:ee:ee:ee:ee"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.0.2.208"
        }
        {
            "mac":[
                "ff:ff:ff:ff:ff:ff"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.0.2.209"
        }
        {
            "mac":[
                "gg:gg:gg:gg:gg:gg"
            ],
            "cpu":"4",
            "memory":"6144",
            "disk":"40",
            "arch":"x86_64",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"p@55w0rd!",
            "pm_addr":"192.0.2.210"
        }
    ]
}

手順

  1. インベントリーファイルを作成したら、そのファイルを stack ユーザーのホームディレクトリーに保存します (/home/stack/instackenv.json)。
  2. stack ユーザーを初期化し、続いて instackenv.json インベントリーファイルを director にインポートします。

    $ source ~/stackrc
    $ openstack overcloud node import ~/instackenv.json

    openstack overcloud node import コマンドは、インベントリーファイルをインポートし、各ノードを director に登録します。

  3. カーネルと ramdisk イメージを各ノードに割り当てます。
$ openstack overcloud node configure <node>

director でのノードの登録、設定が完了しました。

2.5. ノードの手動でのタグ付け

各ノードの登録後、ハードウェアを検査して、ノードを特定のプロファイルにタグ付けする必要があります。プロファイルタグを使用してノードをフレーバーに照合してから、フレーバーをデプロイメントロールに割り当てます。

新規ノードを検査してタグ付けするには、以下の手順を実施します。

  1. ハードウェアのイントロスペクションをトリガーして、各ノードのハードウェア属性を取得します。

    $ openstack overcloud node introspect --all-manageable --provide
    • --all-manageable オプションを使用して、管理状態にあるノードのみをイントロスペクションします。ここでは、すべてのノードが管理状態にあります。
    • --provide オプションは、イントロスペクション後に全ノードを active の状態にリセットします。

      重要

      このプロセスが正常に完了したことを確認します。ベアメタルノードの場合には、通常 15 分ほどかかります。

  2. ノード一覧を取得して UUID を把握します。

    $ openstack baremetal node list
  3. 各ノードの properties/capabilities パラメーターに profile オプションを追加して、ノードを特定のプロファイルに手動でタグ付けします。profile オプションを追加すると、適切なプロファイルにノードをタグ付けします。

    注記

    手動でのタグ付けの代わりに、Automated Health Check (AHC) ツールを使用し、ベンチマークデータに基づいて、多数のノードに自動でタグ付けします。

    たとえば、3 つのノードが control プロファイルを使用し、別の 3 つのノードが compute プロファイルを使用するようにタグ付けするには、以下のコマンドを実行します。

    $ ironic node-update 1a4e30da-b6dc-499d-ba87-0bd8a3819bc0 add properties/capabilities='profile:control,boot_option:local'
    $ ironic node-update 6faba1a9-e2d8-4b7c-95a2-c7fbdc12129a add properties/capabilities='profile:control,boot_option:local'
    $ ironic node-update 5e3b2f50-fcd9-4404-b0a2-59d79924b38e add properties/capabilities='profile:control,boot_option:local'
    $ ironic node-update 484587b2-b3b3-40d5-925b-a26a2fa3036f add properties/capabilities='profile:compute,boot_option:local'
    $ ironic node-update d010460b-38f2-4800-9cc4-d69f0d067efe add properties/capabilities='profile:compute,boot_option:local'
    $ ironic node-update d930e613-3e14-44b9-8240-4f3559801ea6 add properties/capabilities='profile:compute,boot_option:local'

profile オプションを追加すると、適切なプロファイルにノードをタグ付けします。

注記

手動でのタグ付けの代わりに、Automated Health Check (AHC) ツールを使用し、ベンチマークデータに基づいて、多数のノードに自動でタグ付けします。

第3章 既存 Ceph クラスターとの統合

director の提供する Heat テンプレートコレクションには、オーバークラウドをデプロイするのに必要なテンプレートおよび環境ファイルがすでに含まれます。

デプロイメント時 (「オーバークラウドのデプロイ」) にこの環境ファイルを呼び出し、デプロイ中のオーバークラウドに既存の Ceph クラスターを統合します。

  • /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml

director は ceph-ansible を使用して既存 Ceph クラスターとの統合を行いますが、デフォルトでは ceph-ansible はアンダークラウドにインストールされません。以下のコマンドを実行して、アンダークラウドに ceph-ansible パッケージをインストールしてください。

sudo dnf install -y ceph-ansible

統合を設定するには、Ceph クラスターの詳細を director に提供する必要があります。そのために、カスタム環境ファイル を使用します。これにより、/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml の使用するデフォルト設定を上書きすることができます。

  1. 以下のカスタム環境ファイルを作成します。

    /home/stack/templates/ceph-config.yaml

  2. このファイルに parameter_defaults: ヘッダーを追加します。

    parameter_defaults:
  3. このヘッダーの下に、/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml を上書きするすべてのパラメーターを設定します。少なくとも、以下のパラメーターを設定する必要があります。

    • CephClientKey: Ceph Storage クラスターの Ceph クライアントキー。これは、「既存の Ceph Storage クラスターの設定」 で先ほど取得した key の値です(例: AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ==)。
    • CephClusterFSID: Ceph Storage クラスターのファイルシステム ID。これは、「既存の Ceph Storage クラスターの設定」 で先ほど取得した Ceph Storage クラスターの設定ファイルの fsid の値です(例: 4b5c8c0a-ff60-454b-a1b4-9747aa737d19)。
    • CephExternalMonHost: Ceph Storage クラスターの全 MON ホストの IP をコンマ区切りにしたリストです (例: 172.16.1.7, 172.16.1.8)。

以下に例を示します。

parameter_defaults:
  CephClientKey: AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ==
  CephClusterFSID: 4b5c8c0a-ff60-454b-a1b4-9747aa737d19
  CephExternalMonHost: 172.16.1.7, 172.16.1.8

必要な場合は、以下のパラメーターと値を使用して、OpenStack プールとクライアントユーザーの名前を設定します。

  • CephClientUserName: openstack
  • NovaRbdPoolName: vms
  • CinderRbdPoolName: volumes
  • GlanceRbdPoolName: images
  • CinderBackupRbdPoolName: backups
  • GnocchiRbdPoolName: metrics

カスタム環境ファイルにオーバークラウドパラメーターを追加することもできます。たとえば、neutron のネットワーク種別を vxlan に設定するには、parameter_defaults に以下の設定を追加します。

  NeutronNetworkType: vxlan

3.1. 以前の Red Hat Ceph Storage バージョンとの後方互換性

Red Hat OpenStack Platform を以前のバージョンの外部 Ceph Storage クラスターと統合する場合には、後方互換性を有効にしなければならない場合があります。

Red Hat Ceph Storage 1.3 を実行している場合には、カスタム環境ファイル(ここでは「 3章既存 Ceph クラスターとの統合」で作成した /home/stack/templates/ceph-config )の parameter_defaults に以下の行を追加する必要があります。

parameter_defaults:
  RbdDefaultFeatures: 1

外部の Red Hat Ceph Storage 2.x クラスターを実行している場合には、このパラメーターを使用する必要はありません。Red Hat OpenStack Platform の本バージョンは Red Hat Ceph Storage 3.x クライアントを使用しますが、これらのクライアントは Red Hat Ceph Storage 2.x サーバーとの互換性を維持しています。

3.2. Assigning Nodes and Flavors to Roles

オーバークラウドのデプロイメントのプランニングでは、各ロールに割り当てるノード数とフレーバーを指定する必要があります。すべての Heat テンプレートのパラメーターと同様に、これらのロールの仕様はカスタム環境ファイル(ここでは「 3章既存 Ceph クラスターとの統合」で作成した /home/stack/templates/ceph-config )の parameter_defaults セクションで宣言する必要があります。

この設定には、以下のパラメーターを使用します。

表3.1 オーバークラウドノードのロールとフレーバー

Heat テンプレートのパラメーター説明

ControllerCount

スケールアウトするコントローラーノード数

OvercloudControlFlavor

コントローラーノードに使用するフレーバー (control)

ComputeCount

スケールアウトするコンピュートノード数

OvercloudComputeFlavor

コンピュートノードに使用するフレーバー (compute)

たとえば、オーバークラウドが各ロール (Controller および Compute) に 3 つずつノードをデプロイするように設定するには、parameter_defaults に以下の設定を追加します。

parameter_defaults:
  ControllerCount: 3
  ComputeCount: 3
  OvercloudControlFlavor: control
  OvercloudComputeFlavor: compute

3.3. Ceph Storage を使用する Red Hat OpenStack Platform 向けの Ceph コンテナー

OpenStack Platform が Ceph を使用するように設定するには、Ceph コンテナーが必要です。これは、外部の Ceph クラスターの場合でも同じです。Red Hat Enterprise Linux 8 と互換性を持たせるには、OpenStack Platform 15 には Red Hat Ceph Storage 4 が必要です。Ceph Storage 4 コンテナーは、registry.redhat.io (認証が必要なレジストリー) でホストされます。

Container image preparation parameters 」で説明されているように、heat 環境パラメーター ContainerImageRegistryCredentials を使用して registry.redhat.io で認証することができます。

3.4. オーバークラウドのデプロイ

注記

アンダークラウドのインストール時に、undercloud.conf ファイルに generate_service_certificate=false を設定します。設定しない場合は、オーバークラウドのデプロイ時にトラストアンカーを挿入する必要があります。トラストアンカーの挿入方法についての詳細は、『 オーバークラウドの 高度なカスタマイズ』 ガイドの「オーバークラウドのパブリックエンドポイントでの SSL/TLS の有効化 」を参照してください。

オーバークラウドの作成には、openstack overcloud deploy コマンドに追加の引数を指定する必要があります。以下に例を示します。

$ openstack overcloud deploy --templates \
  -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml \
  -e /home/stack/templates/ceph-config.yaml \
  -e --ntp-server pool.ntp.org \

上記のコマンドは、以下のオプションを使用します。

  • --templates: デフォルトの Heat テンプレートコレクション (/usr/share/openstack-tripleo-heat-templates/) からオーバークラウドを作成します。
  • -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml: 既存の Ceph クラスターをオーバークラウドに統合するように director を設定します。
  • -e /home/stack/templates/ceph-config.yaml: -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml の設定するデフォルトを上書きするためのカスタム環境ファイルを追加します。ここでは、「3章既存 Ceph クラスターとの統合」で作成したカスタム環境ファイルです。
  • --ntp-server pool.ntp.org: NTP サーバーを設定します。
ヒント

アンサーファイル を使用して、すべてのテンプレートおよび環境ファイルを呼び出すこともできます。たとえば、以下のコマンドを使用して、同一のオーバークラウドをデプロイすることができます。

$ openstack overcloud deploy \
  --answers-file /home/stack/templates/answers.yaml \
  --ntp-server pool.ntp.org

この場合、アンサーファイル /home/stack/templates/answers.yaml の内容は以下のようになります。

templates: /usr/share/openstack-tripleo-heat-templates/
environments:
  - /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible-external.yaml \
  - /home/stack/templates/ceph-config.yaml \

詳細は、「 オーバークラウドデプロイメントへの環境ファイルの追加」を 参照してください。

オプションの完全な一覧を表示するには、以下を実行します。

$ openstack help overcloud deploy

詳しくは、『 director のインストールと 使用方法』の「CLI ツールを使用した基本的なオーバークラウド の設定」を参照してください。

オーバークラウドの作成プロセスが開始され、director によりノードがプロビジョニングされます。このプロセスは完了するまで多少時間がかかります。オーバークラウドの作成のステータスを確認するには、stack ユーザーとして別のターミナルを開き、以下を実行します。

$ source ~/stackrc
$ openstack stack list --nested

この設定では、オーバークラウドが外部の Ceph Storage クラスターを使用するように設定します。このクラスターは、オーバークラウドから独立して、管理される点に注意してください。たとえば、Ceph Storage クラスターは、OpenStack Platform director ではなく Ceph 管理ツールを使用してスケーリングします。

第4章 オーバークラウドへのアクセス

director は、director ホストからオーバークラウドに対話するための設定を行い、認証をサポートするスクリプトを作成します。director は、このファイル (overcloudrc) を stack ユーザーのホームディレクトリーに保存します。このファイルを使用するには、以下のコマンドを実行します。

$ source ~/overcloudrc

これにより、director ホストの CLI からオーバークラウドと対話するために必要な環境変数が読み込まれます。director のホストとの対話に戻るには、以下のコマンドを実行します。

$ source ~/stackrc