NFS バックエンドに CephFS を使用した Shared File Systems サービスのデプロイ

Red Hat OpenStack Platform 16.2

NFS バックエンドに CephFS を使用した Red Hat OpenStack Platform Shared File Systems サービスについての理解、およびその使用と管理

OpenStack Documentation Team

概要

NFS バックエンドに Red Hat Ceph File System (CephFS) を使用した、Red Hat OpenStack Platform (RHOSP) 環境の Shared File Systems サービス (manila) のインストール、設定、および検証

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ をご覧ください。

Red Hat ドキュメントへのフィードバック (英語のみ)

Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。

Jira でドキュメントのフィードバックを提供する

ドキュメントに関するフィードバックを提供するには、Create Issue フォームを使用します。Red Hat OpenStack Platform Jira プロジェクトで Jira Issue が作成され、フィードバックの進行状況を追跡できます。

  1. Jira にログインしていることを確認してください。Jira アカウントをお持ちでない場合は、アカウントを作成してフィードバックを送信してください。
  2. Create Issue をクリックして、Create Issue ページを開きます。
  3. Summary フィールドと Description フィールドに入力します。Description フィールドに、ドキュメントの URL、章またはセクション番号、および問題の詳しい説明を入力します。フォーム内の他のフィールドは変更しないでください。
  4. Create をクリックします。

第1章 NFS バックエンドに CephFS を使用した Shared File Systems サービス

NFS バックエンドに Ceph File System (CephFS) を使用した Shared File Systems サービス (manila) により、ブロックストレージおよびオブジェクトストレージ用と同じ Ceph クラスターを使用して、NFS プロトコルを介したファイル共有を提供することができます。詳しくは、Storage GuideConfiguring the Shared File Systems service (manila) を参照してください。

重要

RHOSP 16.0 以降では、NFS バックエンドに CephFS を使用した RHOSP Shared File Systems サービスは、Red Hat Ceph Storage バージョン 4.1 以降との組み合わせがサポート対象の設定です。システムにインストールされている Ceph Storage のバージョンを確認する方法についての詳細は、What are the Red Hat Ceph Storage releases and corresponding Ceph package versions? を参照してください。

CephFS は、高度にスケーラブルな Red Hat Ceph Storage のオープンソース分散ファイルシステムのコンポーネントで、統一された分散ストレージプラットフォームです。Ceph Storage は、Reliable Autonomic Distributed Object Store (RADOS) を使用してオブジェクトストレージ、ブロックストレージ、およびファイルストレージを実装します。POSIX に対応した CephFS は、Ceph ストレージクラスターへのファイルアクセスを提供します。

Shared File Systems サービス (manila) により、ユーザーは CephFS にファイル共有を作成し、NFS 4.1 を使用して NFS-Ganesha 経由でそのファイル共有にアクセスすることができます。NFS-Ganesha はファイル共有へのアクセスをコントロールし、NFS 4.1 プロトコルを使用してファイル共有をクライアントにエクスポートします。

Shared File Systems サービスは、RHOSP 内からこれらのファイル共有のライフサイクルを管理します。NFS バックエンドに CephFS を使用するようにサービスを設定した場合には、これらのファイル共有は CephFS クラスターから提供されますが、通常の NFS 共有として作成およびアクセスされます。

Shared File Systems サービスの詳細は、Storage GuideConfiguring the Shared File Systems service (manila) を参照してください。

1.1. ネイティブドライバーを使用する CephFS

CephFS ネイティブドライバーは、OpenStack Shared File Systems サービス (manila) と Red Hat Ceph Storage を結び付けます。Red Hat OpenStack (RHOSP) director を使用する場合、コントローラーノードはマネージャー、メタデータサーバー (MDS)、および モニター (MON) などの Ceph デーモンならびに Shared File Systems サービスをホストします。

コンピュートノードは 1 つまたは複数のプロジェクトをホストすることができます。以前はテナントと呼ばれていたプロジェクトは、以下の図では白い長方形で表示されます。プロジェクトには、ユーザー管理の仮想マシンが含まれています。これは、2 つの NIC を持つグレーのボックスで表されます。ceph および manila デーモンプロジェクトにアクセスするには、パブリック Ceph ストレージネットワーク経由でデーモンに接続します。

このネットワーク上で、Ceph オブジェクトストレージデーモン (OSD) の提供するストレージノードに保管されたデータにアクセスすることができます。プロジェクトがホストするインスタンスまたは仮想マシン (VM) は、2 つの NIC と共に起動します。1 つの NIC はストレージプロバイダーネットワーク専用で、2 つ目の NIC は外部プロバイダーネットワークに接続するためのプロジェクト所有のルーター専用です。

ストレージプロバイダーネットワークは、プロジェクト上で動作する仮想マシンをパブリック Ceph ストレージネットワークに接続します。Ceph パブリックネットワークは、Ceph オブジェクトストレージノード、メタデータサーバー (MDS)、およびコントローラーノードへのバックエンドアクセスを提供します。

