NFS バックエンドに CephFS を使用した Shared File Systems サービスのデプロイ
NFS バックエンドに CephFS を使用した Red Hat OpenStack Platform Shared File Systems サービスについての理解、およびその使用と管理
概要
はじめに
Red Hat OpenStack Platform (RHOSP) は、Red Hat Enterprise Linux 上にプライベートまたはパブリックの Infrastructure-as-a-Service (IaaS) クラウドを構築するための基盤を提供します。これにより、スケーラビリティーが極めて高く、耐障害性に優れたプラットフォームをクラウド対応のワークロード開発にご利用いただくことができます。
NFS バックエンドに Ceph File System (CephFS) を使用した Shared File Systems サービス (manila) により、ブロックストレージおよびオブジェクトストレージ用と同じ Ceph クラスターを使用して、NFS プロトコルを介したファイル共有を提供することができます。詳しくは、『 Storage Guide 』の「 Shared File Systems service 」を参照してください。
Red Hat OpenStack Platform の全ドキュメントスイートは Red Hat OpenStack Platform の製品ドキュメント で参照してください。
第1章 NFS バックエンドに CephFS を使用した Shared File Systems サービス
RHOSP 16.0 以降では、NFS バックエンドに CephFS を使用した Red Hat OpenStack Platform(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?」を参照してください。
Red Hat OpenStack Platform (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 は、高度にスケーラブルな Ceph のオープンソース分散ファイルシステムのコンポーネントで、統一された分散ストレージプラットフォームです。Ceph は、Reliable Autonomic Distributed Object Store (RADOS) を使用してオブジェクトストレージ、ブロックストレージ、およびファイルストレージを実装します。POSIX に対応した CephFS は、Ceph ストレージクラスターへのファイルアクセスを提供します。
Shared File Systems サービスを使用して CephFS にファイル共有を作成し、NFS 4.1 を使用して NFS-Ganesha 経由でそのファイル共有にアクセスすることができます。NFS-Ganesha はファイル共有へのアクセスをコントロールし、NFS 4.1 プロトコルを使用してファイル共有をクライアントにエクスポートします。Shared File Systems サービスは、Red Hat OpenStack Platform (RHOSP) 内からこれらのファイル共有のライフサイクルを管理します。NFS バックエンドに CephFS を使用するようにサービスを設定した場合には、これらのファイル共有は CephFS クラスターから提供されますが、通常の NFS 共有として作成およびアクセスされます。
詳細は、『 ストレージガイド』 の「 Shared File Systems サービス 」を参照してください。
1.1. NFS バックエンドに CephFS を使用した Shared File Systems サービス使用のメリット
- ある程度の理解: NFS プロトコルを使用した CephFS を使用した Shared File Systems サービス(manila)を使用して、NFS プロトコルを介したファイル共有を提供することができます。これは、ほとんどのオペレーティングシステムでデフォルトで利用可能です。CephFS は、すでに OpenStack クラウドの他のサービスのストレージバックエンドとして使用されている Ceph クラスター(Block Storage(cinder)、オブジェクトストレージその他のサービス)を最大化します。
今回のリリースで、Red Hat OpenStack(RHOSP)director により設定されていない外部にデプロイされた Ceph クラスターに CephFS を追加することがサポートされるようになりました。現在、RHOSP director で CephFS バックエンドを 1 つだけ定義することができます。詳しい情報は、『 Integrating an Overcloud with an Existing Red Hat Ceph Cluster 』の「 Integrating with the existing Ceph Storage cluster 」を参照してください。
このバージョンの Red Hat OpenStack Platform は、テクノロジープレビューとして CephFS ネイティブドライバーとは異なり、CephFS NFS ドライバー(NFS-Ganesha)を完全にサポートします。
Red Hat CephFS ネイティブドライバーは テクノロジープレビュー としてのみ利用可能であり、したがって、Red Hat による完全なサポートは提供されません。
テクノロジープレビュー機能についての詳しい情報は、「対象範囲の詳細」を参照してください。
- セキュリティー: NFS バックエンドに CephFS を使用する構成では、Ceph Storage バックエンドはユーザーネットワークから分離されます。この設定により、基礎となる Ceph ストレージは悪意のある攻撃や誤検出の影響を受けやすくなります。
- セキュリティー: データプレーントラフィックおよび API は別個のネットワークを使用して Shared File Systems サービスなどのコントロールプレーンサービスと通信できるため、ファイルストレージのセキュリティーはより安全です。
- control: Ceph クライアントは管理制御下に置かれます。エンドユーザーは、Ceph クラスターストレージバックエンドに直接アクセスできない分離されたユーザー仮想マシンなどの NFS クライアントを制御します。
1.2. Ceph File System のアーキテクチャー
Ceph File System (CephFS) は分散ファイルシステムで、NFS v4 プロトコルを使用する NFS-Ganesha (サポート対象) または CephFS ネイティブドライバーのいずれかと共に使用することができます。
1.2.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) の提供するストレージノードに保管されたデータにアクセスすることができます。プロジェクトがホストするインスタンス (仮想マシン) は、2 つの NIC と共に起動します。1 つの NIC はストレージプロバイダーネットワーク専用で、2 つ目の NIC は外部プロバイダーネットワークに接続するためのプロジェクト所有のルーター専用です。
ストレージプロバイダーネットワークは、プロジェクト上で動作する仮想マシンをパブリック Ceph ストレージネットワークに接続します。Ceph パブリックネットワークは、Ceph オブジェクトストレージノード、メタデータサーバー (MDS)、およびコントローラーノードへのバックエンドアクセスを提供します。ネイティブドライバーを使用する場合、CephFS では、クォータの適用、確実なプロジェクト間の分離、およびセキュリティー確保のために、クライアントおよびサーバーとの協調が必要になります。ネイティブドライバーを使用する CephFS は、プライベートクラウド上の信頼済みエンドユーザーが定義された環境で適切に機能します。この構成での協調および適切な動作のためには、ソフトウェアはユーザーの管理下で動作している必要があります。
1.2.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 デーモンに直接アクセスしません。
1.2.2.1. 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/share
2/…
)にしかアクセスできないので、プロジェクトデータパスの分離が確保されます。
1.2.2.2. 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 バックエンドに CephFS を使用する構成のインストール
2.1. 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 分離ネットワーク
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 System のバックエンドを設定する場合には、director を使用する方法を推奨します。
現時点では、director で 1 度に CephFS バックエンドを 1 つだけ定義できます。
NFS バックエンドへの CephFS の使用
2.1.1. NFS バックエンドに CephFS を使用する構成の要件
NFS バックエンドに CephFS を使用する構成には、Red Hat OpenStack Platform(RHOSP)バージョン 13 以降の環境が必要です。このバージョンは、既存の環境または新しい環境になります。
- RHOSP バージョン 13、14、および 15 の場合、CephFS は Red Hat Ceph Storage(RHCS)バージョン 3 で機能します。
- RHOSP バージョン 16 以降では、CephFS は Red Hat Ceph Storage(RHCS)バージョン 4.1 以降と連携します。
詳しい情報は、『 コンテナー化された Red Hat Ceph を持つオーバークラウドのデプロイ』 を参照してください。
前提条件
- デフォルトの動作と同様に、Shared File Systems サービスをコントローラーノードにインストールする。
- NFS-Ganesha ゲートウェイサービスをコントローラーノードの Pacemaker クラスターにインストールする。
- 1 つの CephFS バックエンドのインスタンスだけが Shared File Systems サービスを使用するように設定する。その他の CephFS 以外のバックエンドは、1 つの CephFS バックエンドと共に使用することができます。
- RHOSP director を使用して、ストレージトラフィック用に追加のネットワーク (StorageNFS) を作成する。
- NFS バックエンドに CephFS を使用する構成と同時に、新しい RHCS バージョン 4.1 以降クラスターを設定します。
2.1.2. ファイル共有
Shared File Systems サービス(manila)、Ceph File System(CephFS)、および NFS バックエンドに Ceph を使用する構成では、ファイル共有の取り扱いが異なります。
Shared File Systems サービスは、ファイル共有を提供します。共有は、個別のファイルシステムの名前空間であり、ストレージまたは共有のユニットで、クォータを持つサブディレクトリーなどに定義されたサイズです。アクセスが要求される前にファイルシステムが要求される前にファイルシステムが構成されているため、共有ファイルシステムのストレージは、ブロックストレージ(要求時に設定される)と異なります。
CephFS では、ファイル共有は、特定のストレージプールまたは名前空間をポイントする、クォータおよびレイアウトが定義されたディレクトリーとして扱われます。CephFS のクォータは、ディレクトリーのサイズを Shared File Systems サービスが作成するファイル共有のサイズに制限します。Ceph ファイル共有へのアクセス可否は、MDS の認証機能により決定されます。
NFS バックエンドに CephFS を使用する構成では、ファイル共有のプロビジョニングおよびアクセスに NFS プロトコルが使用されます。NFS プロトコルはセキュリティーにも対応します。
2.1.3. NFS バックエンドに CephFS を使用する構成で使用される分離ネットワーク
NFS バックエンドに CephFS を使用する構成のデプロイメントでは、新たな分離ネットワーク StorageNFS が使用されます。このネットワークをデプロイすることで、ユーザーはそのネットワーク上に表示されるファイル共有を NFS プロトコルを使用してマウントすることができます。ストレージまたはストレージ管理ネットワークにアクセスする必要はありません。ストレージ管理ネットワークは、インフラトラフィック用に確保されます。
ネットワークの分離に関する補足情報は、『オーバークラウドの 高度なカスタマイズ』 の「 基本的なネットワーク分離 」を参照してください。
2.2. NFS バックエンドに CephFS を使用する Red Hat OpenStack Platform のインストールとカスタム network_data ファイル
NFS バックエンドに CephFS を使用する構成をインストールするには、以下の手順を実施します。
- ceph-ansible パッケージをインストールする。「ceph-ansible パッケージのインストール」 を参照
-
openstack overcloud image prepare
コマンドを使用して、オーバークラウドコンテナーイメージを準備します。「オーバークラウドコンテナーイメージの準備」 を参照 -
カスタムロールファイル
roles_data.yaml
およびnetwork_data.yaml
ファイルを生成する。「カスタムロールファイルの生成」 を参照 -
カスタムロールおよび環境ファイルと共に
openstack overcloud deploy
コマンドを使用して、Ceph、Shared File Systems サービス(manila)、および CephFS をデプロイする。「更新された環境のデプロイ」 を参照 - StorageNFS 分離ネットワークを設定し、デフォルトのファイル共有種別を作成する。「デプロイメント後設定の完了」 を参照
以下の例では、Red Hat Platform (RHOSP) 環境の標準の stack
ユーザーが使用されています。
RHOSP のインストールまたは環境の更新の一環としてタスクを実行します。
2.2.1. ceph-ansible パッケージのインストール
コンテナー化された Ceph をデプロイするには、アンダークラウドノードに ceph-ansible
パッケージをインストールします。
手順
-
アンダークラウドノードに
stack
ユーザーとしてログインします。 ceph-ansible パッケージをインストールします。
[stack@undercloud-0 ~]$ sudo dnf install -y ceph-ansible [stack@undercloud-0 ~]$ sudo dnf list ceph-ansible ... Installed Packages ceph-ansible.noarch 3.1.0-0.1.el7
2.2.2. オーバークラウドコンテナーイメージの準備
Red Hat OpenStack Platform(RHOSP)ではすべてのサービスがコンテナー化されているので、openstack overcloud image prepare
コマンドを使用してオーバークラウド用のコンテナーイメージを準備する必要があります。ceph
および manila
サービスのデフォルトイメージをコンテナーレジストリーに追加する追加オプションを指定して、このコマンドを入力します。Ceph MDS
および NFS-Ganesha
サービスは、同じ Ceph ベースのコンテナーイメージを使用します。
コンテナーイメージに関する詳しい情報は、『 director のインストールと 使用 方法』の「追加のサービス用 コンテナーイメージ」を参照してください。
手順
stack
ユーザーとしてアンダークラウドから、-e
を指定してopenstack overcloud image prepare
コマンドを入力し、以下の環境ファイルを追加します。$ openstack overcloud container image prepare \ ... -e /usr/share/openstack-tripleo-heat-templates/environments/ceph-ansible/ceph-ansible.yaml \ -e /usr/share/openstack-tripleo-heat-templates/environments/services/manila.yaml \ ...
grep コマンドを使用して、ceph および manila サービスのデフォルトイメージが
containers-default-parameters.yaml
ファイルに含まれていることを確認します。[stack@undercloud-0 ~]$ grep -E 'ceph|manila' composable_roles/docker-images.yaml DockerCephDaemonImage: 192.168.24.1:8787/rhceph-beta/rhceph-4-rhel8:4-12 DockerManilaApiImage: 192.168.24.1:8787/rhosp-rhel8/openstack-manila-api:2019-01-16 DockerManilaConfigImage: 192.168.24.1:8787/rhosp-rhel8/openstack-manila-api:2019-01-16 DockerManilaSchedulerImage: 192.168.24.1:8787/rhosp-rhel8/openstack-manila-scheduler:2019-01-16 DockerManilaShareImage: 192.168.24.1:8787/rhosp-rhel8/openstack-manila-share:2019-01-16
2.2.2.1. カスタムロールファイルの生成
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
コマンドについての詳しい情報は、『オーバークラウドの 高度なカスタマイズ』 の「ロール」を参照してください。https://access.redhat.com/documentation/ja-jp/red_hat_openstack_platform/16.0/html-single/advanced_overcloud_customization/index#roles
openstack overcloud roles generate
コマンドにより、-o
以降に指定したサービスが含まれるカスタム roles_data.yaml
ファイルが作成されます。以下の例では、作成される roles_data.yaml
ファイルには、ControllerStorageNfs
、Compute
、および CephStorage
のサービスが含まれます。
既存の roles_data.yaml
ファイルがある場合には、それを変更して設定ファイルに ControllerStorageNfs
、Compute
、および CephStorage
サービスを追加します。詳しい情報は、『オーバークラウドの 高度なカスタマイズ』 の「 ロール 」を参照してください。
手順
-
アンダークラウドノードに
stack
ユーザーとしてログインします。 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.2.3. 更新された環境のデプロイ
環境をデプロイする準備が整ったら、NFS-Ganesha と共に CephFS を実行するのに必要なカスタム環境およびロールを指定して、openstack overcloud deploy
コマンドを使用します。
オーバークラウドのデプロイコマンドでは、その他の必要なオプションに加えて以下のオプションを指定します。
機能 | オプション | 関連情報 |
---|---|---|
| -e /home/stack/containers-default-parameters.yaml` | |
| -n /usr/share/openstack-tripleo-heat-templates/network_data_ganesha.yaml` | |
前のセクションで作成した |
| |
|
| 『コンテナー 化された Red Hat Ceph を持つオーバークラウドのデプロイ』の「オーバークラウドデプロイメント の 開始 」 |
|
| 『コンテナー 化された Red Hat Ceph を持つオーバークラウドのデプロイ』の「オーバークラウドデプロイメント の 開始 」 |
NFS バックエンドに CephFS を使用した |
|
以下は、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 /usr/share/openstack-tripleo-heat-templates/environments/net-single-nic-with-vlans.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.2.3.1. StorageNFS および network_data_ganesha.yaml ファイル
コンポーザブルネットワークを使用して、カスタムネットワークを定義して、それを任意のロールに割り当てます。標準の network_data.yaml
ファイルを使用する代わりに、network_data_ganesha.yaml
ファイルを使用して StorageNFS コンポーザブルネットワークを設定することができます。これらのロールは、共に /usr/share/openstack-tripleo-heat-templates
ディレクトリーから利用可能です。
network_data_ganesha.yaml
ファイルには、StorageNFS 分離ネットワークを定義する追加のセクションが含まれます。デフォルトの設定がほとんどのインストールで機能しますが、YAML ファイルを編集してご自分のネットワーク設定 (VLAN ID、サブネット、その他の設定など) を追加する必要があります。
name: StorageNFS enabled: true vip: true name_lower: storage_nfs vlan: 70 ip_subnet: '172.16.4.0/24' allocation_pools: [{'start': '172.16.4.4', 'end': '172.16.4.149'}] ipv6_subnet: 'fd00:fd00:fd00:7000::/64' ipv6_allocation_pools: [{'start': 'fd00:fd00:fd00:7000::10', 'end': 'fd00:fd00:fd00:7000:ffff:ffff:ffff:fffe'}]
コンポーザブルネットワークについての詳しい情報は、『オーバークラウドの 高度なカスタマイズ』 の「 コンポーザブルネットワーク 」を参照してください。
2.2.3.2. manila-cephfsganesha-config.yaml
CephFS バックエンドを定義するための統合環境ファイルは、アンダークラウドノードの以下のパスにあります。
/usr/share/openstack-tripleo-heat-templates/environments/
manila-cephfsganesha-config.yaml
環境ファイルには、Shared File Systems サービスのデプロイに関する設定が含まれます。バックエンドのデフォルト設定は、ほとんどの環境で機能します。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: false 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
で設定したデフォルト値を上書きすることができます。これには、CephFS バックエンドのデフォルトを設定する OS::Tripleo::Services::ManilaBackendCephFs
で定義した値も含まれます。
- 1
ManilaCephFSBackendName
: CephFS バックエンドの manila 設定の名前を定義します。ここでは、デフォルトのバックエンド名はcephfs
です。- 2
ManilaCephFSDriverHandlesShareServers
: 共有用サーバーのライフサイクルをコントロールします。false
に設定すると、ドライバーはライフサイクルを処理しません。サポートされるオプションはこれだけです。- 3
ManilaCephFSCephFSAuthId
: Ceph クラスターにアクセスするために director がmanila
サービス用に作成する Ceph 認証 ID を定義します。- 4
ManilaCephFSCephFSEnableSnapshots
: スナップショットのアクティブ化をコントロールします。値がfalse
であれば、スナップショットが有効ではないことを意味します。この機能は現在サポートされていません。
環境ファイルに関する詳しい情報は、『director のインストールと 使用 方法』 の「環境ファイル」セクションを参照してください。
2.2.4. デプロイメント後設定の完了
NFS 共有を作成し、ユーザーにアクセス権限を付与し、NFS 共有をマウントする前に、2 つのデプロイメント後設定タスクを完了する必要があります。
- neutron StorageNFS ネットワークをデータセンターの StorageNFS 分離ネットワークにマッピングする。「分離ネットワークの設定」 を参照
- デフォルトのファイル共有種別を作成する。「デフォルトのファイル共有種別の設定」 を参照
2.2.4.1. 分離ネットワークの設定
新しい StorageNFS 分離ネットワークを neutron 共有プロバイダーネットワークにマッピングします。NFS-Ganesha ゲートウェイの提供するファイル共有のエクスポート場所にアクセスするために、コンピュートノードの仮想マシンをこの neutron ネットワークにアタッチします。
Shared File Systems サービスのネットワークセキュリティーについての詳しい情報は、『 Security and Hardening Guide 』の「 Hardening the Shared File System Service 」を参照してください。
openstack network create
コマンドにより、StorageNFS neutron ネットワークの設定を定義します。以下のオプションを設定してこのコマンドを入力することができます。
-
--provider-network-type
: 値vlan
を使用します。 -
--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 です。
手順
アンダークラウドノードで、
stack
ユーザーとして以下のコマンドを入力します。[stack@undercloud ~]$ source ~/overcloudrc
アンダークラウドノードで
openstack network create
コマンドを入力して、StorageNFS ネットワークを作成します。(overcloud) [stack@undercloud-0 ~]$ openstack network create StorageNFS --share --provider-network-type vlan --provider-physical-network datacentre --provider-segment 70
2.2.4.2. 共有プロバイダー StorageNFS ネットワークの設定
neutron 共有プロバイダーネットワークに対応する StorageNFSSubnet
を作成します。サブネットが network_data.yml
ファイルの storage_nfs
ネットワーク定義と同じであることを確認し、StorageNFS
サブネットと対応するアンダークラウドのサブネットの割り当て範囲が重複しないようにしてください。StorageNFS
サブネットは NFS 共有の提供用であるため、ゲートウェイは必要ありません。
前提条件
- 割り当てプールの IP 範囲 (開始および終了アドレス)
- サブネットの IP 範囲
2.2.4.2.1. 共有プロバイダー StorageNFS IPv4 ネットワークの設定
手順
- オーバークラウドノードにログインします。
- source コマンドでオーバークラウドの認証情報を読み込みます。
下記のコマンド例を使用して、以下の変更を行いネットワークをプロビジョニングします。
-
start=172.16.4.150,end=172.16.4.250
の IP の値を、実際のネットワークの IP の値に置き換えます。 -
172.16.4.0/24
のサブネット範囲を、実際のネットワークのサブネット範囲に置き換えます。
-
[stack@undercloud-0 ~]$ openstack subnet create --allocation-pool start=172.16.4.150,end=172.16.4.250 --dhcp --network StorageNFS --subnet-range 172.16.4.0/24 --gateway none StorageNFSSubnet
2.2.4.2.2. 共有プロバイダー StorageNFS IPv6 ネットワークの設定
手順
- オーバークラウドノードにログインします。
下記のコマンド例を使用して、必要に応じて値の変更を行いネットワークをプロビジョニングします。
-
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
2.2.4.3. デフォルトのファイル共有種別の設定
Shared File Systems サービスを使用して、ファイル共有の種別を定義することができます。これを使用して、特定の設定のファイル共有を作成することができます。ファイル共有の種別は、Block Storage のボリューム種別に類似した機能を持ちます。それぞれの種別には、追加の仕様などの関連する設定があります。ファイル共有の作成時に種別を呼び出すと、その設定が共有ファイルシステムに適用されます。
Red Hat OpenStack Platform(RHOSP)director には、デフォルトのファイル共有種別が必要です。ユーザーがクラウドにアクセスできるようにするには、デフォルトのファイル共有種別を作成する必要があります。NFS バックエンドに CephFS を使用する構成では、manila type-create
コマンドを使用します。
manila type-create default false
共有種別に関する情報は、『ストレージガイド』 の「ファイル 共有の作成および管理 」を参照してください。
第3章 NFS バックエンドに CephFS を使用する構成が正常にデプロイされたことの検証
Shared File Systems サービス (manila) の NFS バックエンドに CephFS を使用する構成をデプロイする場合、オーバークラウド環境に以下に示す新たな要素を追加します。
- StorageNFS ネットワーク
- コントローラー上の Ceph MDS サービス
- コントローラー上の NFS-Ganesha サービス
NFS バックエンドに CephFS を使用した Shared File Systems サービスの使用に関する詳細は、『 ストレージガイド』 の「 Shared File Systems サービス 」を参照してください。
ユーザーにサービスの利用を許可する前に、クラウド管理者は NFS バックエンドに CephFS を使用する環境が安定して動作することを確認する必要があります。
3.1. StorageNFS 分離ネットワークが作成されていることの確認
Shared File Systems サービスの NFS バックエンドに CephFS を使用する構成をデプロイするのに使用する network_data_ganesha.yaml
ファイルにより、StorageNFS VLAN が作成されます。StorageNFS 分離ネットワークが存在することを確認するには、以下の手順を実施します。
前提条件
- 「2章NFS バックエンドに CephFS を使用する構成のインストール」の手順が完了していること。
手順
- オーバークラウドのコントローラーのいずれかにログインします。
以下のコマンドを入力して接続されたネットワークを確認し、
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
3.2. Ceph MDS サービスの確認
Ceph MDS サービスのステータスを確認するには、systemctl status
コマンドを使用します。
手順
すべてのコントローラーノードで以下のコマンドを入力して、MDS コンテナーのステータスを確認します。
$ systemctl status ceph-mds@<CONTROLLER-HOST>
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)
3.3. Ceph クラスターのステータスの確認
Ceph クラスターのステータスを確認するには、以下の手順を実施します。
手順
- アクティブなコントローラーノードにログインします。
以下のコマンドを入力します。
$ 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 があるはずです。
Ceph ファイルシステムのステータスをより詳細に確認するには、以下のコマンドを入力します。
<cephfs>
は、Ceph ファイルシステムの名前に置き換えてください。$ sudo ceph fs ls name: cephfs, metadata pool: manila_metadata, data pools: [manila_data]
3.4. NFS-Ganesha および manila-share サービスのステータスの確認
NFS-Ganesha および manila-share サービスのステータスを確認するには、以下の手順を実施します。
手順
いずれかのコントローラーノードから以下のコマンドを入力して、
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
3.5. manila-api サービスがスケジューラーおよびファイル共有サービスを認識していることの確認
manila-api
サービスがスケジューラーおよびファイル共有サービスを認識していることを確認するには、以下の手順を実施します。
手順
- アンダークラウドにログインします。
以下のコマンドを入力します。
$ source /home/stack/overcloudrc
以下のコマンドを入力して、
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 |