ネイティブドライバーを使用する場合、CephFS では、クォータの適用、確実なプロジェクト間の分離、およびセキュリティー確保のために、クライアントおよびサーバーとの協調が必要になります。ネイティブドライバーを使用する CephFS は、プライベートクラウド上の信頼済みエンドユーザーが定義された環境で適切に機能します。この設定での協調および適切な動作のためには、ソフトウェアはユーザーの管理下で動作している必要があります。

cephfs nfs topology native driver

1.2. NFS バックエンドへの CephFS の使用

Shared File Systems サービス (manila) の NFS バックエンドに CephFS を使用する設定には、Ceph メタデータサーバー (MDS)、NFS バックエンドに CephFS を使用するためのゲートウェイ (NFS-Ganesha)、および Ceph クラスターサービスのコンポーネントが含まれます。Shared File Systems サービスの CephFS NFS ドライバーは、NFS-Ganesha ゲートウェイを使用して NFSv4 プロトコルによる CephFS ファイル共有へのアクセスを提供します。Ceph MDS サービスは、ファイルシステムのディレクトリーおよびファイル名を RADOS クラスターに保管されるオブジェクトにマッピングします。NFS ゲートウェイは、Ceph 等の異なるストレージバックエンドを使用して NFS ファイル共有を提供します。NFS-Ganesha サービスは、Ceph サービスと共にコントローラーノード上で実行されます。

インスタンスは、少なくとも 2 つの NIC と共に起動します。1 つの NIC はプロジェクトのルーターに接続され、2 つ目の NIC は StorageNFS ネットワークに接続され、そこから直接 NFS-Ganesha ゲートウェイに接続されます。インスタンスは、NFS プロトコルを使用してファイル共有をマウントします。Ceph OSD ノードがホストする CephFS ファイル共有は、NFS ゲートウェイを通じて提供されます。

NFS-Ganesha により、ユーザーのインスタンスは MDS および他の Ceph サービスに直接アクセスしなくなるので、セキュリティーが向上します。インスタンスは、Ceph デーモンに直接アクセスしません。

cephfs nfs topology nfs driver

1.3. Ceph サービスとクライアントアクセス

Ceph がオブジェクトストレージおよびブロックストレージを提供する際にデプロイされるモニター、OSD、Rados Gateway (RGW)、およびマネージャーサービスに加えて、CephFS には Ceph メタデータサービス (MDS) が必要です。また、NFS プロトコルを使用するネイティブ CephFS へのゲートウェイとして NFS-Ganesha サービスが必要です。ユーザーが直接アクセスできるオブジェクトストレージの場合には、RGW サービスもデプロイされます。ゲートウェイは Ceph パブリックネットワークにアクセスするために CephFS クライアントを実行し、エンドユーザーではなくシステムの管理下に置かれます。

NFS-Ganesha は、Ceph パブリックネットワークおよび新たな分離ネットワーク (StorageNFS) の両方とインターフェイスする専用のコンテナー内で実行されます。Red Hat OpenStack Platform (RHOSP) director のコンポーザブルネットワーク機能が、この分離ネットワークをデプロイしてコントローラーノードに接続します。クラウド管理者はネットワークを Networking (neutron) プロバイダーネットワークとして設定することができます。

NFS-Ganesha は Ceph パブリックネットワークを通じて CephFS にアクセスし、StorageNFS ネットワーク上のアドレスを使用してその NFS サービスをバインドします。

NFS 共有にアクセスするためには、StorageNFS ネットワークに接続される新たな NIC と共に、ユーザー仮想マシン (Compute (nova) インスタンス) をプロビジョニングします。CephFS ファイル共有のエクスポート場所は、StorageNFS ネットワーク上の NFS-Ganesha サーバーの仮想 IP を使用する標準的な NFS IP:<path> タプルとして表示されます。ネットワークはユーザー仮想マシンの IP アドレスを使用して、NFS 共有でのアクセス制御を行います。

Networking (neutron) セキュリティーグループが、プロジェクト 1 に属するユーザー仮想マシンが StorageNFS ネットワークを通じてプロジェクト 2 に属するユーザー仮想マシンにアクセスするのを防ぎます。プロジェクトは同じ CephFS ファイルシステムを共有しますが、ユーザー仮想マシンはエクスポートツリー下のファイル (/path/to/share1/…, /path/to/share2/…) にしかアクセスできないので、プロジェクトデータパスの分離が確保されます。

1.4. NFS バックエンドに CephFS を使用した Shared File Systems サービスの耐障害性

Red Hat OpenStack Platform (RHOSP) director が Ceph サービスデーモンを起動すると、これらのデーモンは自己の高可用性 (HA) 状態を管理し、一般的に、これらのデーモン用に複数のインスタンスが実行されます。これとは対照的に、本リリースでは、ファイル共有を提供することのできる NFS-Ganesha 用インスタンスは、常に 1 つだけです。

NFS バックエンドに CephFS を使用したファイル共有では、データパスに単一障害点が生じるのを避けるために、NFS-Ganesha はアクティブ/パッシブ設定 (Pacemaker-Corosync クラスターが管理) の RHOSP コントローラーノード上で実行されます。NFS-Ganesha は、複数のコントローラーノードに渡って仮想サービス IP アドレスを持つ仮想サービスとして機能します。

コントローラーノードに障害が発生した、あるいは特定のコントローラーノード上のサービスに障害が発生し、そのノードで復帰できない場合には、Pacemaker-Corosync は同じ仮想 IP アドレスを使用して新たな NFS-Ganesha インスタンスを別のコントローラーノード上で起動します。既存クライアントのマウントはファイル共有のエクスポート場所の仮想 IP アドレスを使用するので、これらのマウントは維持されます。

デフォルトの NFS マウントオプション設定および NFS 4.1 以降を使用している場合には、障害発生後に TCP 接続がリセットされ、クライアントが再接続されます。フェイルオーバー中は I/O 操作が一時的に応答しなくなりますが、機能は失われません。アプリケーション I/O も応答しなくなりますが、フェイルオーバーが完了すると処理が再開されます。

最大 90 秒の猶予期間 (クライアントがロックを再要求するのをサーバーが待機する期間) が経過するまで、新規接続や新たなロック状態などは拒否されます。NFS-Ganesha はクライアントのリストを維持し、すべてのクライアントがロックを再要求すると、その時点で猶予期間を終了します。

注記

猶予期間のデフォルト値は 90 秒です。この値を変更するには、NFSv4 Grace_Period 設定オプションを編集します。

第2章 NFS-Ganesha バックエンドに CephFS を使用する設定のインストール

NFS バックエンドに Ceph File System (CephFS) を使用する典型的な Red Hat OpenStack Platform (RHOSP) 環境は、以下の要素で設定されます。

  • コンテナー化された Ceph メタデータサーバー (MDS)、Ceph モニター (MON)、manila、および NFS-Ganesha サービスを実行する OpenStack コントローラーノード。これらのサービスのいくつかは、同じノードに共存する場合や、専用のノードを持つ場合があります。
  • Ceph ストレージノード上で動作するコンテナー化されたオブジェクトストレージデーモン (OSD) を持つ Ceph ストレージクラスター
  • NFS 共有のプロビジョニング用に、プロジェクトから NFS-Ganesha サービスへのアクセスを提供する StorageNFS 分離ネットワーク
重要

NFS バックエンドに CephFS を使用した Shared File Systems サービス (manila) は、Manila CSI を使用した Red Hat OpenShift Container Platform へのファイル共有の提供を完全にサポートします。このソリューションは、大規模なデプロイメントを対象としていません。重要な推奨事項は、https://access.redhat.com/articles/6667651 を参照してください。

Shared File Systems サービス (manila) の提供する API により、プロジェクトはファイルシステムの共有を要求することができます。これは、ドライバーモジュールにより実施されます。Red Hat CephFS のドライバー manila.share.drivers.cephfs.driver.CephFSDriver により、Shared File Systems サービスを CephFS バックエンドとして使用することができます。RHOSP director は、NFS-Ganesha ゲートウェイをデプロイするようにドライバーを設定します。これにより、NFS 4.1 プロトコルを使用して CephFS ファイル共有が提供されます。

RHOSP director を使用してオーバークラウドに CephFS バックエンドを持つ Shared File Systems サービスをデプロイすると、heat テンプレートで定義された必要なストレージネットワークが自動的に作成されます。ネットワークプランニングに関する詳しい情報は、director のインストールと使用方法オーバークラウドネットワーク を参照してください。

ノードの /etc/manila/manila.conf ファイルを編集して Shared File Systems サービスを手動で設定することができますが、今後のオーバークラウド更新時に、RHOSP director はあらゆる設定を上書きすることができます。Shared File Systems のバックエンドを設定する場合には、director を使用する方法を推奨します。RHOSP director を使用して、ストレージトラフィック用の追加の StorageNFS ネットワークを作成します。

注記

Red Hat OpenStack Platform (RHOSP) director により設定されていない外部にデプロイされた Ceph クラスターに NFS バックエンドに CephFS を使用する設定を追加する設定はサポートの対象です。director で定義することのできる CephFS バックエンドは、現状 1 つだけです。詳しい情報は、Integrating an Overcloud with an Existing Red Hat Ceph Storage Clusterガイドの Integrate with an existing Ceph Storage cluster を参照してください。

2.1. NFS-Ganesha のインストール要件による CephFS

NFS バックエンドに CephFS を使用する設定は、Red Hat OpenStack Platform (RHOSP) バージョン 13 以降、完全にサポートされています。RHOSP 16.0 以降では、NFS バックエンドに CephFS を使用した RHOSP Shared File Systems サービスは、Red Hat Ceph Storage バージョン 4.1 以降との組み合わせがサポート対象の設定です。システムにインストールされている Ceph Storage のバージョンを確認する方法についての詳細は、What are the Red Hat Ceph Storage releases and corresponding Ceph package versions? を参照してください。

前提条件

  • デフォルトの動作と同様に、Shared File Systems サービスをコントローラーノードにインストールする。
  • NFS-Ganesha ゲートウェイサービスをコントローラーノードの Pacemaker クラスターにインストールする。
  • 1 つの CephFS バックエンドのインスタンスだけが Shared File Systems サービスを使用するように設定する。その他の CephFS 以外のバックエンドは、1 つの CephFS バックエンドと共に使用することができます。

2.2. ファイル共有

OpenStack Shared File Systems サービス (manila)、Ceph File System (CephFS)、および NFS バックエンドに Ceph を使用する設定では、ファイル共有の取り扱いが異なります。

Shared File Systems サービスが提供するそれぞれのファイル共有は、個別のファイルシステムの名前空間であり、また特定のサイズを持つストレージのユニットです。元来、共有ファイルシステムのストレージでは、複数のクライアントが任意のファイル共有に接続してデータの読み取りおよび書き込みが可能ですが、クライアントが接続できるためには、Shared File Systems サービスのアクセス制御 API を通じて各クライアントにファイル共有へのアクセス権限を付与する必要があります。

CephFS では、ファイル共有は、特定のストレージプールまたは名前空間をポイントする、クォータおよびレイアウトが定義されたディレクトリーとして扱われます。CephFS のクォータは、ディレクトリーのサイズを Shared File Systems サービスが作成するファイル共有のサイズに制限します。クライアントの IP アドレスを指定して、NFS 共有を介した CephFS へのアクセスを提供します。

NFS バックエンドに CephFS を使用する設定では、ファイル共有のプロビジョニングおよびアクセスに NFS プロトコルが使用されます。NFS プロトコルはセキュリティーにも対応します。

2.3. ceph-ansible パッケージのインストール

コンテナー化された Ceph をデプロイするには、アンダークラウドノードに ceph-ansible パッケージをインストールします。

手順

  1. アンダークラウドノードに stack ユーザーとしてログインします。
  2. ceph-ansible パッケージをインストールします。

    [stack@undercloud-0 ~]$ sudo dnf install -y ceph-ansible
    [stack@undercloud-0 ~]$ sudo dnf list ceph-ansible
    ...
    Installed Packages
    ceph-ansible.noarch    4.0.23-1.el8cp      @rhelosp-ceph-4-tools

2.4. カスタムロールファイルの生成

セキュリティーのために、NFS を介して CephFS を使用する場合は、分離されたネットワークを介してのみ Ceph NFS サーバーにアクセスできるように、NFS トラフィックを別のネットワークに分離します。デプロイ担当者は、分離されたネットワークをクラウド内の選択したプロジェクトグループに制限できます。Red Hat OpenStack director には、専用の StorageNFS ネットワークをデプロイするためのサポートが付属しています。StorageNFS ネットワークを設定して使用するには、カスタムの Controller ロールが必要です。

重要

NFS トラフィック用の分離されたネットワークの作成を省略することができます。ただし、Red Hat は、信頼されていないクライアントを含む実稼働環境へのこのようなセットアップを強く推奨しません。StorageNFS ネットワークを省略すると、director は、外部ネットワークなどの分離されていない共有ネットワーク上の Ceph NFS サーバーに接続できます。分離されていない共有ネットワークは、通常、クラウド内のすべてのユーザープライベートネットワークにルーティングできます。NFS サーバーがそのようなネットワーク上にある場合、特定のクライアント IP アクセスルールを介して OpenStack Shared File Systems サービス (manila) 共有へのアクセスを制御することはできません。ユーザーは、共有へのアクセスを許可するために、一般的な 0.0.0.0/0 IP を使用する必要があります。共有は、エクスポートパスを見つけた人なら誰でもマウントできます。

ControllerStorageNFS カスタムロールにより、StorageNFS 分離ネットワークを設定します。このロールはデフォルトの Controller.yaml ロールファイルに類似していますが、StorageNFS ネットワークおよび CephNfs サービス (OS::TripleO::Services:CephNfs コマンドで表される) が追加されています。

[stack@undercloud ~]$ cd /usr/share/openstack-tripleo-heat-templates/roles
[stack@undercloud roles]$ diff Controller.yaml ControllerStorageNfs.yaml
16a17
> 	- StorageNFS
50a45
> 	- OS::TripleO::Services::CephNfs

openstack overcloud roles generate コマンドについての詳しい情報は、オーバークラウドの高度なカスタマイズロール を参照してください。

openstack overcloud roles generate コマンドにより、-o 以降に指定したサービスが含まれるカスタム roles_data.yaml ファイルが作成されます。以下の例では、作成される roles_data.yaml ファイルには、ControllerStorageNfsCompute、および CephStorage のサービスが含まれます。

注記

既存の roles_data.yaml ファイルがある場合には、それを変更して設定ファイルに ControllerStorageNfsCompute、および CephStorage サービスを追加します。詳しい情報は、Advanced Overcloud CustomizationRoles を参照してください。

手順

  1. アンダークラウドノードに stack ユーザーとしてログインします。
  2. openstack overcloud roles generate コマンドを使用して、roles_data.yaml ファイルを作成します。

    [stack@undercloud ~]$ openstack overcloud roles generate --roles-path /usr/share/openstack-tripleo-heat-templates/roles -o /home/stack/roles_data.yaml ControllerStorageNfs Compute CephStorage

2.5. 更新された環境のデプロイ

環境をデプロイする準備が整ったら、NFS-Ganesha と共に CephFS を実行するのに必要なカスタム環境およびロールを指定して、openstack overcloud deploy コマンドを使用します。

オーバークラウドのデプロイコマンドでは、その他の必要なオプションに加えて以下のオプションを指定します。

機能オプション関連情報

network_data_ganesha.yaml を使用して新たな StorageNFS ネットワークを追加する。

-n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml

StorageNFS および network_data_ganesha.yaml ファイルNFS トラフィックを別のネットワークに分離したくない場合は、このオプションを省略できます。詳細は、カスタムロールファイルの生成 を参照してください。

前のセクションで作成した roles_data.yaml ファイルにより定義したカスタムロールを追加する。

-r /home/stack/roles_data.yaml

NFS トラフィックを別のネットワークに分離したくない場合は、このオプションを省略できます。詳細は、カスタムロールファイルの生成 を参照してください。

ceph-ansible.yaml を使用して Ceph デーモンをデプロイする。

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

Deploying an Overcloud with Containerized Red Hat CephInitiating Overcloud Deployment

ceph-mds.yaml を使用して Ceph メタデータサーバーをデプロイする。

-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-mds.yaml

コンテナー化された Red Hat Ceph を持つオーバークラウドのデプロイオーバークラウドデプロイメントの開始

NFS バックエンドに CephFS を使用する Shared File Systems (manila) サービスをデプロイする。director と共に NFS-Ganesha を設定する。

-e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml

manila-cephfsganesha-config.yaml 環境ファイル

以下は、CephFS を使用するための NFS-Ganesha、Ceph クラスター、Ceph MDS、および StorageNFS 分離ネットワークをデプロイするオプションを指定した openstack overcloud deploy コマンドの例です。

[stack@undercloud ~]$ openstack overcloud deploy \
--templates /usr/share/openstack-tripleo-heat-templates  \
-n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml \
-r /home/stack/roles_data.yaml \
-e /home/stack/containers-default-parameters.yaml   \
-e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml   \
-e /home/stack/network-environment.yaml  \
-e/usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml  \
-e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-mds.yaml  \
-e /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml

openstack overcloud deploy コマンドについての詳しい情報は、director のインストールと使用方法デプロイメントコマンド を参照してください。

2.5.1. StorageNFS および network_data_ganesha.yaml ファイル

コンポーザブルネットワークを使用して、カスタムネットワークを定義して、それを任意のロールに割り当てます。標準の network_data.yaml ファイルを使用する代わりに、network_data_ganesha.yaml ファイルを使用して StorageNFS コンポーザブルネットワークを設定することができます。これらのロールは、共に /usr/share/openstack-tripleo-heat-templates ディレクトリーから利用可能です。

IMPORTANT
Storage NFS ネットワークを定義しない場合、director はデフォルトで外部ネットワークに設定されます。外部ネットワークは、テストおよびプロトタイプ環境で便利ですが、外部ネットワークのセキュリティーは実稼働環境には十分ではありません。たとえば、外部ネットワークで NFS サービスを公開する場合、サービス拒否 (DoS) 攻撃により、NFS 共有のコンシューマーだけでなく、すべてのクラウドユーザーへのコントローラー API アクセスが中断される可能性があります。これとは対照的に、専用の Storage NFS ネットワークに NFS サービスをデプロイすると、DoS 攻撃で、クラウド内の NFS 共有だけを対象にすることができてしまいます。潜在的なセキュリティーリスクに加えて、NFS サービスを外部ネットワークにデプロイする際に、ファイル共有へのアクセス制御に追加のルーティング設定が必要になります。ただし、Storage NFS ネットワークでは、ネットワーク上でクライアント IP アドレスを使用して、正確なアクセス制御を行うことができます。

network_data_ganesha.yaml ファイルには、StorageNFS 分離ネットワークを定義する追加のセクションが含まれます。デフォルトの設定がほとんどのインストールで機能しますが、YAML ファイルを編集してご自分のネットワーク設定 (VLAN ID、サブネット、その他の設定など) を追加する必要があります。

name: StorageNFS
enabled: true
vip: true
name_lower: storage_nfs
vlan: 70
ip_subnet: '172.17.0.0/20'
allocation_pools: [{'start': '172.17.0.4', 'end': '172.17.0.250'}]
ipv6_subnet: 'fd00:fd00:fd00:7000::/64'
ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:7000::4', 'end': 'fd00:fd00:fd00:7000::fffe'}]

コンポーザブルネットワークについての詳しい情報は、Advanced Overcloud CustomizationUsing Composable Networks を参照してください。

2.5.2. CephFS バックエンド環境ファイル

CephFS バックエンド manila-cephfsganesha-config.yaml を定義するための統合環境ファイルは /usr/share/openstack-tripleo-heat-templates/environments/ にあります。

manila-cephfsganesha-config.yaml 環境ファイルには、Shared File Systems サービス (manila) のデプロイメントに関する設定が含まれます。バックエンドのデフォルト設定は、ほとんどの環境で機能します。Shared File Systems サービスをデプロイする際に director が使用するデフォルト値を以下の例で示します。

[stack@undercloud ~]$ cat /usr/share/openstack-tripleo-heat-templates/environments/manila-cephfsganesha-config.yaml
# A Heat environment file which can be used to enable a
# a Manila CephFS-NFS driver backend.
resource_registry:
  OS::TripleO::Services::ManilaApi: ../deployment/manila/manila-api-container-puppet.yaml
  OS::TripleO::Services::ManilaScheduler: ../deployment/manila/manila-scheduler-container-puppet.yaml
  # Only manila-share is pacemaker managed:
  OS::TripleO::Services::ManilaShare: ../deployment/manila/manila-share-pacemaker-puppet.yaml
  OS::TripleO::Services::ManilaBackendCephFs: ../deployment/manila/manila-backend-cephfs.yaml
  # ceph-nfs (ganesha) service is installed and configured by ceph-ansible
  # but it's still managed by pacemaker
  OS::TripleO::Services::CephNfs: ../deployment/ceph-ansible/ceph-nfs.yaml

parameter_defaults:
  ManilaCephFSBackendName: cephfs 1
  ManilaCephFSDriverHandlesShareServers: false 2
  ManilaCephFSCephFSAuthId: 'manila' 3
  ManilaCephFSCephFSEnableSnapshots: true 4
  # manila cephfs driver supports either native cephfs backend - 'CEPHFS'
  # (users mount shares directly from ceph cluster), or nfs-ganesha backend -
  # 'NFS' (users mount shares through nfs-ganesha server)
  ManilaCephFSCephFSProtocolHelperType: 'NFS'

parameter_defaults ヘッダーから設定が始まります。resource_registry に設定されたデフォルト値を上書きするには、この manila-cephfsganesha-config.yaml 環境ファイルをローカルの環境ファイルディレクトリー /home/stack/templates/ にコピーし、お使いの環境で必要なパラメーターの設定を編集します。これには、CephFS バックエンドのデフォルトを設定する OS::Tripleo::Services::ManilaBackendCephFs で定義した値も含まれます。

1
ManilaCephFSBackendName: CephFS バックエンドの manila 設定の名前を定義します。ここでは、デフォルトのバックエンド名は cephfs です。
2
ManilaCephFSDriverHandlesShareServers: 共有用サーバーのライフサイクルをコントロールします。false に設定すると、ドライバーはライフサイクルを処理しません。サポートされるオプションはこれだけです。
3
ManilaCephFSCephFSAuthId: Ceph クラスターにアクセスするために director が manila サービス用に作成する Ceph 認証 ID を定義します。
4
ManilaCephFSCephFSEnableSnapshots: スナップショットのアクティブ化をコントロールします。スナップショットは Ceph Storage 4.1 以降でサポートされていますが、このパラメーターの値は false です。この値は true に設定して、ドライバーが Shared File Systems スケジューラーに snapshot_support 機能を報告するようにします。

環境ファイルについての詳細は、Director のインストールと使用方法環境ファイル を参照してください。

第3章 デプロイメント後の設定

NFS 共有を作成し、ユーザーにアクセス権限を付与し、NFS 共有をマウントする前に、2 つのデプロイメント後設定タスクを完了する必要があります。

  • Networking サービス (neutron) の StorageNFS ネットワークをデータセンターの StorageNFS 分離ネットワークにマッピングする。NFS トラフィックを別のネットワークに分離したくない場合は、このオプションを省略できます。詳細は、カスタムロールファイルの生成 を参照してください。
  • デフォルトのファイル共有種別を作成する。

これらのステップを完了したら、テナントコンピュートインスタンスは NFS 共有を作成し、そのアクセスを許可し、マウントすることができます。

3.1. ストレージプロバイダーネットワークの作成

新しい StorageNFS 分離ネットワークを Networking (neutron) プロバイダーネットワークにマッピングする必要があります。NFS-Ganesha ゲートウェイの提供するファイル共有のエクスポート場所にアクセスするために、コンピュートノードの仮想マシンをネットワークにアタッチします。

Shared File Systems サービスのネットワークセキュリティーに関する情報は、Security and Hardening GuideHardening the Shared File Systems Service を参照してください。

手順

openstack network create コマンドにより、StorageNFS neutron ネットワークの設定を定義します。

  1. アンダークラウドノードから、以下のコマンドを入力します。

    [stack@undercloud ~]$ source ~/overcloudrc
  2. アンダークラウドノードで、StorageNFS ネットワークを作成します。

    (overcloud) [stack@undercloud-0 ~]$ openstack network create StorageNFS --share  --provider-network-type vlan --provider-physical-network datacentre --provider-segment 70

    以下のオプションを設定してこのコマンドを入力することができます。

    • --provider-physical-network オプション: tripleo-heat-templates の NeutronBridgeMappings で別途 br-isolated ブリッジのタグを設定していない限り、デフォルト値 datacentre を使用します。
    • --provider-segment オプション: heat テンプレート (/usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml) で StorageNFS 分離ネットワークに設定した VLAN の値を使用します。デプロイ時に分離ネットワークの定義を変更していない限り、この値は 70 です。
    • --provider-network-type オプション: 値 vlan を使用します。

3.2. 共有プロバイダー StorageNFS ネットワークの設定

neutron 共有プロバイダーネットワークに対応する StorageNFSSubnet を作成します。サブネットが network_data.yml ファイルの storage_nfs ネットワーク定義と同じであることを確認し、StorageNFS サブネットと対応するアンダークラウドのサブネットの割り当て範囲が重複しないようにしてください。StorageNFS サブネットは NFS 共有の提供用であるため、ゲートウェイは必要ありません。

前提条件

  • 割り当てプールの IP 範囲 (開始および終了アドレス)
  • サブネットの IP 範囲

3.2.1. 共有プロバイダー StorageNFS IPv4 ネットワークの設定

neutron 共有 IPv4 プロバイダーネットワークに対応する StorageNFSSubnet を作成します。

手順

  1. オーバークラウドノードにログインします。
  2. source コマンドでオーバークラウドの認証情報を読み込みます。
  3. 下記のコマンド例を使用して、以下の変更を行いネットワークをプロビジョニングします。

    1. start=172.17.0.4,end=172.17.0.250 の IP の値を、実際のネットワークの IP の値に置き換えます。
    2. 172.17.0.0/20 のサブネット範囲を、実際のネットワークのサブネット範囲に置き換えます。
[stack@undercloud-0 ~]$ openstack subnet create --allocation-pool start=172.17.0.4,end=172.17.0.250 --dhcp --network StorageNFS --subnet-range 172.17.0.0/20 --gateway none StorageNFSSubnet

3.2.2. 共有プロバイダー StorageNFS IPv6 ネットワークの設定

neutron 共有 IPv6 プロバイダーネットワークに対応する StorageNFSSubnet を作成します。

手順

  1. オーバークラウドノードにログインします。
  2. 下記のコマンド例を使用して、必要に応じて値の変更を行いネットワークをプロビジョニングします。

    • fd00:fd00:fd00:7000::/64 のサブネット範囲を、実際のネットワークのサブネット範囲に置き換えます。
[stack@undercloud-0 ~]$ openstack subnet create --ip-version 6 --dhcp --network StorageNFS --subnet-range fd00:fd00:fd00:7000::/64 --gateway none --ipv6-ra-mode dhcpv6-stateful --ipv6-address-mode dhcpv6-stateful StorageNFSSubnet -f yaml

3.3. デフォルトのファイル共有種別の設定

Shared File Systems サービス (manila) を使用して、特定の設定で共有を作成するために使用できる共有タイプを定義できます。ファイル共有の種別は、Block Storage のボリューム種別に類似した機能を持ちます。それぞれの種別には、追加の仕様などの関連する設定があります。ファイル共有の作成時に種別を呼び出すと、その設定が共有ファイルシステムに適用されます。

Red Hat OpenStack Platform (RHOSP) director を使用する場合、ユーザーにクラウドへのアクセスを許可する前に、デフォルトのファイル共有種別を作成する必要があります。NFS バックエンドに CephFS を使用する設定では、manila type-create コマンドを使用します。

$ manila type-create default false

ファイル共有種別に関する詳しい情報は、ストレージガイド共有タイプの作成 を参照してください。

第4章 NFS バックエンドに CephFS を使用する設定が正常にデプロイされたことの検証

Shared File Systems サービス (manila) の NFS バックエンドに CephFS を使用する設定をデプロイする場合、オーバークラウド環境に以下に示す新たな要素を追加します。

  • StorageNFS ネットワーク
  • コントローラー上の Ceph MDS サービス
  • コントローラー上の NFS-Ganesha サービス

ユーザーにサービスの利用を許可する前に、クラウド管理者は NFS バックエンドに CephFS を使用する環境が安定して動作することを確認する必要があります。

4.1. StorageNFS 分離ネットワークが作成されていることの確認

Shared File Systems サービスの NFS バックエンドに CephFS を使用する設定をデプロイするのに使用する network_data_ganesha.yaml ファイルにより、StorageNFS VLAN が作成されます。StorageNFS 分離ネットワークが存在することを確認するには、以下の手順を実施します。

手順

  1. オーバークラウドのコントローラーのいずれかにログインします。
  2. 以下のコマンドを入力して接続されたネットワークを確認し、network_data_ganesha.yaml により設定したとおりの VLAN が存在することを確認します。

    $ ip a
    15: vlan310: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
        link/ether 32:80:cf:0e:11:ca brd ff:ff:ff:ff:ff:ff
        inet 172.16.4.4/24 brd 172.16.4.255 scope global vlan310
           valid_lft forever preferred_lft forever
        inet 172.16.4.7/32 brd 172.16.4.255 scope global vlan310
           valid_lft forever preferred_lft forever
        inet6 fe80::3080:cfff:fe0e:11ca/64 scope link
           valid_lft forever preferred_lft forever

4.2. Ceph MDS サービスの確認

Ceph MDS サービスのステータスを確認するには、systemctl status コマンドを使用します。

手順

  • すべてのコントローラーノードで以下のコマンドを入力して、MDS コンテナーのステータスを確認します。

    $ systemctl status ceph-mds<@CONTROLLER-HOST>

    以下に例を示します。

$ systemctl status ceph-mds@controller-0.service

ceph-mds@controller-0.service - Ceph MDS
   Loaded: loaded (/etc/systemd/system/ceph-mds@.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2018-09-18 20:11:53 UTC; 6 days ago
 Main PID: 65066 (conmon)
   Tasks: 16 (limit: 204320)
   Memory: 38.2M
   CGroup: /system.slice/system-ceph\x2dmds.slice/ceph-mds@controller-0.service
         └─60921 /usr/bin/podman run --rm --net=host --memory=32000m --cpus=4 -v
/var/lib/ceph:/var/lib/ceph:z -v /etc/ceph:/etc/ceph:z -v
/var/run/ceph:/var/run/ceph:z -v /etc/localtime:/etc/localtime:ro>

4.3. Ceph クラスターのステータスの確認

Ceph クラスターのステータスを確認するには、以下の手順を実施します。

手順

  1. アクティブなコントローラーノードにログインします。
  2. 以下のコマンドを入力します。

    $ sudo ceph -s
    
    cluster:
        id: 3369e280-7578-11e8-8ef3-801844eeec7c
        health: HEALTH_OK
    
      services:
        mon: 3 daemons, quorum overcloud-controller-1,overcloud-controller-2,overcloud-controller-0
        mgr: overcloud-controller-1(active), standbys: overcloud-controller-2, overcloud-controller-0
        mds: cephfs-1/1/1 up  {0=overcloud-controller-0=up:active}, 2 up:standby
        osd: 6 osds: 6 up, 6 in

    1 つのアクティブな MDS と 2 つのスタンバイ状態の MDS があります。

  3. Ceph ファイルシステムのステータスをより詳細に確認するには、以下のコマンドを入力します。<cephfs> は、Ceph ファイルシステムの名前に置き換えてください。

    $ sudo ceph fs ls
    
    name: cephfs, metadata pool: manila_metadata, data pools: [manila_data]

4.4. NFS-Ganesha および manila-share サービスのステータスの確認

NFS-Ganesha および manila-share サービスのステータスを確認するには、以下の手順を実施します。

手順

  1. いずれかのコントローラーノードから以下のコマンドを入力して、ceph-nfs および openstack-manila-share が起動していることを確認します。

    $ pcs status
    
    ceph-nfs       (systemd:ceph-nfs@pacemaker):   Started overcloud-controller-1
    
    podman container: openstack-manila-share [192.168.24.1:8787/rhosp-rhel8/openstack-manila-share:pcmklatest]
       openstack-manila-share-podman-0      (ocf::heartbeat:podman):        Started overcloud-controller-1

4.5. manila-api サービスがスケジューラーおよびファイル共有サービスを認識していることの確認

以下の手順を実施して、manila-api サービスがスケジューラーおよびファイル共有サービスを認識していることを確認します。

手順

  1. アンダークラウドにログインします。
  2. 以下のコマンドを入力します。

    $ source /home/stack/overcloudrc
  3. 以下のコマンドを入力して、manila-scheduler および manila-share が有効であることを確認します。

    $ manila service-list
    
    | Id | Binary          | Host             | Zone | Status | State | Updated_at |
    
    | 2 | manila-scheduler | hostgroup        | nova | enabled | up | 2018-08-08T04:15:03.000000 |
    | 5 | manila-share | hostgroup@cephfs | nova | enabled | up | 2018-08-08T04:15:03.000000 |

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.