- このガイドについて
- I SES (SUSE Enterprise Storage)の概要
- II Cephクラスタの展開
- III 古いリリースからのアップグレード
- A アップストリーム「Pacific」ポイントリリースに基づくCeph保守更新
- 用語集
Copyright © 2020–2024 SUSE LLC and contributors.All rights reserved.
特に明記されている場合を除き、本書はクリエイティブ・コモンズ表示-継承4.0国際(CC-BY-SA 4.0)に基づいてライセンスされています。https://creativecommons.org/licenses/by-sa/4.0/legalcodeを参照してください。
SUSEの商標については、http://www.suse.com/company/legal/を参照してください。サードパーティ各社とその製品の商標は、所有者であるそれぞれの会社に所属します。商標記号(®、 ™など)は、SUSEおよび関連会社の商標を示します。アスタリスク(*)は、第三者の商標を示します。
本書のすべての情報は、細心の注意を払って編集されています。しかし、このことは絶対に正確であることを保証するものではありません。SUSE LLC、その関係者、著者、翻訳者のいずれも誤りまたはその結果に対して一切責任を負いかねます。
このガイドについて #
このガイドでは基本的なCephクラスタの展開方法と、追加のサービスの展開方法に焦点を当てて説明しています。また、旧バージョンの製品をSUSE Enterprise Storage 7.1にアップグレードする手順についても説明しています。
SUSE Enterprise Storage 7.1はSUSE Linux Enterprise Server 15 SP3の拡張機能です。Ceph (http://ceph.com/)ストレージプロジェクトの機能に、SUSEのエンタープライズエンジニアリングとサポートが組み合わされています。SUSE Enterprise Storage 7.1により、IT組織は、コモディティハードウェアプラットフォームを使用して多様な使用事例に対応できる分散ストレージアーキテクチャを展開できます。
1 利用可能なマニュアル #
製品に関するマニュアルは、https://documentation.suse.comからご利用いただけます。最新のアップデートもご利用いただけるほか、マニュアルをさまざまな形式でブラウズおよびダウンロードすることができます。最新のマニュアルアップデートは英語版で検索できます。
また、製品マニュアルは、/usr/share/doc/manual
の下にあるインストール済みシステムから入手できます。製品マニュアルは ses-manual_LANG_CODE.システム上にマニュアルが存在しない場合は、たとえば次のコマンドを使用してインストールしてください。
#
zypper install ses-manual_en
この製品の次のマニュアルを入手できます。
- 導入ガイド
このガイドでは基本的なCephクラスタの展開方法と、追加のサービスの展開方法に焦点を当てて説明しています。また、旧バージョンの製品をSUSE Enterprise Storage 7.1にアップグレードする手順についても説明しています。
- 運用と管理ガイド
このガイドでは、基本的なCephクラスタを展開した後に、管理者として実行する必要があるルーチンタスク(日常的な管理)に焦点を当てて説明しています。また、サポートされている、Cephクラスタに保存されたデータにアクセスする方法をすべて説明しています。
- Security Hardening Guide
このガイドでは、クラスタのセキュリティを確保する方法に焦点を当てて説明しています。
- トラブルシューティングガイド
このガイドでは、SUSE Enterprise Storage 7.1を実行する際のさまざまな一般的な問題と、CephやObject Gatewayのような関連コンポーネントに関する問題について説明しています。
- SUSE Enterprise Storage for Windows Guide
このガイドでは、Windowsドライバを使用したMicrosoft Windows環境とSUSE Enterprise Storageの統合、インストール、および設定について説明しています。
2 フィードバックの提供 #
このドキュメントに対するフィードバックや貢献を歓迎します。次のチャネルがあります。
- サービス要求およびサポート
ご使用の製品に利用できるサービスとサポートのオプションについては、http://www.suse.com/support/を参照してください。
サービス要求を提出するには、SUSE Customer Centerに登録済みのSUSEサブスクリプションが必要です。https://scc.suse.com/support/requestsからログインして をクリックしてください。
- バグレポート
https://bugzilla.suse.com/から入手できるドキュメントを使用して、問題を報告してください。問題を報告するには、Bugzillaアカウントが必要です。
このプロセスを簡略化するために、このドキュメントのHTMLバージョンの見出しの横にある
リンクを使用できます。リンクを使用すると、Bugzillaで適切な製品とカテゴリが事前に選択され、現在のセクションへのリンクが追加されます。バグレポートの入力を直ちに開始できます。- ドキュメントの編集に貢献
このドキュメントに貢献するには、このドキュメントのHTMLバージョンの見出しの横にある
リンクを使用してください。GitHubのソースコードに移動し、そこからプル要求を提出できます。貢献にはGitHubアカウントが必要です。このドキュメントの編集に使用する環境の詳細は、https://github.com/SUSE/doc-sesにあるリポジトリのREADMEを参照してください。
- メール
ドキュメントに関するエラーの報告やフィードバックは<doc-team@suse.com>宛に送信してもかまいません。ドキュメントのタイトル、製品のバージョン、およびドキュメントの発行日を記載してください。また、関連するセクション番号とタイトル(またはURL)、問題の簡潔な説明も記載してください。
3 マニュアルの表記規則 #
このマニュアルでは、次の通知と表記規則が使用されています。
/etc/passwd
: ディレクトリ名とファイル名PLACEHOLDER: PLACEHOLDERは、実際の値で置き換えられます。
PATH
: 環境変数ls
、--help
: コマンド、オプション、およびパラメータuser
: ユーザまたはグループの名前package_name: ソフトウェアパッケージの名前
Alt、Alt–F1: 押すキーまたはキーの組み合わせ。キーはキーボードのように大文字で表示されます。
AMD/Intel この説明は、AMD64/Intel 64アーキテクチャにのみ当てはまります。矢印は、テキストブロックの先頭と終わりを示します。
IBM Z, POWER この説明は、
IBM Z
およびPOWER
の各アーキテクチャにのみ当てはまります。矢印は、テキストブロックの先頭と終わりを示します。第1章、「章の例」: このガイドの別の章への相互参照。
root
特権で実行する必要のあるコマンド。多くの場合、これらのコマンドの先頭にsudo
コマンドを置いて、特権のないユーザとしてコマンドを実行することもできます。#
command
>
sudo
command
特権のないユーザでも実行できるコマンド。
>
command
通知
警告: 警告の通知続行する前に知っておくべき、無視できない情報。セキュリティ上の問題、データ損失の可能性、ハードウェアの損傷、または物理的な危険について警告します。
重要: 重要な通知続行する前に知っておくべき重要な情報です。
注記: メモの通知追加情報。たとえば、ソフトウェアバージョンの違いに関する情報です。
ヒント: ヒントの通知ガイドラインや実際的なアドバイスなどの役に立つ情報です。
コンパクトな通知
追加情報。たとえば、ソフトウェアバージョンの違いに関する情報です。
ガイドラインや実際的なアドバイスなどの役に立つ情報です。
4 サポート #
SUSE Enterprise Storageのサポートステートメントと、技術プレビューに関する概要を以下に示します。製品ライフサイクルの詳細については、https://www.suse.com/lifecycleを参照してください。
サポート資格をお持ちの場合、https://documentation.suse.com/sles-15/html/SLES-all/cha-adm-support.htmlを参照して、サポートチケットの情報を収集する方法の詳細を確認してください。
4.1 SUSE Enterprise Storageのサポートステートメント #
サポートを受けるには、SUSEの適切な購読が必要です。利用可能なサポートサービスを具体的に確認するには、https://www.suse.com/support/にアクセスして製品を選択してください。
サポートレベルは次のように定義されます。
- L1
問題の判別。互換性情報、使用サポート、継続的な保守、情報収集、および利用可能なドキュメントを使用した基本的なトラブルシューティングを提供するように設計されたテクニカルサポートを意味します。
- L2
問題の切り分け。データの分析、お客様の問題の再現、問題領域の特定、レベル1で解決できない問題の解決、またはレベル3の準備を行うように設計されたテクニカルサポートを意味します。
- L3
問題解決。レベル2サポートで特定された製品の欠陥を解決するようにエンジニアリングに依頼して問題を解決するように設計されたテクニカルサポートを意味します。
契約されているお客様およびパートナーの場合、SUSE Enterprise Storageでは、次のものを除くすべてのパッケージに対してL3サポートを提供します。
技術プレビュー.
サウンド、グラフィック、フォント、およびアートワーク。
追加の顧客契約が必要なパッケージ.
モジュール「Workstation Extension」の一部として出荷される一部のパッケージは、L2サポートのみです。
メインのパッケージと共にのみサポートが提供される、名前が-develで終わるパッケージ(ヘッダファイルや同様の開発者用のリソースを含む)。
SUSEは、元のパッケージの使用のみをサポートします。つまり、変更も、再コンパイルもされないパッケージをサポートします。
4.2 技術プレビュー #
技術プレビューとは、今後のイノベーションを垣間見ていただくための、SUSEによって提供されるパッケージ、スタック、または機能を意味します。技術プレビューは、ご利用中の環境で新しい技術をテストする機会を参考までに提供する目的で収録されています。私たちはフィードバックを歓迎しています。技術プレビューをテストする場合は、SUSEの担当者に連絡して、経験や使用例をお知らせください。ご入力いただいた内容は今後の開発のために役立たせていただきます。
技術プレビューには、次の制限があります。
技術プレビューはまだ開発中です。したがって、機能が不完全であったり、不安定であったり、何らかの理由で運用環境での使用には適していなかったりする場合があります。
技術プレビューにはサポートが提供されません。
技術プレビューは、特定のハードウェアアーキテクチャでしか利用できないことがあります。
技術プレビューの詳細および機能は、変更される場合があります。そのため、今後リリースされる技術プレビューへのアップグレードができない場合や、再インストールが必要となる場合があります。
SUSEで、プレビューがお客様や市場のニーズを満たしていない、またはエンタープライズ標準に準拠していないことを発見する場合があります。技術プレビューは製品から予告なく削除される可能性があります。SUSEでは、このようなテクノロジーのサポートされるバージョンを将来的に提供できない場合があります。
ご使用の製品に付属している技術プレビューの概要については、https://www.suse.com/releasenotes/x86_64/SUSE-Enterprise-Storage/7.1にあるリリースノートを参照してください。
5 Cephの貢献者 #
Cephプロジェクトとそのドキュメントは、数百人の貢献者と組織の作業の結果です。詳しくは「https://ceph.com/contributors/」を参照してください。
6 このガイドで使用されるコマンドとコマンドプロンプト #
Cephクラスタ管理者は、特定のコマンドを実行して、クラスタの動作を設定および調整します。必要になるコマンドには、次のようにいくつかの種類があります。
6.1 Salt関連のコマンド #
これらのコマンドは、Cephクラスタノードを展開する場合や、クラスタノードの一部(または全部)で同時にコマンドを実行する場合、クラスタノードを追加または削除する場合に役立ちます。最も頻繁に使用されるコマンドはceph-salt
とceph-salt config
です。Salt Masterノードでは、Saltコマンドはroot
として実行する必要があります。これらのコマンドは、次のプロンプトで示されます。
root@master #
例:
root@master #
ceph-salt config ls
6.2 Ceph関連のコマンド #
これらは、ceph
、cephadm
、rbd
、またはradosgw-admin
など、コマンドラインでクラスタとそのゲートウェイのすべての側面を設定および微調整するための下位レベルのコマンドです。
Ceph関連のコマンドを実行するには、Cephキーの読み取りアクセス権が必要です。このキーの機能により、Ceph環境内におけるユーザの特権が定義されます。1つのオプションは、root
として(またはsudo
を使用して)Cephコマンドを実行し、制限のないデフォルトのキーリング「ceph.client.admin.key」を使用します。
より安全な推奨オプションは、各管理者ユーザに対してより制限の厳しい個別のキーを作成し、そのキーを、各ユーザが読み取ることができるディレクトリに保存することです。次に例を示します。
~/.ceph/ceph.client.USERNAME.keyring
カスタムの管理者ユーザとキーリングを使用するには、ceph
コマンドを実行するたびに、-n client.USER_NAME
オプションと--keyring PATH/TO/KEYRING
オプションを使用して、ユーザ名とプールのパスを指定する必要があります。
これを回避するには、個々のユーザの~/.bashrc
ファイルでCEPH_ARGS
変数にこれらのオプションを含めてください。
Ceph関連のコマンドは任意のクラスタノードで実行できますが、管理ノードで実行することをお勧めします。このドキュメントでは、cephuser
ユーザを使用してコマンドを実行するので、コマンドは次のプロンプトが表示されます。
cephuser@adm >
例:
cephuser@adm >
ceph auth list
クラスタノードに対して特定の役割でコマンドを実行するようドキュメントで指示されている場合は、プロンプトによって示されます。以下に例を示します。
cephuser@mon >
6.2.1 ceph-volume
の実行 #
SUSE Enterprise Storage 7から、Cephサービスはコンテナ化された状態で実行されます。OSDノード上でceph-volume
を実行する必要がある場合は、cephadm
コマンドに付加する必要があります。たとえば、次のようになります。
cephuser@adm >
cephadm ceph-volume simple scan
6.3 一般的なLinuxコマンド #
mount
、cat
、またはopenssl
など、Cephに関連しないLinuxコマンドは、関連するコマンドに必要な特権に応じて、cephuser@adm >
または#
のいずれかで導入されます。
6.4 追加情報 #
Cephのキー管理の詳細については、Book “運用と管理ガイド”, Chapter 30 “cephx
を使用した認証”, Section 30.2 “キー管理”を参照してください。
パート I SES (SUSE Enterprise Storage)の概要 #
- 1 SESとCeph
SUSE Enterprise Storageは、スケーラビリティ、信頼性、およびパフォーマンスを目的として設計された、Cephテクノロジに基づく分散ストレージシステムです。Cephクラスタは、Ethernetなどの一般的なネットワーク内にあるコモディティサーバで実行できます。クラスタは、数千台のサーバ(以降、ノードと呼びます)とペタバイトの域にまで容易に拡張できます。データを保存および取得するためのアロケーションテーブルを持つ従来のシステムとは異なり、Cephは決定的アルゴリズムを使用してデータの記憶域を割り当て、集中化された情報構造を持ちません。Cephでは、Storage Cluster…
- 2 ハードウェア要件と推奨事項
Cephのハードウェア要件は、IOワークロードに大きく依存します。次のハードウェア要件と推奨事項は、詳細な計画を立てる際の起点と考えてください。
- 3 管理ノードのHAセットアップ
「管理ノード」はSalt Masterサービスが動作するCephクラスタノードです。管理ノードはSalt Minionサービスのクエリと命令を行うことで、他のクラスタノードを管理します。管理ノードには通常、ほかのサービスも含まれます。たとえば、「Prometheus」監視ツールキットに支援された「Grafana」ダッシュボードなどです。
1 SESとCeph #
SUSE Enterprise Storageは、スケーラビリティ、信頼性、およびパフォーマンスを目的として設計された、Cephテクノロジに基づく分散ストレージシステムです。Cephクラスタは、Ethernetなどの一般的なネットワーク内にあるコモディティサーバで実行できます。クラスタは、数千台のサーバ(以降、ノードと呼びます)とペタバイトの域にまで容易に拡張できます。データを保存および取得するためのアロケーションテーブルを持つ従来のシステムとは異なり、Cephは決定的アルゴリズムを使用してデータの記憶域を割り当て、集中化された情報構造を持ちません。Cephでは、Storage Cluster内でのハードウェアの追加や削除は、例外ではなく標準の動作であると想定されています。Cephクラスタは、データの分散と再分散、データの複製、障害検出、回復などの管理タスクを自動化します。Cephは自己修復機能と自己管理機能の両方を備えているため、管理と予算のオーバーヘッドが削減されます。
この章では、SUSE Enterprise Storage 7.1の大まかな概要と、最も重要なコンポーネントについて簡単に説明します。
1.1 Cephの特徴 #
Ceph環境には次のような特徴があります。
- 拡張性
Cephは数千台のノードにまで拡張でき、ペタバイトの域のストレージを管理できます。
- コモディティハードウェア
Cephクラスタを実行するのに特別なハードウェアは必要ありません。詳細については、第2章 「ハードウェア要件と推奨事項」を参照してください。
- 自己管理
Cephクラスタは自己管理型です。ノードが追加または削除された場合、あるいはノードに障害が発生した場合、クラスタは自動的にデータを再分散します。過負荷状態のディスクを認識する機能もあります。
- SPOF (Single Point of Failure)を排除
クラスタ内のノードが重要な情報を単独で保存することはありません。冗長性の数は設定が可能です。
- オープンソースのソフトウェア
Cephは、特定のハードウェアやベンダーとは無関係のオープンソースソフトウェアソリューションです。
1.2 Cephのコアコンポーネント #
Cephの能力を最大限活用するには、その基本的なコンポーネントと概念を理解する必要があります。このセクションでは、他の章で頻繁に参照されるCephの機能をいくつか紹介します。
1.2.1 RADOS #
Cephの基本コンポーネントは「RADOS (Reliable Autonomic Distributed Object Store) 」と呼ばれます。これは、クラスタに保存されるデータの管理を受け持ちます。通常、Ceph内のデータはオブジェクトとして保存されています。各オブジェクトはIDとデータで構成されます。
RADOSは、保存オブジェクトへのアクセス方法として次の方法を備えており、さまざまな使用事例に対応します。
- Object Gateway
Object Gatewayは、RADOS Object StoreのHTTP RESTゲートウェイです。これにより、Cephクラスタに保存されているオブジェクトへの直接アクセスが可能になります。
- RADOS Block Device
RADOS Block Device (RBD)には他のブロックデバイスと同じようにアクセスできます。たとえば、仮想化を行う場合、RBDと
libvirt
を組み合わせて使用できます。- CephFS
Ceph File SystemはPOSIX互換のファイルシステムです。
librados
librados
は、Storage Clusterを直接操作できるアプリケーションを作成するためのライブラリで、さまざまなプログラミング言語で使用できます。
Object GatewayとRBDはlibrados
を使用するのに対し、CephFSはRADOSと直接対話します。図1.1「Ceph Object Storeのインタフェース」を参照してください。
1.2.2 CRUSH #
Cephクラスタの中核を成すのは「CRUSH」アルゴリズムです。CRUSHは「Controlled Replication Under Scalable Hashing」の略語です。CRUSHはストレージの割り当てを扱う機能で、指定が必要なパラメータは比較的少なくなっています。つまり、オブジェクトの保存位置を計算するのに必要な情報はごくわずかです。そのパラメータは、ヘルス状態を含むクラスタの現在のマップ、管理者定義の配置ルール、および保存または取得する必要があるオブジェクトの名前です。この情報により、Cephクラスタ内のすべてのノードは、オブジェクトとそのレプリカが保存されている場所を計算できます。このため、データの読み書きが非常に効率化されます。CRUSHは、データをクラスタ内のすべてのノードに均等に分散しようとします。
「CRUSHマップ」には、クラスタにオブジェクトを保存するための、すべてのストレージノードと管理者定義の配置ルールが記述されています。CRUSHマップは階層構造を定義し、その階層構造は通常、クラスタの物理構造に対応します。たとえば、データが含まれるディスクがホストにあり、ホストがラックに格納されているとします。さらに、ラックは複数の列に収容されていて、ラック列はデータセンターにあるとします。この構造を使用して「障害ドメイン」を定義できます。Cephは、それに従ってレプリケーションが特定の障害ドメインの異なるブランチに保存されるようにします。
障害ドメインがラックに設定されている場合、オブジェクトのレプリケーションは異なるラックに分散されます。これによって、ラック内のスイッチの障害によって発生する停止を緩和できます。1台の配電ユニットで1つのラック列に電力を供給している場合は、障害ドメインを列に設定できます。配電ユニットに障害が発生しても、引き続き他の列で複製されたデータを利用できます。
1.2.3 Cephのノードとデーモン #
Cephでは、ノードとはクラスタを形成しているサーバです。ノードでは複数の種類のデーモンを実行できます。各ノードで実行するデーモンは1種類だけにすることをお勧めします。ただし、Ceph Managerデーモンは例外で、Ceph Monitorと一緒に配置できます。各クラスタには、少なくともCeph Monitor、Ceph Manager、およびCeph OSDデーモンが必要です。
- 管理ノード
「管理ノード」とは、コマンドを実行してクラスタを管理するCephクラスタノードを指します。管理ノードはCephクラスタの中心となる場所です。これは、Salt Minionサービスに対してクエリと命令を行って他のクラスタノードを管理する役割があるためです。
- Ceph Monitor
「Ceph Monitor」(多くの場合、「MON」と省略)ノードは、クラスタのヘルス状態に関する情報、すべてのノードのマップ、およびデータ分散ルールを維持します(1.2.2項 「CRUSH」を参照してください)。
障害または衝突が発生した場合、クラスタ内のCeph Monitorノードは、どの情報が正しいかを多数決で決定します。必ず多数決が得られるように、奇数個(少なくとも3個以上)のCeph Monitorノードを設定することをお勧めします。
複数のサイトを使用する場合、Ceph Monitorノードは奇数個のサイトに分散する必要があります。サイトあたりのCeph Monitorノードの数は、1つのサイトに障害が発生したときに、50%を超えるCeph Monitorノードの機能が維持される数にする必要があります。
- Ceph Manager
Ceph Managerはクラスタ全体から状態情報を収集します。Ceph ManagerデーモンはCeph Monitorデーモンと共に動作します。追加のモニタリング機能を提供し、外部のモニタリングシステムや管理システムとのインタフェースとして機能します。これには、他のサービスも含まれます。たとえば、CephダッシュボードWeb UIはCeph Managerと同じノードで実行されます。
Ceph Managerには、動作確認以外の追加設定は必要ありません。
- Ceph OSD
「Ceph OSD」は、「オブジェクトストレージデバイス」を処理するデーモンです。OSDは、物理ストレージユニットまたは論理ストレージユニット(ハードディスクまたはパーティション)になります。オブジェクトストレージデバイスは、物理ディスク/パーティションにも、論理ボリュームにもできます。このデーモンはほかにも、データのレプリケーションや、ノードが追加または削除された場合のリバランスも処理します。
Ceph OSDデーモンはモニターデーモンと通信して、他のOSDデーモンの状態をモニターデーモンに提供します。
CephFS、Object Gateway、NFS Ganesha、またはiSCSI Gatewayを使用するには、追加のノードが必要です。
- MDS (メタデータサーバ)
CephFSのメタデータは自身のRADOSプールに保存されます(1.3.1項 「プール」を参照してください)。メタデータサーバはスマートなメタデータのキャッシュ層として機能し、必要に応じてアクセスをシリアル化します。これにより、明示的な同期を取ることなく多数のクライアントからの同時アクセスが可能となります。
- Object Gateway
Object Gatewayは、RADOS Object StoreのHTTP RESTゲートウェイです。OpenStack SwiftおよびAmazon S3と互換性があり、独自のユーザ管理機能を持ちます。
- NFS Ganesha
NFS Ganeshaは、Object GatewayまたはCephFSにNFSアクセスを提供します。カーネル空間ではなくユーザ空間で動作し、Object GatewayまたはCephFSと直接対話します。
- iSCSI Gateway
iSCSIは、クライアントからリモートサーバ上のSCSIストレージデバイス(ターゲット)にSCSIコマンドを送信できるようにするストレージネットワークプロトコルです。
- Sambaゲートウェイ
Sambaゲートウェイは、CephFSに保存されているデータにSambaからアクセスできるようにします。
1.3 Cephのストレージ構造 #
1.3.1 プール #
Cephクラスタに保存されるオブジェクトは「プール」に配置されます。プールは、外部環境に対してはクラスタの論理パーティションを表します。各プールに対して一連のルールを定義できます。たとえば、各オブジェクトのレプリケーションがいくつ存在する必要があるかなどを定義できます。プールの標準設定を「複製プール」と呼びます。
通常、プールにはオブジェクトが含まれていますが、RAID 5と同様の動作をするように設定することもできます。この設定の場合、オブジェクトは追加のコーディングチャンクと共にチャンクで保存されます。コーディングチャンクには冗長な情報が含まれます。データとコーディングチャンクの数は管理者が定義できます。この設定の場合、プールは「イレージャコーディングプール(ECプール)」と呼ばれます。
1.3.2 配置グループ #
「配置グループ」(PG)は、プール内でデータを分散するために使用されます。プールの作成時に、一定数の配置グループが設定されます。配置グループは、オブジェクトをグループ化するために内部的に使用され、Cephクラスタのパフォーマンスにおける重要な要因です。オブジェクトのPGはオブジェクトの名前によって決定されます。
1.3.3 例 #
このセクションでは、Cephのデータ管理の仕組みを簡単な例で説明します(図1.2「小規模なCephの例」を参照してください)。この例は、Cephクラスタの推奨設定を表すものではありません。このハードウェアセットアップは、3つのストレージノードまたはCeph OSD (ホスト1
、ホスト2
、ホスト3
)で構成されます。各ノードにはハードディスクが3つあり、それぞれがOSDとして使用されます(osd.1
~osd.9
)。この例では、Ceph Monitorノードを無視しています。
「Ceph OSD」または「Ceph OSDデーモン」は、ノード上で実行されるデーモンを指すのに対し、「OSD」という語はそのデーモンが対話する論理ディスクを指します。
クラスタにはプールA
とプールB
の2つのプールがあります。プールAはオブジェクトを2回だけ複製するのに対し、プールBの災害耐性はより重要であるため、各オブジェクトのレプリケーションを3つ保持します。
たとえばREST API経由でアプリケーションがオブジェクトをプールに配置すると、プールとオブジェクト名に基づいて配置グループ(PG1
~PG4
)が選択されます。続いて、CRUSHアルゴリズムにより、オブジェクトが含まれている配置グループに基づいて、オブジェクトを保存するOSDが計算されます。
この例では、障害ドメインはホストに設定されています。これにより、オブジェクトのレプリケーションが確実に別のホストに保存されるようにします。プールに設定されているレプリケーションレベルに応じて、オブジェクトは、配置グループによって使用される2つまたは3つのOSDに保存されます。
オブジェクトを書き込むアプリケーションは、プライマリCeph OSDである1つのCeph OSDとのみ対話します。プライマリCeph OSDはレプリケーションを処理し、他のすべてのOSDがオブジェクトを保存したら、書き込みプロセスの完了を確認します。
osd.5
に障害が発生した場合、PG1
のすべてのオブジェクトはosd.1
で引き続き利用可能です。OSDに障害が発生したことをクラスタが認識するとすぐに、別のOSDが処理を引き継ぎます。この例では、osd.4
がosd.5
の代わりとして使用されます。その後、osd.1
に保存されているオブジェクトがosd.4
に複製され、レプリケーションレベルが復元されます。
新しいOSDを持つ新しいノードがクラスタに追加されると、クラスタマップが変更されます。それに従って、CRUSH機能はオブジェクトに対して別の場所を返します。新しい場所を受け取ったオブジェクトは、別の場所に移動されます。このプロセスにより、すべてのOSDがバランス良く使用されます。
1.4 BlueStore #
SES 5から、BlueStoreがCephの新しいデフォルトストレージバックエンドになりました。BlueStoreはFileStoreよりもパフォーマンスが高く、データの完全なチェックサムや組み込みの圧縮機能を備えています。
BlueStoreは、1つ、2つ、または3つのいずれかのストレージデバイスを管理します。最もシンプルなケースでは、BlueStoreは1つのプライマリストレージデバイスを使用します。通常、ストレージデバイスは、次の2つの部分にパーティション分割されます。
BlueFSという名前の小容量のパーティション。RocksDBで必要な、ファイルシステムに似た機能を実装します。
通常、デバイスの残りの部分は、その部分を占有する大容量のパーティションになります。これはBlueStoreによって直接管理され、実際のデータがすべて含まれます。通常、このプライマリデバイスは、データディレクトリ内ではブロックシンボリックリンクで識別されます。
次のように、2つの追加デバイスにわたってBlueStoreを展開することもできます。
「WALデバイス」は、BlueStoreの内部ジャーナルまたは先書きログに使用できます。これは、データディレクトリでは、シンボリックリンクblock.wal
で識別されます。別個のWALデバイスを使用すると役立つのは、そのデバイスがプライマリデバイスまたはDBデバイスより高速な場合だけです。たとえば、次のような場合です。
WALデバイスがNVMeで、DBデバイスがSSD、データデバイスがSSDまたはHDDである。
WALデバイスとDBデバイスの両方が別個のSSDで、データデバイスがSSDまたはHDDである。
「DBデバイス」は、BlueStoreの内部メタデータを保存するために使用できます。BlueStore (または埋め込みのRocksDB)は、パフォーマンスを向上させるため、できる限り多くのメタデータをDBデバイス上に配置します。ここでも、共有DBデバイスをプロビジョニングすると役に立つのは、そのデバイスがプライマリデバイスより高速な場合だけです。
DBデバイスが十分なサイズになるよう慎重に計画してください。DBデバイスがいっぱいになると、メタデータがプライマリデバイスにあふれ、OSDのパフォーマンスが大きく低下します。
ceph daemon osd.ID perf dump
コマンドを使用して、WAL/DBパーティションがいっぱいであふれそうかどうかを調べることができます。slow_used_bytes
の値に、あふれているデータの量が表示されます。
cephuser@adm >
ceph daemon osd.ID perf dump | jq '.bluefs'
"db_total_bytes": 1073741824,
"db_used_bytes": 33554432,
"wal_total_bytes": 0,
"wal_used_bytes": 0,
"slow_total_bytes": 554432,
"slow_used_bytes": 554432,
1.5 追加情報 #
コミュニティプロジェクトとして、Cephには、独自の広範なオンラインヘルプがあります。このマニュアルに記載されていないトピックについては、https://docs.ceph.com/en/pacific/を参照してください。
S.A. Weil、S.A. Brandt、E.L. Miller、C. Maltzahnによる元のドキュメント『CRUSH: Controlled, Scalable, Decentralized Placement of Replicated Data』には、Cephの内部動作に関する有益な洞察が記載されています。特に大規模クラスタを展開する場合には、これを一読することをお勧めします。このドキュメントはhttp://www.ssrc.ucsc.edu/papers/weil-sc06.pdfにあります。
SUSE Enterprise Storageは、SUSE OpenStack以外の配布パッケージで使用できます。Cephクライアントは、SUSE Enterprise Storageと互換性があるレベルである必要があります。
注記SUSEはCeph展開のサーバコンポーネントをサポートし、クライアントはOpenStack配布パッケージベンダーによってサポートされます。
2 ハードウェア要件と推奨事項 #
Cephのハードウェア要件は、IOワークロードに大きく依存します。次のハードウェア要件と推奨事項は、詳細な計画を立てる際の起点と考えてください。
一般的に、このセクションで説明する推奨事項はプロセスごとの推奨事項です。同じマシンに複数のプロセスがある場合は、CPU、RAM、ディスク、およびネットワークの各要件を追加する必要があります。
2.1 ネットワーク概要 #
Cephには次のような論理ネットワークが含まれます。
パブリックネットワーク
と呼ばれるフロントエンドのネットワーククラスタネットワーク
と呼ばれる、バックエンドの信頼済み内部ネットワークこれは必要な場合のみ指定してください。1つ以上のゲートウェイ用クライアントネットワーク。これは必要な場合のみ指定してください。また、この章では扱いません。
パブリックネットワークはCephデーモンが他のCephデーモンやクライアントと通信するネットワークです。つまり、クラスタネットワークが構成されている場合を除き、すべてのCephクラスタのトラフィックはこのパブリックネットワークを通ります。
クラスタネットワークはOSDノード間のバックエンドネットワークであり、レプリケーション、再バランシング、リカバリに使用されます。このオプションのネットワークを構成した場合、理論上、デフォルトの3方向レプリケーションを使用するパブリックネットワークの2倍の帯域幅が生まれます。これは、プライマリOSDが2つのコピーを他のOSDに送る際に、このネットワークを使用するためです。一方、パブリックネットワークはクライアントとゲートウェイ間のネットワークであり、Monitor、マネージャ、MDSノード、OSDノードとの通信に使用されます。パブリックネットワークはMonitor、マネージャ、MDSノードがOSDノードと通信する際にも使用されます。
2.1.1 ネットワーク推奨事項 #
十分に要件を満たせるような帯域幅を備えた、フォールトトレラントな単一のネットワークをお勧めします。Cephパブリックネットワーク環境では、802.3ad (LACP)を使用してボンディングされた2つの25GbE (またはそれ以上)のネットワークインターフェイスをお勧めします。この環境がCephの最小セットアップとみなされます。クラスタネットワークを使用する場合、25GbEのネットワークインターフェイスを4つボンディングすることをお勧めします。2つ以上のネットワークインターフェイスをボンディングすることで、リンクアグリゲーションによりスループットが改善されます。さらに、リンクとスイッチに冗長性が与えられるため、耐障害性と保守性が向上します。
VLANを作成することで、ボンディングした機器を通過する異なるタイプのトラフィックを分離することもできます。たとえば、1つはパブリックネットワーク用、もう1つはクラスタネットワーク用として、計2つのVLANインターフェイスを提供するようにボンディングを設定できます。しかしながら、これはCephネットワークを構成する際の必須事項ではありません。ネットワークインターフェイスのボンディングの詳細については、https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-network.html#sec-network-iface-bondingを参照してください。
耐障害性はコンポーネントを障害ドメインに隔離することで強化できます。ネットワークの耐障害性を改善する目的で、別々のネットワークインターフェイスカード(NIC)2枚を1つのインターフェイスにボンディングすると、単一のNICの障害に対する保護が提供されます。同様に、2つのスイッチをボンディングすると、単一のスイッチの障害に対する保護が提供されます。必要なレベルの耐障害性を構築するために、ネットワーク機器のベンダーに相談することをお勧めします。
管理ネットワークのセットアップ(たとえば、分離されたSSH、Salt、またはDNSのネットワーク形成を可能とするもの)の追加はテストされておらず、サポート対象外です。
ストレージノードがDHCP経由で設定されている場合、さまざまCephデーモンが起動する前にネットワークを正しく設定するのにデフォルトのタイムアウトでは十分でないことがあります。この場合、CephのMONとOSDを正常に起動できません(systemctl status ceph\*
を実行すると「unable to bind」エラーになります)。この問題を回避するには、ストレージクラスタの各ノードでDHCPクライアントのタイムアウト時間を少なくとも30秒まで延ばすことをお勧めします。このためには、各ノードで以下の設定を変更します。
/etc/sysconfig/network/dhcp
で、以下を設定します。
DHCLIENT_WAIT_AT_BOOT="30"
/etc/sysconfig/network/config
で、以下を設定します。
WAIT_FOR_INTERFACES="60"
2.1.1.1 実行中のクラスタにプライベートネットワークを追加 #
Cephの展開中にクラスタネットワークを指定しない場合、単一のパブリックネットワーク環境と想定されます。Cephはパブリックネットワークで問題なく動作しますが、2つ目のプライベートクラスタネットワークを設定すると、パフォーマンスとセキュリティが向上します。2つのネットワークをサポートするには、各Cephノードに少なくとも2つのネットワークカードが必要です。
各Cephノードに以下の変更を適用する必要があります。これらの変更は、小規模なクラスタの場合は比較的短時間で済みますが、数百または数千のノードで構成されるクラスタの場合は非常に時間がかかる可能性があります。
次のコマンドを使用して、クラスタネットワークを設定します。
#
ceph config set global cluster_network MY_NETWORKOSDを再起動し、指定したクラスタネットワークにバインドします。
#
systemctl restart ceph-*@osd.*.serviceプライベートクラスタネットワークがOSレベルで想定どおりに動作していることを確認します。
2.1.1.2 異なるサブネット上のモニタノード #
モニタノードが複数のサブネット上に存在する場合(たとえば、別の部屋に配置されていたり、別のスイッチによってサービスを提供されていたりする場合)、CIDR表記でパブリックネットワークアドレスを指定する必要があります。
cephuser@adm >
ceph config set mon public_network "MON_NETWORK_1, MON_NETWORK_2, MON_NETWORK_N
以下に例を示します。
cephuser@adm >
ceph config set mon public_network "192.168.1.0/24, 10.10.0.0/16"
このセクションで説明するように、パブリックネットワーク(またはクラスタネットワーク)用に複数のネットワークセグメントを指定する場合、これらのサブネットはいずれも他のすべてのサブネットにルーティングできる必要があります。さもなければ、異なるネットワークセグメント上に存在するMONなどのCephデーモンが通信できず、クラスタが分割されてしまいます。また、ファイアウォールを使用している場合、必要に応じて、iptablesに各IPアドレスやサブネットを含め、すべてのノードでこれらのアドレスに対してポートを開放したかを確認してください。
2.2 複数のアーキテクチャの設定 #
SUSE Enterprise Storageでは、x86とArmの両方のアーキテクチャをサポートしています。各アーキテクチャを検討する際は、OSDあたりのコア数、周波数、およびRAMの観点から見ると、サイジングに関して、CPUアーキテクチャ間に実質的な差異はないことに注意することが重要です。
小型のx86プロセッサ(サーバ以外)と同様に、パフォーマンスの低いArmベースのコアは、特にイレージャコーディングプールに使用する場合は最適なエクスペリエンスを提供できない可能性があります。
このドキュメントでは、x86やArmと書く代わりにSYSTEM-ARCHと表記します。
2.3 ハードウェア設定 #
最高のプロダクトエクスペリエンスのために、推奨されるクラスタ構成から始めることをお勧めします。テスト用クラスタや、それほどパフォーマンスが要求されないクラスタのために、サポートされる最小限のクラスタ設定を記載しています。
2.3.1 最小クラスタ構成 #
最小限の運用クラスタは、次のような構成です。
サービスを共同配置した、最低でも4つの物理ノード(OSDノード)
ボンディングされたネットワークを構成する、デュアルポート10Gb Ethernet
分離された管理ノード(外部ノードに仮想化してもよい)
詳細な構成は以下の通りです。
4GBのRAM、4コア、1TBのストレージ容量を備えた別個の管理ノード。これは通常、Salt Masterノードです。Ceph Monitor、メタデータサーバ、Ceph OSD、Object Gateway、NFS GaneshaなどのCephサービスとゲートウェイは管理ノードではサポートされません。これは、管理ノードがクラスタの更新をオーケストレートし、個別にプロセスをアップグレードする必要があるためです。
それぞれ8つのOSDディスクを備えた、最低でも4つの物理OSDノード。要件は2.4.1項 「Minimum requirements」を参照してください。
クラスタの合計容量は、1つのノードが使用不能になることを想定したサイズとする必要があります。また、使用済み容量(冗長分を含む)の合計が80%を超えないようにする必要があります。
3つのCeph MonitorインスタンスMonitorはレイテンシの問題からHDDではなくSSD/NVMeストレージから実行する必要があります。
Monitor、メタデータサーバ、ゲートウェイは同じOSDノードに配置できます。Monitorの共同配置については、2.12項 「OSDとモニタでの1台のサーバの共有」を参照してください。サービスを共同配置する場合、メモリとCPUの要件を積み増す必要があります。
iSCSI Gateway、Object Gateway、メタデータサーバは最低でも4GBのRAMと4コアの追加が必要です。
CephFS、S3/Swift、iSCSIを使用する場合、冗長性と可用性を確保するため、それに応じた役割のインスタンス(メタデータサーバ、Object Gateway、iSCSI)が最低でも2つ必要です。
ノードはSUSE Enterprise Storage専用とし、他のいかなる物理的ワークロード、コンテナ化ワークロード、仮想化ワークロードにも使用しないでください。
VM上になんらかのゲートウェイ(iSCSI、Object Gateway、NFS Ganesha、メタデータサーバなど)が展開される場合、こうしたVMをクラスタの他の役割を担う物理マシンにホストしないでください(ゲートウェイは共同配置サービスとしてサポートされているため、これは不要です)。
コアとなる物理クラスタの外のハイパーバイザでサービスをVMとして展開する場合、障害ドメインは冗長性の確保を考慮する必要があります。
たとえば、同じハイパーバイザに同じタイプの複数の役割(複数のMONやMDSインスタンスなど)を展開しないでください。
VM上に展開する場合、優れたネットワーク接続性と上手く動作する時刻同期機能をノードに持たせることがきわめて重要です。
ハイパーバイザノードは、他のワークロードがCPU、RAM、ネットワーク、ストレージなどのリソースを消費することによる干渉を避けるため、適切なサイズにする必要があります。
2.3.2 運用クラスタの推奨設定 #
クラスタを拡張した場合、耐障害性を高めるため、Ceph Monitor、メタデータサーバ、ゲートウェイを別々のノードに再配置することをお勧めします。
7つのオブジェクトストレージノード
1つのノードが最大で合計ストレージの15%を超えないこと。
クラスタの合計容量は、1つのノードが使用不能になることを想定したサイズとする必要があります。また、使用済み容量(冗長分を含む)の合計が80%を超えないようにする必要があります。
内部クラスタと外部パブリックネットワークをそれぞれボンディングする、25Gb Ethernet(またはそれ以上)。
Storage Clusterあたり56以上のOSD
推奨設定の詳細については2.4.1項 「Minimum requirements」を参照してください。
専用の物理インフラストラクチャノード
3つのCeph Monitorノード: 4GBのRAM、4コアプロセッサ、ディスク用のRAID 1 SSD。
推奨設定の詳細については2.5項 「Monitorノード」を参照してください。
Object Gatewayノード: 32GBのRAM、8コアプロセッサ、ディスク用のRAID 1 SSD。
推奨設定の詳細については2.6項 「Object Gatewayノード」を参照してください。
iSCSI Gatewayノード: 16GBのRAM、8コアプロセッサ、ディスク用のRAID 1 SSD。
推奨設定の詳細については2.9項 「iSCSI Gatewayノード」を参照してください。
メタデータサーバノード(アクティブ x 1/ホットスタンバイ x 1): 32GBのRAM、8コアプロセッサ、ディスク用のRAID 1 SSD。
推奨設定の詳細については2.7項 「メタデータサーバノード」を参照してください。
1つのSES管理ノード: 4GBのRAM、4コアプロセッサ、ディスク用のRAID1 SSD。
2.3.3 マルチパス設定 #
マルチパスハードウェアを使用したい場合、設定ファイルのdevices
セクションでLVMがmultipath_component_detection = 1
を認識するようにしてください。この設定は、lvm config
コマンドで確認できます。
もしくは、LVMのフィルタ設定により、LVMがデバイスのmpathコンポーネントをフィルタするようにしてください。これはホスト固有です。
この方法はお勧めしません。multipath_component_detection = 1
を設定できない場合にのみ検討する必要があります。
マルチパス設定の詳細については、https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-multipath.html#sec-multipath-lvmを参照してください。
2.4 オブジェクトストレージノード #
2.4.1 Minimum requirements #
次のCPUの推奨事項は、Cephによる使用とは関係なくデバイスを考慮しています。
スピナあたり1つの2GHz CPUスレッド
SSDあたり2つの2GHz CPUスレッド
MVMeあたり4つの2GHz CPUスレッド
独立した10GbEネットワーク(パブリック/クライアントおよび内部)。4つの10GbEが必須、2つの25GbEを推奨。
必要なRAMの合計 = OSDの数 x (1GB +
osd_memory_target
) + 16GBosd_memory_target
の詳細については、Book “運用と管理ガイド”, Chapter 28 “Cephクラスタの設定”, Section 28.4.1 “自動キャッシュサイズ調整の設定”を参照してください。JBOD設定または個々のRAID-0設定のOSDディスク。
OSDジャーナルはOSDディスクに配置可能。
OSDディスクはSUSE Enterprise Storage専用である必要があります。
オペレーティングシステム専用のディスクおよびSSD(できればRAID 1設定)。
このOSDホストがキャッシュ階層化用のキャッシュプールの一部をホストする場合、最低でも4GBのRAMを追加で割り当て。
Ceph Monitor、ゲートウェイ、およびメタデータサーバはオブジェクトストレージノードに配置可能。
ディスク性能の理由から、OSDノードはベアメタルノードです。Ceph MonitorとCeph Managerの最小セットアップを除き、OSDノードで他のワークロードを実行しないでください。
ジャーナル用のSSD(SSDジャーナルとOSDの比率は6:1)。
OSDノードにiSCSIやRADOS Block Deviceなどのネットワークブロックデバイスがマッピングされていないことを確認してください。
2.4.2 最小ディスクサイズ #
OSD上で実行する必要があるディスク領域には2つのタイプがあります。WAL/DBデバイス用の領域と、保存データ用のプライマリ領域です。WAL/DBの最小値(デフォルト値)は6GBです。データ用の最小領域は5GBです。これは、5GB未満のパーティションには自動的に重み0が割り当てられるためです。
したがって、OSDの最小ディスク領域は11GBになりますが、テスト目的であっても20GB未満のディスクはお勧めしません。
2.4.3 BlueStoreのWALおよびDBデバイスの推奨サイズ #
BlueStoreの詳細については、1.4項 「BlueStore」を参照してください。
WALデバイス用に4GBを予約することをお勧めします。RBDのみのワークロードの最小DBサイズは64GBですが、Object GatewayおよびCephFSワークロードの推奨DBサイズは、メインデバイス容量の2%です(ただし、少なくとも196GB)。
重要高負荷な展開では、DB容量をさらに大きくすることをお勧めします。特に、RGWやCephFSの使用量が高い場合必要に応じて、DB領域拡張用のハードウェアを設置する収容能力(スロット)をある程度確保してください。
WALとDBデバイスを同じディスクに配置する予定の場合は、それぞれに別個のパーティションを設けるのではなく、両方のデバイスに対して単一のパーティションを使用することをお勧めします。これにより、CephはDBデバイスをWAL操作にも使用できます。Cephは必要時にのみDBパーティションをWALに使用するので、ディスク領域の管理が効率化します。もう1つの利点は、WALパーティションがいっぱいになる可能性は極めて低く、完全に使い切っていなければ、その領域が無駄になることはなく、DB操作に使用されることです。
DBデバイスをWALと共有するには、WALデバイスを「指定しない」で、DBデバイスのみを指定します。
OSDレイアウトを指定する方法の詳細については、Book “運用と管理ガイド”, Chapter 13 “運用タスク”, Section 13.4.3 “DriveGroups仕様を用いたOSDの追加”を参照してください。
2.4.5 推奨されるディスクの最大数 #
1台のサーバで、そのサーバで使用できる数だけのディスクを使用できます。サーバあたりのディスク数を計画する際には、考慮すべき点がいくつかあります。
「ネットワーク帯域幅」サーバのディスクが増えるほど、ディスク書き込み操作のためにネットワークカード経由で転送しなければならないデータが増えます。
「メモリ」2GBを超えるRAMは、BlueStoreキャッシュに使用されます。
osd_memory_target
のデフォルトである4GBを使用すると、回転型メディアに適したキャッシュ開始サイズがシステムに設定されます。SSDまたはNVMEを使用する場合は、OSDあたりのキャッシュサイズとRAM割り当てを増やすことを検討します。「耐障害性」サーバ全体に障害が発生した場合、搭載ディスクの数が多いほど、クラスタが一時的に失うOSDが増えます。さらに、レプリケーションルールを実行し続けるために、障害が発生したサーバからクラスタ内のほかのノードにすべてのデータをコピーする必要があります。
2.5 Monitorノード #
少なくとも3つのMONノードが必要です。モニタの数は常に奇数(1+2n)である必要があります。
4GBのRAM。
4つの論理コアを持つプロセッサ。
特に各モニタノードの
/var/lib/ceph
パスには、SSDか、その他の十分高速なストレージタイプを強くお勧めします。ディスクのレイテンシが大きいと、クォーラムが不安定になる可能性があるためです。冗長性を確保するには、RAID 1設定で2台のディスクを使用することをお勧めします。モニタが利用可能なディスク領域をログファイルの増大などから保護するため、モニタプロセスには、別個のディスク、または少なくとも別個のディスクパーティションを使用することをお勧めします。各ノードのモニタプロセスは1つだけにする必要があります。
OSDノード、MON、またはObject Gatewayノードを混在させることは、十分なハードウェアリソースが利用可能な場合にのみサポートされます。つまり、すべてのサービスの要件を合計する必要があります。
複数のスイッチにボンディングされた2つのネットワークインタフェース。
2.6 Object Gatewayノード #
Object Gatewayノードには最低でも6コアCPUと32GBのRAMを使用する必要があります。同じマシンに他のプロセスも配置されている場合、それらの要件を合計する必要があります。
2.7 メタデータサーバノード #
メタデータサーバノードの適切なサイズは、具体的な使用事例によって異なります。一般的には、メタデータサーバが処理する開いているファイルが多いほど、より多くのCPUとRAMが必要になります。最小要件は次のとおりです。
各メタデータサーバドメインに対して4GBのRAM。
ボンディングされた2つのネットワークインタフェース。
2個以上のコアを持つ2.5GHzのCPU。
2.8 管理ノード #
少なくとも4GBのRAMとクアッドコアCPUが必要です。これには、管理ノードにおけるSalt Masterの実行が含まれます。数百のノードで構成される大規模クラスタでは、6GBのRAMをお勧めします。
2.9 iSCSI Gatewayノード #
iSCSI Gatewayノードには最低でも6コアCPUと16GBのRAMを使用するべきです。
2.10 SESおよび、その他のSUSE製品 #
このセクションには、SESと他のSUSE製品の統合に関する重要な情報が記載されています。
2.10.1 SUSE Manager #
SUSE ManagerとSUSE Enterprise Storageは統合されていません。そのため、現在のところSUSE ManagerでSESクラスタを管理することはできません。
2.11 名前の制限 #
一般的に、Cephは、設定ファイル、プール名、ユーザ名などでASCII以外の文字をサポートしません。Cephクラスタを設定する場合、すべてのCephオブジェクト名/設定名で単純な英数字の文字(A~Z、a~z、0~9)と、最小限の句読点(「.」「-」「_」)のみを使用することをお勧めします。
3 管理ノードのHAセットアップ #
「管理ノード」はSalt Masterサービスが動作するCephクラスタノードです。管理ノードはSalt Minionサービスのクエリと命令を行うことで、他のクラスタノードを管理します。管理ノードには通常、ほかのサービスも含まれます。たとえば、「Prometheus」監視ツールキットに支援された「Grafana」ダッシュボードなどです。
管理ノードに障害が発生した場合、通常は、動作する新しいハードウェアをノードに提供し、最新のバックアップから完全なクラスタ設定スタックを復元する必要があります。この方法では時間がかかり、クラスタの停止も発生します。
管理ノードの障害によってCephクラスタのパフォーマンスにダウンタイムが発生するのを防止するため、Ceph管理ノードにはHA (高可用性)クラスタを利用することをお勧めします。
3.1 管理ノードのHAクラスタの概要 #
HAクラスタは、一方のクラスタノードで障害が発生した場合に、もう一方のノードがその役割(仮想化された管理ノードを含む)を自動的に引き継ぐという考えです。こうすることで、管理ノードに障害が発生したことを他のCephクラスタノードが認識することはありません。
管理ノード用の最小限のHAソリューションには、次のハードウェアが必要です。
High Availability ExtensionをインストールしたSUSE Linux Enterpriseを実行し、管理ノードを仮想化できるベアメタルサーバ2台。
2つ以上の冗長ネットワーク通信パス。たとえば、ネットワークデバイスボンディングを使用します。
管理ノード仮想マシンのディスクイメージをホストするための共有ストレージ。この共有ストレージは両方のサーバからアクセス可能である必要があります。たとえば、NFSエクスポート、Samba共有、iSCSIターゲットなどを使用できます。
クラスタの要件の詳細については、https://documentation.suse.com/sle-ha/15-SP3/single-html/SLE-HA-install-quick/#sec-ha-inst-quick-reqを参照してください。
3.2 管理ノードを有するHAクラスタの構築 #
次の手順は、管理ノードを仮想化するためのHAクラスタを構築する手順の中で最も重要なものをまとめたものです。詳細については、記載のリンクを参照してください。
共有ストレージを使用する基本的な2ノードHAクラスタを設定します。https://documentation.suse.com/sle-ha/15-SP3/single-html/SLE-HA-install-quick/#art-sleha-install-quickを参照してください。
両方のクラスタノードに、KVMハイパーバイザを実行するために必要なすべてのパッケージと
libvirt
ツールキットをインストールします。https://documentation.suse.com/sles/15-SP3/single-html/SLES-virtualization/#sec-vt-installation-kvmを参照してください。1つ目のクラスタノードで、
libvirt
を利用する新しいKVM VM (仮想マシン)を作成します。https://documentation.suse.com/sles/15-SP3/single-html/SLES-virtualization/#sec-libvirt-inst-virt-installを参照してください。事前設定済みの共有ストレージを使用して、VMのディスクイメージを保存します。VMのセットアップが完了したら、その設定を共有ストレージ上のXMLファイルにエクスポートします。以下の構文を使用してください。
#
virsh dumpxml VM_NAME > /path/to/shared/vm_name.xml管理ノードVMのリソースを作成します。HAリソースの作成に関する全般的な情報については、https://documentation.suse.com/sle-ha/15-SP3/single-html/SLE-HA-guide/#cha-conf-hawk2を参照してください。KVM仮想マシンのリソースの作成に関する詳細情報については、http://www.linux-ha.org/wiki/VirtualDomain_%28resource_agent%29を参照してください。
新しく作成したVMゲストで、管理ノードと、そこで必要な追加サービスを展開します。第6章 「Saltの展開」の関連手順に従います。同時に、非HAクラスタサーバに残りのCephクラスタノードを展開します。
パート II Cephクラスタの展開 #
- 4 導入と共通タスク
SUSE Enterprise Storage 7から、CephサービスはRPMパッケージではなくコンテナとして展開されます。展開プロセスには、以下の2つの基本的な手順があります。
- 5 SUSE Linux Enterprise Serverのインストールと設定
各クラスタノードでSUSE Linux Enterprise Server 15 SP3のインストールと登録を行います。SUSE Enterprise Storageのインストール中にアップデートリポジトリへのアクセスが必要なため、登録は必須です。最低でも、次のモジュールを導入します。
- 6 Saltの展開
SUSE Enterprise Storageは最初のクラスタの準備にSaltと
ceph-salt
を使用します。Saltを使用すると、「Salt Master」と呼ばれる単独の専用ホストから複数のクラスタノードに対して、同時に設定やコマンドを実行できます。Saltの展開前に、次の重要な点を考慮してください。- 7
ceph-salt
を使用したブートストラップクラスタの展開 このセクションでは、基本的なCephクラスタを展開する一連のプロセスを説明します。以下のサブセクションをよく読んで、記載されているコマンドを記載されている順番で実行してください。
- 8 cephadmを使用して残りのコアサービスを展開する
基本的なCephクラスタを展開した後、より多くのクラスタノードにコアサービスを展開します。クライアントからクラスタのデータにアクセスできるようにするには、追加のサービスも展開します。
- 9 追加サービスの展開
iSCSIは、クライアント(「イニシエータ」)から、リモートサーバ上のSCSIストレージデバイス(「ターゲット」)にSCSIコマンドを送信できるようにするSAN (ストレージエリアネットワーク)プロトコルです。SUSE Enterprise Storage 7.1には、Cephのストレージ管理をiSCSIプロトコル経由でMicrosoft Windows*、VMware* vSphereなどの異種クライアントから利用できるようにする機能が含まれています。マルチパスiSCSIアクセスによってこれらのクライアントの可用性とスケーラビリティが向上すると同時に、標準化されたiSCSIプロトコルがクライ…
4 導入と共通タスク #
SUSE Enterprise Storage 7から、CephサービスはRPMパッケージではなくコンテナとして展開されます。展開プロセスには、以下の2つの基本的な手順があります。
- ブートストラップクラスタの展開
このフェーズは「1日目の展開」と呼ばれ、次のタスクで構成されます。基礎となるオペレーティングシステムのインストール、Saltインフラストラクチャの設定、および1つのMONサービスと1つのMGRサービスで構成される最小クラスタの展開が含まれます。
すべてのクラスタノードで、基礎となるオペレーティングシステム(SUSE Linux Enterprise Server 15 SP3)のインストールと基本的な設定を行います。
ceph-salt
を介した初期展開の準備のために、すべてのクラスタノードにSaltインフラストラクチャを展開します。ceph-salt
経由でクラスタの基本的なプロパティを設定し、展開します。
- 追加サービスの展開
「2日目の展開」では、ゲートウェイや監視スタックなどの追加のコアおよび非コアCephサービスが展開されます。
Cephコミュニティのドキュメントでは、最初の展開の際にcephadm bootstrap
コマンドを使用していることに注意してください。ceph-salt
は、cephadm bootstrap
コマンドを自動的に呼び出します。cephadm bootstrap
コマンドは直接実行しないでください。cephadm bootstrap
を使用する手動のCephクラスタ展開はサポートされていません。
4.1 リリースノートの確認 #
リリースノートには、旧リリースのSUSE Enterprise Storageからの変更点に関する追加情報が記載されています。リリースノートを参照して以下を確認します。
使用しているハードウェアに特別な配慮が必要かどうか
使用しているソフトウェアパッケージに大幅な変更があるかどうか
インストールのために特別な注意が必要かどうか
リリースノートには、マニュアルに記載できなかった情報が記載されています。また、既知の問題に関する注意も記載されています。
release-notes-sesパッケージをインストールすると、ローカルディレクトリ/usr/share/doc/release-notes
にリリースノートが置かれます。https://www.suse.com/releasenotes/にあるオンラインのリリースノートも利用できます。
5 SUSE Linux Enterprise Serverのインストールと設定 #
各クラスタノードでSUSE Linux Enterprise Server 15 SP3のインストールと登録を行います。SUSE Enterprise Storageのインストール中にアップデートリポジトリへのアクセスが必要なため、登録は必須です。最低でも、次のモジュールを導入します。
Basesystem Module
Server Applications Module
SUSE Linux Enterprise Serverのインストール方法の詳細については、https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-install.htmlを参照してください。
各クラスタノードに「SUSE Enterprise Storage 7.1」の拡張機能をインストールします。
ヒント: SUSE Linux Enterprise Serverと共にSUSE Enterprise StorageをインストールするSUSE Enterprise Storage 7.1の拡張機能は、SUSE Linux Enterprise Server 15 SP3のインストール後に分けてインストールすることも、SUSE Linux Enterprise Server 15 SP3のインストール手順の中で追加することもできます。
拡張機能のインストール方法の詳細については、https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-register-sle.htmlを参照してください。
ネットワークを設定します。各ノードでDNS名が適切に解決されるようにする設定も含まれます。ネットワークの設定の詳細については、https://documentation.suse.com/sles/15-SP3/single-html/SLES-admin/#sec-network-yastを参照してください。DNSサーバの設定の詳細については、https://documentation.suse.com/sles/15-SP3/single-html/SLES-admin/#cha-dnsを参照してください。
6 Saltの展開 #
SUSE Enterprise Storageは最初のクラスタの準備にSaltとceph-salt
を使用します。Saltを使用すると、「Salt Master」と呼ばれる単独の専用ホストから複数のクラスタノードに対して、同時に設定やコマンドを実行できます。Saltの展開前に、次の重要な点を考慮してください。
「Salt Minion」は、Salt Masterと呼ばれる専用のノードによって制御されるノードです。
仮にSalt MasterホストがCephクラスタの一部である場合は、独自のSalt Minionを実行する必要があります。ただしこれは必須ではありません。
ヒント: 1つのサーバで複数の役割を共有各役割を別個のノードに展開すると、Cephクラスタで最適なパフォーマンスを実現できます。しかし、実際の展開では、1つのノードを複数の役割のために共有しなければならない場合があります。パフォーマンスやアップグレード手順で問題が起きないようにするため、Ceph OSD、メタデータサーバ、またはCeph Monitorの役割は管理ノードに展開しないでください。
Salt Minionは、ネットワークでSalt Masterのホスト名を正しく解決する必要があります。Minionは、デフォルトでは
salt
saltというホスト名を検索しますが、ネットワーク経由でアクセス可能なほかのホスト名を/etc/salt/minion
ファイルで指定できます。
Salt Masterノードに
salt-master
をインストールします。root@master #
zypper in salt-mastersalt-master
サービスが有効になっていて起動していることを確認します。必要であれば、サービスを有効にして起動します。root@master #
systemctl enable salt-master.serviceroot@master #
systemctl start salt-master.serviceファイアウォールを使用する場合は、Salt Masterノードのポート4505と4506がすべてのSalt Minionノードに対して開いていることを確認します。これらのポートが閉じている場合は、
yast2 firewall
コマンドを使用してポートを開き、 サービスに適切なゾーンを許可できます。たとえば、public
を許可します。パッケージ
salt-minion
をすべてのミニオンノードにインストールします。root@minion >
zypper in salt-minion/etc/salt/minion
を編集し、次の行のコメントを解除します。#log_level_logfile: warning
warning
ログレベルをinfo
に変更します。注記:log_level_logfile
とlog_level
log_level
は、どのログメッセージが画面に表示されるかを制御します。一方、log_level_logfile
は、どのログメッセージが/var/log/salt/minion
に書き込まれるかを制御します。注記「すべて」のクラスタ(ミニオン)ノードのログレベルを変更したか確認してください。
すべてのノードが他のノードの「完全修飾ドメイン名」をパブリッククラスタネットワークのIPアドレスに解決できることを確認します。
すべてのミニオンをマスターに接続するように設定します。ホスト名
salt
でSalt Masterに接続できない場合は、ファイル/etc/salt/minion
を編集するか、次の内容で新しいファイル/etc/salt/minion.d/master.conf
を作成します。master: host_name_of_salt_master
先に説明した設定ファイルを変更した場合は、すべての関連するSalt MinionのSaltサービスを再起動します。
root@minion >
systemctl restart salt-minion.serviceすべてのノードで
salt-minion
サービスが有効になっていて起動していることを確認します。必要であれば、次のコマンドを使用して有効にして起動します。#
systemctl enable salt-minion.service#
systemctl start salt-minion.service各Salt Minionの指紋を確認して、指紋が一致する場合、Salt Master上のすべてのSaltキーを受諾します。
注記Salt Minionの指紋が空に戻る場合は、Salt MinionがSalt Masterの設定を持っていて、Salt Masterと通信できることを確認します。
各ミニオンの指紋を表示します。
root@minion >
salt-call --local key.finger local: 3f:a3:2f:3f:b4:d3:d9:24:49:ca:6b:2c:e1:6c:3f:c3:83:37:f0:aa:87:42:e8:ff...すべてのSalt Minionの指紋を収集した後、Salt Master上の、受諾されていない全ミニオンキーの指紋を一覧にします。
root@master #
salt-key -F [...] Unaccepted Keys: minion1: 3f:a3:2f:3f:b4:d3:d9:24:49:ca:6b:2c:e1:6c:3f:c3:83:37:f0:aa:87:42:e8:ff...ミニオンの指紋が一致する場合は、それらを受諾します。
root@master #
salt-key --accept-allキーが受諾されたことを確認します。
root@master #
salt-key --list-allすべてのSalt Minionが応答するかテストします。
root@master #
salt-run manage.status
7 ceph-salt
を使用したブートストラップクラスタの展開 #
このセクションでは、基本的なCephクラスタを展開する一連のプロセスを説明します。以下のサブセクションをよく読んで、記載されているコマンドを記載されている順番で実行してください。
7.1 ceph-salt
のインストール #
ceph-salt
はcephadmに管理されるCephクラスタを展開するためのツールを提供します。ceph-salt
はSaltインフラストラクチャを使用して、OSの管理(たとえば、ソフトウェアアップデートや時刻の同期)や、Salt Minionの役割の定義を行います。
Salt Master上で、ceph-saltパッケージをインストールします。
root@master #
zypper install ceph-salt
先に示したコマンドは、ceph-salt-formulaを依存関係としてインストールします。この依存関係により、/etc/salt/master.d
ディレクトリに追加のファイルを挿入することで、Salt Masterの設定が変更されます。変更を適用するには、salt-master.service
を再起動し、Saltモジュールを同期させます。
root@master #
systemctl restart salt-master.serviceroot@master #
salt \* saltutil.sync_all
7.2 クラスタプロパティの設定 #
ceph-salt config
コマンドを使用して、クラスタの基本的なプロパティを設定します。
/etc/ceph/ceph.conf
ファイルは、cephadmで管理されており、ユーザは編集しないでください。Cephの設定パラメータは、新しいceph config
コマンドを使用して設定する必要があります。詳細については、Book “運用と管理ガイド”, Chapter 28 “Cephクラスタの設定”, Section 28.2 “設定データベース”を参照してください。
7.2.1 ceph-salt
シェルの使用 #
config
をパスやサブコマンドを使わずに実行する場合、インタラクティブなceph-salt
ceph-saltシェルを入力します。このシェルは、1つのバッチで複数のプロパティを設定する必要がありますが、完全なコマンド構文を入力したくない場合に便利です。
root@master #
ceph-salt config/>
ls o- / ............................................................... [...] o- ceph_cluster .................................................. [...] | o- minions .............................................. [no minions] | o- roles ....................................................... [...] | o- admin .............................................. [no minions] | o- bootstrap ........................................... [no minion] | o- cephadm ............................................ [no minions] | o- tuned ..................................................... [...] | o- latency .......................................... [no minions] | o- throughput ....................................... [no minions] o- cephadm_bootstrap ............................................. [...] | o- advanced .................................................... [...] | o- ceph_conf ................................................... [...] | o- ceph_image_path .................................. [ no image path] | o- dashboard ................................................... [...] | | o- force_password_update ................................. [enabled] | | o- password ................................................ [admin] | | o- ssl_certificate ....................................... [not set] | | o- ssl_certificate_key ................................... [not set] | | o- username ................................................ [admin] | o- mon_ip .................................................. [not set] o- containers .................................................... [...] | o- registries_conf ......................................... [enabled] | | o- registries .............................................. [empty] | o- registry_auth ............................................... [...] | o- password .............................................. [not set] | o- registry .............................................. [not set] | o- username .............................................. [not set] o- ssh ............................................... [no key pair set] | o- private_key .................................. [no private key set] | o- public_key .................................... [no public key set] o- time_server ........................... [enabled, no server host set] o- external_servers .......................................... [empty] o- servers ................................................... [empty] o- subnet .................................................. [not set]
ceph-salt
のls
コマンドの出力を見るとわかるように、クラスタ構成がツリー構造に整理されます。ceph-salt
シェルに含まれる、クラスタの特定のプロパティを設定するには、次の2つのオプションがあります。
現在位置からコマンドを実行し、第1引数としてプロパティへの絶対パスを入力する
/>
/cephadm_bootstrap/dashboard ls o- dashboard ....................................................... [...] o- force_password_update ..................................... [enabled] o- password .................................................... [admin] o- ssl_certificate ........................................... [not set] o- ssl_certificate_key ....................................... [not set] o- username .................................................... [admin]/> /cephadm_bootstrap/dashboard/username set ceph-admin
Value set.設定する必要があるプロパティへのパスを変更してから、コマンドを実行する
/>
cd /cephadm_bootstrap/dashboard//ceph_cluster/minions>
ls o- dashboard ....................................................... [...] o- force_password_update ..................................... [enabled] o- password .................................................... [admin] o- ssl_certificate ........................................... [not set] o- ssl_certificate_key ....................................... [not set] o- username ................................................[ceph-admin]
ceph-salt
シェルの中では自動補完機能を使用できます。これは、通常のLinuxシェル(Bash)の自動補完と同じようなものです。この機能は設定パス、サブコマンド、またはSalt Minion名を補完します。設定パスを自動補完する場合は、次の2つのオプションがあります。
現在位置からの相対的なパスをシェルに補完させる場合は、TABキー<Tab>を2回押します。
シェルに絶対パスを補完させる場合は、/を入力してからTABキー<Tab>を2回押します。
シェルからパスを使用せずに
cdceph-salt
コマンドを入力すると、ツリー構造のクラスタ構成が出力され、現在パスの行がアクティブになります。上下の方向キーを使用して、それぞれの行に移動できます。Enterを押して確定すると、アクティブ行に設定パスが変更されます。
ドキュメントの整合性を維持するため、ceph-salt
シェルを入力しない単一のコマンド構文を使用しています。たとえば、次のコマンドを使用してクラスタ構成のツリーを一覧にできます。
root@master #
ceph-salt config ls
7.2.2 Salt Minionの追加 #
第6章 「Saltの展開」で展開し受諾したSalt Minionの全体またはサブセットをCephクラスタ構成に含めます。Salt Minionはフルネームで指定できます。また、「*」と「?」のグロブ表現を使用することで複数のSalt Minionを同時に含めることもできます。/ceph_cluster/minions
パスでadd
サブコマンドを使用します。次のコマンドは受諾済みのSalt Minionをすべて含めます。
root@master #
ceph-salt config /ceph_cluster/minions add '*'
指定したSalt Minionが追加されたことを確認します。
root@master #
ceph-salt config /ceph_cluster/minions ls
o- minions ................................................. [Minions: 5]
o- ses-master.example.com .................................. [no roles]
o- ses-min1.example.com .................................... [no roles]
o- ses-min2.example.com .................................... [no roles]
o- ses-min3.example.com .................................... [no roles]
o- ses-min4.example.com .................................... [no roles]
7.2.3 cephadmで管理するSalt Minionの指定 #
Cephクラスタに属し、cephadmで管理するノードを指定します。Cephサービスを実行するすべてのノードと、管理ノードを含めます。
root@master #
ceph-salt config /ceph_cluster/roles/cephadm add '*'
7.2.4 管理ノードの指定 #
管理ノードは、ceph.conf
設定ファイルとCeph管理キーリングがインストールされるノードです。通常、Ceph関連のコマンドは管理ノードで実行します。
すべての、または、ほとんどのホストがSUSE Enterprise Storageに所属するような均質な環境では、Salt Masterと同じホストに管理ノードを置くことお勧めします。
あるSaltインフラストラクチャが複数のクラスタのホストとなるような異種環境(たとえば、SUSE Enterprise Storageと共にSUSE Managerを使用するような環境)では、Salt Masterと同じホストに管理ノードを置かないでください。
管理ノードを指定するには、次のコマンドを実行します。
root@master #
ceph-salt config /ceph_cluster/roles/admin add ses-master.example.com 1 minion added.root@master #
ceph-salt config /ceph_cluster/roles/admin ls o- admin ................................................... [Minions: 1] o- ses-master.example.com ...................... [Other roles: cephadm]
ceph.conf
と管理キーリングを複数のノードにインストールする展開で必要な場合は、Ceph設定ファイルと管理キーリングを複数のノードにインストールすることもできます。セキュリティ上の理由から、すべてのクラスタのノードにインストールすることは避けてください。
7.2.5 最初のMON/MGRノードの指定 #
クラスタをブートストラップするSalt Minionをクラスタ内から指定する必要があります。このミニオンはCeph MonitorとCeph Managerサービスを実行する最初のミニオンになります。
root@master #
ceph-salt config /ceph_cluster/roles/bootstrap set ses-min1.example.com Value set.root@master #
ceph-salt config /ceph_cluster/roles/bootstrap ls o- bootstrap ..................................... [ses-min1.example.com]
さらに、public_network
パラメータが正しく設定されていることを確認するために、パブリックネットワーク上のブートストラップMONのIPアドレスを指定する必要があります。たとえば、次のコマンドを実行します。
root@master #
ceph-salt config /cephadm_bootstrap/mon_ip set 192.168.10.20
7.2.6 調整されるプロファイルの指定 #
クラスタの中から、アクティブに調整されるプロファイルを保有するミニオンを指定する必要があります。そのためには、次のコマンドを実行して役割を明示的に追加してください。
1つのミニオンにlatency
とthroughput
の両方の役割を持たせることはできません。
root@master #
ceph-salt config /ceph_cluster/roles/tuned/latency add ses-min1.example.com Adding ses-min1.example.com... 1 minion added.root@master #
ceph-salt config /ceph_cluster/roles/tuned/throughput add ses-min2.example.com Adding ses-min2.example.com... 1 minion added.
7.2.7 SSHキーペアの生成 #
cephadmはSSHプロトコルを使用してクラスタノードと通信します。cephadm
という名前のユーザアカウントが自動的に作成され、SSH通信に使用されます。
SSHキーペアの公開鍵と秘密鍵を生成する必要があります。
root@master #
ceph-salt config /ssh generate Key pair generated.root@master #
ceph-salt config /ssh ls o- ssh .................................................. [Key Pair set] o- private_key ..... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83] o- public_key ...... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
7.2.8 タイムサーバの設定 #
すべてのクラスタノードは信頼できるタイムソースと時刻を同期する必要があります。時刻を同期するには、いくつかのシナリオがあります。
最適なNTPサービスを使用して時刻を同期するように、すべてのクラスタノードを設定済みの場合、タイムサーバ処理を完全に無効化します。
root@master #
ceph-salt config /time_server disableお使いのサイトに単一のタイムソースがすでに存在する場合は、そのタイムソースのホスト名を指定します。
root@master #
ceph-salt config /time_server/servers add time-server.example.com別の方法として、
ceph-salt
にはSalt Minionの1つを残りのクラスタのタイムサーバとして機能するように設定する機能があります。この機能は「内部タイムサーバ」と呼ばれることもあります。このシナリオでは、ceph-salt
は内部タイムサーバ(Salt Minionの1つであるはず)を、pool.ntp.org
などの外部のタイムサーバと時刻を同期するように設定します。同時に、それ以外のミニオンを内部タイムサーバから時刻を取得するように設定します。この方法は、次のように実現できます。root@master #
ceph-salt config /time_server/servers add ses-master.example.comroot@master #
ceph-salt config /time_server/external_servers add pool.ntp.org/time_server/subnet
オプションはサブネットを指定します。NTPクライアントはこのサブネットからNTPサーバへのアクセスを許可されます。サブネットは/time_server/servers
を指定した際に自動で設定されます。変更や手動指定が必要な場合は、次のコマンドを実行します。root@master #
ceph-salt config /time_server/subnet set 10.20.6.0/24
次のコマンドでタイムサーバの設定を確認します。
root@master #
ceph-salt config /time_server ls
o- time_server ................................................ [enabled]
o- external_servers ............................................... [1]
| o- pool.ntp.org ............................................... [...]
o- servers ........................................................ [1]
| o- ses-master.example.com ..................................... [...]
o- subnet .............................................. [10.20.6.0/24]
時刻同期設定の詳細については、https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-ntp.html#sec-ntp-yastを参照してください。
7.2.9 Cephダッシュボードログインアカウント情報の設定 #
基本的なクラスタが展開されると、Cephダッシュボードが使用可能になります。アクセスするには、有効なユーザ名とパスワードを設定する必要があります。次に例を示します。
root@master #
ceph-salt config /cephadm_bootstrap/dashboard/username set adminroot@master #
ceph-salt config /cephadm_bootstrap/dashboard/password set PWD
デフォルトでは、最初のダッシュボードユーザはダッシュボードに最初にログインの際にパスワードの変更を求められます。機能を無効化するには、次のコマンドを実行します。
root@master #
ceph-salt config /cephadm_bootstrap/dashboard/force_password_update disable
7.2.10 コンテナレジストリの使用 #
Cephクラスタは、コンテナ化されたCephサービスをダウンロードして展開できるように、コンテナレジストリにアクセスできる必要があります。レジストリにアクセスするには、次の2つの方法があります。
クラスタが
registry.suse.com
のデフォルトレジストリに(直接またはプロキシ経由で)アクセスできる場合は、ローカルレジストリを作成せずにこのURLに直接ceph-salt
をポイントすることができます。7.2.10.2項 「コンテナイメージへのパスの設定」の手順に従って続行します。クラスタがデフォルトレジストリにアクセスできない場合(たとえば、エアギャップ環境の展開の場合)は、ローカルコンテナレジストリを設定する必要があります。ローカルレジストリを作成して設定したら、そのレジストリに
ceph-salt
をポイントする必要があります。
7.2.10.1 ローカルレジストリの作成と設定(オプション) #
ローカルレジストリを作成するさまざまな方法があります。このセクションの手順は、セキュアなレジストリと非セキュアなレジストリを作成する例です。コンテナイメージレジストリの実行に関する一般的な情報については、https://documentation.suse.com/sles/15-SP3/single-html/SLES-container/#sec-docker-registry-installationを参照してください。
クラスタ内のすべてのノードがアクセスできるマシンにレジストリを展開します。管理ノードをお勧めします。デフォルトでは、レジストリはポート5000でリスンします。
レジストリノードで、次のコマンドを使用して、ポートが空いていることを確認します。
ss -tulpn | grep :5000
他のプロセス(iscsi-tcmu
など)がすでにポート5000でリスンしている場合は、レジストリコンテナのポート5000にマップするために使用できる別の空きポートを確認します。
Containers Module拡張機能が有効になっていることを確認します。
>
SUSEConnect --list-extensions | grep -A2 "Containers Module" Containers Module 15 SP3 x86_64 (Activated)次のパッケージがインストールされていることを確認します: apache2-utils (セキュアなレジストリを有効にしている場合)、cni、cni-plugins、podman、podman-cni-config、およびskopeo。
次の情報を収集します。
レジストリホスト(
REG_HOST_FQDN
)の完全修飾ドメイン名。5000のレジストリコンテナポート(
REG_HOST_PORT
)にマップするために使用される使用可能なポート番号。レジストリがセキュアか非セキュアかどうか(
insecure=[true|false]
)。
非セキュアなレジストリ(SSL暗号化なし)を開始するには、次の手順に従います。
非セキュアなレジストリの
ceph-salt
を設定します。cephuser@adm >
ceph-salt config containers/registries_conf enablecephuser@adm >
ceph-salt config containers/registries_conf/registries \ add prefix=REG_HOST_FQDN
insecure=true \ location=REG_HOST_PORT
:5000必要なディレクトリ(たとえば、
/var/lib/registry
)を作成し、podman
コマンドを使用してレジストリを開始することにより、非セキュアなレジストリを開始します。#
mkdir -p /var/lib/registry#
podman run --privileged -d --name registry \ -pREG_HOST_PORT
:5000 -v /var/lib/registry:/var/lib/registry \ --restart=always registry:2再起動後にレジストリを開始するには、レジストリの
systemd
ユニットファイルを作成して有効にします。>
sudo
podman generate systemd --files --name registry>
sudo
mv container-registry.service /etc/systemd/system/>
sudo
systemctl enable container-registry.service
セキュアなレジストリを開始するには、次の手順に従います。
必要なディレクトリを作成します。
#
mkdir -p /var/lib/registry/{auth,certs}SSL証明書を生成します。
#
openssl req -newkey rsa:4096 -nodes -sha256 \ -keyout /var/lib/registry/certs/domain.key -x509 -days 365 \ -out /var/lib/registry/certs/domain.crt注記CN=[value]
の値をホストの完全修飾ドメイン名([REG_HOST_FQDN
])に設定します。証明書をすべてのクラスタノードにコピーし、証明書キャッシュを更新します。
#
salt-cp '*' /var/lib/registry/certs/domain.crt \ /etc/pki/trust/anchors/#
salt '*' cmd.shell "update-ca-certificates"レジストリへの認証用にユーザ名とパスワードの組み合わせを生成します。
#
htpasswd2 -bBc /var/lib/registry/auth/htpasswd \REG_USERNAME
REG_PASSWORD
セキュアなレジストリを開始します。
REGISTRY_STORAGE_DELETE_ENABLED=true
フラグを使用して、後でskopeo delete
コマンドを使用してイメージを削除できるようにします。podman run --name myregistry -p
REG_HOST_PORT
:5000 \ -v /var/lib/registry:/var/lib/registry \ -v /var/lib/registry/auth:/auth:z \ -e "REGISTRY_AUTH=htpasswd" \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -v /var/lib/registry/certs:/certs:z \ -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt" \ -e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key" \ -e REGISTRY_STORAGE_DELETE_ENABLED=true \ -e REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true -d registry:2レジストリへのセキュアなアクセスをテストします。
>
curl https://REG_HOST_FQDN
:REG_HOST_PORT
/v2/_catalog \ -uREG_USERNAME
:REG_PASSWORD
ローカルレジストリが作成されたら、
registry.suse.com
にある公式のSUSEレジストリからローカルレジストリにコンテナイメージを同期する必要があります。同期するために、skopeoパッケージに含まれているskopeo sync
コマンドを使用できます。詳細については、マニュアルページ(man 1 skopeo-sync
)を参照してください。次に例を示します。例 7.1: マニフェストファイルの表示 #skopeo inspect docker://registry.suse.com/ses/7.1/ceph/ceph | jq .RepoTags skopeo inspect docker://registry.suse.com/ses/7.1/ceph/grafana | jq .RepoTags skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-server:2.32.1 | jq .RepoTags skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-node-exporter:1.1.2 | jq .RepoTags skopeo inspect docker://registry.suse.com/ses/7.1/ceph/prometheus-alertmanager:0.21.0 | jq .RepoTags
例 7.2: ディレクトリに同期 #すべてのCephイメージを同期します。
skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph /root/images/
最新のイメージのみを同期します。
skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/ceph:latest /root/images/
例 7.3: Grafanaイメージを同期 #skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana /root/images/
最新のGrafanaイメージのみを同期します。
skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/grafana:latest /root/images/
例 7.4: 最新のPrometheusイメージを同期 #skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-server:2.32.1 /root/images/ skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-node-exporter:1.1.2 /root/images/ skopeo sync --src docker --dest dir registry.suse.com/ses/7.1/ceph/prometheus-alertmanager:0.21.0 /root/images/
ローカルレジストリのURLを設定します。
cephuser@adm >
ceph-salt config /containers/registry_auth/registry set REG_HOST_URLローカルレジストリにアクセスするためのユーザ名とパスワードを設定します。
cephuser@adm >
ceph-salt config /containers/registry_auth/username set REG_USERNAMEcephuser@adm >
ceph-salt config /containers/registry_auth/password set REG_PASSWORD
更新されたコンテナが新しく登場した際にローカルレジストリを再同期しないようにするには、「レジストリキャッシュ」を設定できます。
7.2.10.2 コンテナイメージへのパスの設定 #
このセクションでは、ブートストラップクラスタのコンテナイメージへのパスを設定する方法を説明します(最初のCeph MonitorとCeph Managerのペアの展開)。パスは、監視スタックなどの追加サービスのコンテナイメージには適用されません。
プロキシを使用してコンテナレジストリサーバと通信する必要がある場合は、すべてのクラスタノードで次の設定手順を実行します。
コンテナの設定ファイルをコピーします。
>
sudo
cp /usr/share/containers/containers.conf /etc/containers/containers.conf新しくコピーしたファイルを編集し、
http_proxy
設定を[engine]
セクションに追加します。次に例を示します。>
cat /etc/containers/containers.conf [engine] http_proxy=proxy.example.com [...]
cephadmは、コンテナイメージへの有効なURIパスを知っている必要があります。次のコマンドを実行して、デフォルト設定を確認します。
root@master #
ceph-salt config /cephadm_bootstrap/ceph_image_path ls
代替レジストリまたはローカルレジストリが必要ない場合は、デフォルトのSUSEコンテナレジストリを指定します。
root@master #
ceph-salt config /cephadm_bootstrap/ceph_image_path set registry.suse.com/ses/7.1/ceph/ceph
ローカルレジストリへのパスなど、展開に特定のパスが必要な場合は、次のように設定します。
root@master #
ceph-salt config /cephadm_bootstrap/ceph_image_path set LOCAL_REGISTRY_PATH
7.2.11 データ転送中の暗号化(msgr2)の有効化 #
MSGR2プロトコルは、Cephの通信プロトコルです。このプロトコルは、ネットワークを通過するすべてのデータを暗号化するセキュリティモードを提供し、認証ペイロードをカプセル化し、新しい認証モード(Kerberosなど)を将来的に統合することを可能にします。
現在のところ、CephFSやRADOS Block Deviceなどの、LinuxカーネルのCephFSクライアントはmsgr2をサポートしていません。
Cephデーモンは複数のポートにバインドできるため、古いCephクライアントとv2対応の新しいクライアントが同じクラスタに接続できます。デフォルトでは、MONはIANAが新しく割り当てた3300番ポート(CE4hまたは0xCE4)と、過去のデフォルトポートである6789番ポートにバインドされます。前者は新しいv2プロトコル用で、後者は旧式のv1プロトコル用です。
v2プロトコル(MSGR2)は2つの接続モードに対応しています。
- crcモード
接続確立時の整合性チェックと、CRC32Cによる完全性チェックが行われます。
- セキュアモード
接続確立時の厳重な初回認証と、認証後のすべてのトラフィックの完全な暗号化が行われます。これには、暗号の完全性チェックが含まれます。
ほとんどの接続については、オプションで使用するモードを制御できます。
- ms_cluster_mode
Cephデーモン間のクラスタ内通信に使用される接続モード(または許可モード)。複数のモードが記載されている場合は、先頭に記載されたものが優先されます。
- ms_service_mode
クライアントがクラスタに接続する際に使用する許可モードのリスト。
- ms_client_mode
Cephクラスタと通信する際にクライアントが使用(または許可)する、優先度順の接続モードのリスト。
Monitorだけに適用される、同様のオプションセットが存在します。これにより、管理者がMonitorとの通信に異なる要求(通常はより厳しい要求)を設定することができます。
- ms_mon_cluster_mode
Monitor間の通信に使用される接続モード(または許可モード)。
- ms_mon_service_mode
クライアントや他のCephデーモンがMonitorに接続する際に使用する許可モードのリスト。
- ms_mon_client_mode
Monitorと通信する際にクライアントやMonitor以外のデーモンが使用する、優先度順の接続モードのリスト。
展開中にMSGR2の暗号化モードを有効化するには、ceph-salt
設定に設定オプションをいくつか追加してからceph-salt apply
を実行します。
secure
モードを使用するには、次のコマンドを実行します。
設定ツールの
ceph_confceph-salt
にグローバルセクションを追加します。
root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf add global
次のオプションを設定します。
root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_cluster_mode "secure crc"root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode "secure crc"root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode "secure crc"
crc
の前にsecure
がついているか確認してください。
secure
モードを強制するには、次のコマンドを実行します。
root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_cluster_mode secureroot@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode secureroot@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_client_mode secure
上記の設定を変更したい場合、Monitor設定の保存先に変更内容を設定します。その手段として、ceph config set
コマンドを使用します。
root@master #
ceph config set global CONNECTION_OPTION CONNECTION_MODE [--force]
例:
root@master #
ceph config set global ms_cluster_mode "secure crc"
現在値やデフォルト値を確認したい場合は、次のコマンドを実行します。
root@master #
ceph config get CEPH_COMPONENT CONNECTION_OPTION
たとえば、OSDのms_cluster_mode
を取得するには、次のコマンドを実行します。
root@master #
ceph config get osd ms_cluster_mode
7.2.12 クラスタネットワークの設定 #
必要に応じて分離されたクラスタネットワークを実行する場合は、クラスタのネットワークIPアドレスの末尾にスラッシュ記号で区切ったサブネットマスクを付加したアドレスを設定する必要がある場合があります。たとえば、192.168.10.22/24
のようなアドレスです。
cluster_network
を有効化するには、次のコマンドを実行します。
root@master #
ceph-salt config /cephadm_bootstrap/ceph_conf add globalroot@master #
ceph-salt config /cephadm_bootstrap/ceph_conf/global set cluster_network NETWORK_ADDR
7.2.13 クラスタ設定の確認 #
最低限のクラスタ設定が完了しました。明らかな誤りがないか、確認してください。
root@master #
ceph-salt config ls
o- / ............................................................... [...]
o- ceph_cluster .................................................. [...]
| o- minions .............................................. [Minions: 5]
| | o- ses-master.example.com .................................. [admin]
| | o- ses-min1.example.com ......................... [bootstrap, admin]
| | o- ses-min2.example.com ................................. [no roles]
| | o- ses-min3.example.com ................................. [no roles]
| | o- ses-min4.example.com ................................. [no roles]
| o- roles ....................................................... [...]
| o- admin .............................................. [Minions: 2]
| | o- ses-master.example.com ....................... [no other roles]
| | o- ses-min1.example.com ................. [other roles: bootstrap]
| o- bootstrap ................................ [ses-min1.example.com]
| o- cephadm ............................................ [Minions: 5]
| o- tuned ..................................................... [...]
| o- latency .......................................... [no minions]
| o- throughput ....................................... [no minions]
o- cephadm_bootstrap ............................................. [...]
| o- advanced .................................................... [...]
| o- ceph_conf ................................................... [...]
| o- ceph_image_path .............. [registry.suse.com/ses/7.1/ceph/ceph]
| o- dashboard ................................................... [...]
| o- force_password_update ................................. [enabled]
| o- password ................................... [randomly generated]
| o- username ................................................ [admin]
| o- mon_ip ............................................ [192.168.10.20]
o- containers .................................................... [...]
| o- registries_conf ......................................... [enabled]
| | o- registries .............................................. [empty]
| o- registry_auth ............................................... [...]
| o- password .............................................. [not set]
| o- registry .............................................. [not set]
| o- username .............................................. [not set]
o- ssh .................................................. [Key Pair set]
| o- private_key ..... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
| o- public_key ...... [53:b1:eb:65:d2:3a:ff:51:6c:e2:1b:ca:84:8e:0e:83]
o- time_server ............................................... [enabled]
o- external_servers .............................................. [1]
| o- 0.pt.pool.ntp.org ......................................... [...]
o- servers ....................................................... [1]
| o- ses-master.example.com .................................... [...]
o- subnet ............................................. [10.20.6.0/24]
次のコマンドを実行することで、クラスタ設定が有効かどうかを確認できます。
root@master #
ceph-salt status
cluster: 5 minions, 0 hosts managed by cephadm
config: OK
7.2.14 クラスタ設定のエクスポート #
基本的なクラスタの設定が完了し、設定が有効であること確認したら、クラスタ設定をファイルにエクスポートするとよいでしょう。
root@master #
ceph-salt export > cluster.json
ceph-salt export
の出力にはSSHの秘密鍵が含まれます。セキュリティ上の不安がある場合は、適切な予防策を講じるまではコマンドを実行しないでください。
クラスタ設定を破棄してバックアップの状態に戻す場合は、次のコマンドを実行します。
root@master #
ceph-salt import cluster.json
7.3 ノードの更新と最小クラスタのブートストラップ #
クラスタを展開する前に、すべてのノードのソフトウェアパッケージをすべて更新してください。
root@master #
ceph-salt update
アップデート中にノードがReboot is needed
と報告した場合、重要なOSのパッケージ(カーネルなど)が新しいバージョンに更新されているため、ノードを再起動して変更を適用する必要があります。
再起動が必要なノードをすべて再起動するには、--reboot
オプションを付加してください。
root@master #
ceph-salt update --reboot
もしくは、個別に再起動してください。
root@master #
ceph-salt reboot
Salt Masterはceph-salt update --reboot
やceph-salt reboot
コマンドでは再起動されません。Salt Masterの再起動が必要な場合、手動で再起動してください。
ノードの更新後、最小のクラスタをブートストラップします。
root@master #
ceph-salt apply
ブートストラップが完了すると、クラスタにはCeph MonitorとCeph Managerが1つずつ含まれます。
先のコマンドを実行すると、インタラクティブなユーザインターフェイスが開かれ、各ミニオンの現在の進行状況が表示されます。
スクリプトから設定を適用する必要がある場合、非インタラクティブモードで展開することもできます。このモードは、リモートマシンからクラスタを展開する際にも有用です。ネットワーク経由で進捗状況を画面に更新し続けると、煩わしく感じる場合があるためです。
root@master #
ceph-salt apply --non-interactive
7.4 最終ステップの確認 #
ceph-salt apply
コマンドが完了すると、Ceph MonitorとCeph Managerが1つずつ存在するはずです。root
に相当するadmin
の役割を与えられたミニオンか、sudo
を使用するcephadm
ユーザは、ceph status
コマンドを正常に実行できるはずです。
次の手順には、cephadmを使用した追加のCeph Monitor、Ceph Manager、OSD、監視スタック、ゲートウェイの展開が含まれます。
続ける前に新しいクラスタのネットワーク設定を確認してください。この時点では、ceph-salt
設定の/cephadm_bootstrap/mon_ip
に入力された内容に従って、public_network
設定が読み込まれます。しかし、この設定はCeph Monitorにしか適用されません。次のコマンドを使用して、この設定を確認できます。
root@master #
ceph config get mon public_network
これがCephの動作に必要な最低限の設定ですが、このpublic_network
設定をglobal
に設定することをお勧めします。つまり、この設定がMONだけでなく、すべてのタイプのCephデーモンにも適用されます。
root@master #
ceph config set global public_network "$(ceph config get mon public_network)"
この手順は必須ではありません。しかしながら、この設定を使用しないと、Ceph OSDと(Ceph Monitorを除く)その他のデーモンが「すべてのアドレス」をリスンすることになります。
完全に分離されたネットワークを使用して、OSDどうしを通信させたい場合は、次のコマンドを実行します。
root@master #
ceph config set global cluster_network "cluster_network_in_cidr_notation"
このコマンドを実行すると、展開中に作成されるOSDは最初から所定のクラスタネットワークを使用するようになります。
クラスタが高密度なノード(ホストあたりのOSDが62個を超える)から構成されるように設定する場合は、Ceph OSDに十分なポートを割り当ててください。デフォルトのポート範囲(6800~7300)のままでは、ホストあたりのOSDは最大62個までです。高密度なノードを含むクラスタの場合、ms_bind_port_max
の設定を適切な値に調整してください。各OSDは追加で8個のポートを使用します。たとえば、96個のOSDを実行するように設定されたホストの場合、768個のポートが必要になります。この場合、次のコマンドを実行して、ms_bind_port_max
を少なくとも7568に設定する必要があります。
root@master #
ceph config set osd.* ms_bind_port_max 7568
これを動作させるには、設定した値に応じてファイアウォールの設定も調整する必要があります。詳細については、Book “Troubleshooting Guide”, Chapter 13 “Hints and tips”, Section 13.7 “Firewall settings for Ceph”を参照してください。
7.5 非セキュアクライアントの無効化 #
Pacific v15.2.11以降、非セキュアなクライアントがクラスタに参加できることを通知する新しいヘルス警告が導入されました。この警告はデフォルトで「オン」になっています。CephダッシュボードはクラスタをHEALTH_WARN
ステータスで表示し、コマンドラインでクラスタステータスを確認すると次のように通知します。
cephuser@adm >
ceph status
cluster:
id: 3fe8b35a-689f-4970-819d-0e6b11f6707c
health: HEALTH_WARN
mons are allowing insecure global_id reclaim
[...]
この警告は、Ceph Monitorが、パッチが適用されていない古いクライアントがクラスタに接続することを引き続き許可していることを意味します。これにより、クラスタのアップグレード中も既存のクライアントが引き続き接続できるようになりますが、対処する必要のある問題があることを警告します。クラスタとすべてのクライアントが最新バージョンのCephにアップグレードされたら、次のコマンドを実行して、パッチが適用されていないクライアントを禁止します。
cephuser@adm >
ceph config set mon auth_allow_insecure_global_id_reclaim false
8 cephadmを使用して残りのコアサービスを展開する #
基本的なCephクラスタを展開した後、より多くのクラスタノードにコアサービスを展開します。クライアントからクラスタのデータにアクセスできるようにするには、追加のサービスも展開します。
現時点では、Cephオーケストレータ(ceph orch
サブコマンド)を使用したコマンドライン上でのCephサービスの展開がサポートされています。
8.1 ceph orch
コマンド #
Cephオーケストレータコマンドであるceph orch
は、新しいクラスタノード上で、クラスタコンポーネントの一覧とCephサービスの展開を行います。このコマンドはcephadmモジュールのインターフェイスです。
8.1.1 オーケストレータステータスの表示 #
次のコマンドは、Cephオーケストレータの現在モードとステータスを表示します。
cephuser@adm >
ceph orch status
8.1.2 デバイス、サービス、デーモンの一覧 #
すべてのディスクデバイスを一覧にするには、次のコマンドを実行します。
cephuser@adm >
ceph orch device ls
Hostname Path Type Serial Size Health Ident Fault Available
ses-master /dev/vdb hdd 0d8a... 10.7G Unknown N/A N/A No
ses-min1 /dev/vdc hdd 8304... 10.7G Unknown N/A N/A No
ses-min1 /dev/vdd hdd 7b81... 10.7G Unknown N/A N/A No
[...]
「サービス」とは、特定のタイプのCephサービスを指す総称です。たとえば、Ceph Managerなどです。
「デーモン」とは、サービスの特定のインスタンスを指します。たとえば、ses-min1
という名前のノードで実行されるmgr.ses-min1.gdlcik
プロセスなどです。
cephadmが認識しているすべてのサービスを一覧にするには、次のコマンドを実行します。
cephuser@adm >
ceph orch ls
NAME RUNNING REFRESHED AGE PLACEMENT IMAGE NAME IMAGE ID
mgr 1/0 5m ago - <no spec> registry.example.com/[...] 5bf12403d0bd
mon 1/0 5m ago - <no spec> registry.example.com/[...] 5bf12403d0bd
リストに特定のノードのサービスだけを表示するには、オプションの-–host
パラメータを使用します。特定のタイプのサービスだけを表示するには、オプションの--service-type
パラメータを使用します。指定できるタイプは、mon
、osd
、mgr
、mds
、およびrgw
です。
cephadmが展開した実行中のすべてのデーモンを一覧にするには、次のコマンドを実行します。
cephuser@adm >
ceph orch ps
NAME HOST STATUS REFRESHED AGE VERSION IMAGE ID CONTAINER ID
mgr.ses-min1.gd ses-min1 running) 8m ago 12d 15.2.0.108 5bf12403d0bd b8104e09814c
mon.ses-min1 ses-min1 running) 8m ago 12d 15.2.0.108 5bf12403d0bd a719e0087369
特定のデーモンのステータスを照会するには、--daemon_type
と--daemon_id
を使用します。OSDの場合、IDは数字のOSD IDです。MDSの場合、IDはファイルシステム名です。
cephuser@adm >
ceph orch ps --daemon_type osd --daemon_id 0cephuser@adm >
ceph orch ps --daemon_type mds --daemon_id my_cephfs
8.2 サービス仕様と配置仕様 #
Cephサービスの展開内容を指定する方法としては、YAMLフォーマットのファイルを作成して、展開したいサービスの仕様を記載することをお勧めします。
8.2.1 サービス仕様の作成 #
サービスタイプごとに個別の仕様ファイルを作成できます。以下に例を示します。
root@master #
cat nfs.yml
service_type: nfs
service_id: EXAMPLE_NFS
placement:
hosts:
- ses-min1
- ses-min2
spec:
pool: EXAMPLE_POOL
namespace: EXAMPLE_NAMESPACE
もしくは、各サービスを実行するノードを記載した単一のファイル(cluster.yml
など)により、複数の(または、すべての)サービスタイプを指定することもできます。それぞれのサービスタイプを3つのダッシュ記号(---
)で区切ることを忘れないでください。
cephuser@adm >
cat cluster.yml
service_type: nfs
service_id: EXAMPLE_NFS
placement:
hosts:
- ses-min1
- ses-min2
spec:
pool: EXAMPLE_POOL
namespace: EXAMPLE_NAMESPACE
---
service_type: rgw
service_id: REALM_NAME.ZONE_NAME
placement:
hosts:
- ses-min1
- ses-min2
- ses-min3
---
[...]
各プロパティが意味するものは、以下の通りです。
service_type
サービスのタイプです。次のいずれかを指定できます。Cephサービス(
mon
、mgr
、mds
、crash
、osd
、rbd-mirror
)、ゲートウェイ(nfs
、rgw
)、監視スタックの一部(alertmanager
、grafana
、node-exporter
、prometheus
)。service_id
サービスの名前です。次のサービスタイプについては、
service_id
プロパティは不要です。mon
、mgr
、alertmanager
、grafana
、node-exporter
、prometheus
。placement
どのノードがサービスを実行するかを指定します。詳細については、8.2.2項 「配置仕様の作成」を参照してください。
spec
サービスタイプに関連する、追加仕様です。
通常、Cephクラスタのサービスには、いくつかの固有のプロパティがあります。個別のサービス仕様の例と詳細については、8.3項 「Cephサービスの展開」を参照してください。
8.2.2 配置仕様の作成 #
Cephサービスを展開するには、サービスの展開先ノードをcephadmが認識する必要があります。placement
プロパティを使用して、サービスを適用するノードのホスト名の略称を列挙してください。
cephuser@adm >
cat cluster.yml
[...]
placement:
hosts:
- host1
- host2
- host3
[...]
8.2.3 クラスタ仕様の適用 #
すべてのサービス仕様とサービスの配置仕様を記載した完全なcluster.yml
ファイルの作成が完了したら、次のコマンドを実行して、クラスタに仕様を適用してください。
cephuser@adm >
ceph orch apply -i cluster.yml
クラスタのステータスを確認するには、ceph orch status
コマンドを実行します。詳細については、「8.1.1項 「オーケストレータステータスの表示」」を参照してください。
8.2.4 実行中のクラスタ仕様のエクスポート #
8.2項 「サービス仕様と配置仕様」で説明した仕様ファイルを用いてCephクラスタにサービスを展開したにもかかわらず、運用中にクラスタの設定が元の仕様から変わる場合もあります。また、誤って仕様ファイルを削除してしまうことも考えられます。
実行中のクラスタからすべての仕様を取得するには、次のコマンドを実行してください。
cephuser@adm >
ceph orch ls --export
placement:
hosts:
- hostname: ses-min1
name: ''
network: ''
service_id: my_cephfs
service_name: mds.my_cephfs
service_type: mds
---
placement:
count: 2
service_name: mgr
service_type: mgr
---
[...]
--format
オプションを付加することで、デフォルトのyaml
出力フォーマットを変更できます。選択できるフォーマットは、json
、json-pretty
、yaml
です。以下に例を示します。
ceph orch ls --export --format json
8.3 Cephサービスの展開 #
基本的なクラスタの実行後、他のノードにCephサービスを展開できます。
8.3.1 Ceph MonitorとCeph Managerの展開 #
Cephクラスタでは、3個または5個のMONを異なるノードに展開します。クラスタに5個以上のノードが含まれる場合、5個のMONを展開することをお勧めします。MONと同じノードにMGRを展開すると良いでしょう。
MONとMGRを展開する際は、7.2.5項 「最初のMON/MGRノードの指定」で基本的なクラスタを構成した際に追加した、最初のMONを忘れずに含めてください。
MONを展開するには、次の仕様を適用してください。
service_type: mon placement: hosts: - ses-min1 - ses-min2 - ses-min3
別のノードを追加する必要がある場合は、同じYAMLリストにホスト名を付加してください。以下に例を示します。
service_type: mon placement: hosts: - ses-min1 - ses-min2 - ses-min3 - ses-min4
同様に、MGRを展開するには次の仕様を適用してください。
展開ごとに、少なくとも3個のCeph Managerが展開されているかを確認してください。
service_type: mgr placement: hosts: - ses-min1 - ses-min2 - ses-min3
MONまたはMGRが同じサブネット上に存在しない場合、サブネットアドレスを付加する必要があります。以下に例を示します。
service_type: mon placement: hosts: - ses-min1:10.1.2.0/24 - ses-min2:10.1.5.0/24 - ses-min3:10.1.10.0/24
8.3.2 Ceph OSDの展開 #
以下の条件をすべて満たす場合、ストレージデバイスは「使用可能」とみなされます。
デバイスにパーティションが作成されていない。
デバイスがLVM状態ではない。
デバイスがマウント先になっていない。
デバイスにファイルシステムが含まれない。
デバイスにBlueStore OSDが含まれない。
デバイスのサイズが5GBを超えている。
これらの条件が満たされない場合、CephはそのOSDのプロビジョニングを拒否します。
OSDを展開する方法は2つあります。
「使用可能」とみなされた未使用のストレージデバイスをすべて使用するよう、Cephに指示する方法。
cephuser@adm >
ceph orch apply osd --all-available-devicesDriveGroupsを使用してデバイスを記述したOSD仕様を作成し、そのプロパティを基にデバイスを展開する方法(Book “運用と管理ガイド”, Chapter 13 “運用タスク”, Section 13.4.3 “DriveGroups仕様を用いたOSDの追加”を参照してください)。プロパティの例としては、デバイスの種類(SSDまたはHDD)、デバイスのモデル名、サイズ、デバイスが存在するノードなどがあります。仕様の作成後、次のコマンドを実行して仕様を適用します。
cephuser@adm >
ceph orch apply osd -i drive_groups.yml
8.3.3 メタデータサーバの展開 #
CephFSは1つ以上のMDS(メタデータサーバ)サービスを必要とします。CephFSを作成するには、まず以下の仕様を適用して、MDSサーバを作成する必要があります。
最低でも2つのプールを作成してから以下の仕様を適用してください。1つはCephFSのデータ用、もう1つはCephFSのメタデータ用のプールです。
service_type: mds service_id: CEPHFS_NAME placement: hosts: - ses-min1 - ses-min2 - ses-min3
MDSが機能したら、CephFSを作成します。
ceph fs new CEPHFS_NAME metadata_pool data_pool
8.3.4 Object Gatewayの展開 #
cephadmはObject Gatewayを、特定の「レルム」と「ゾーン」を管理するデーモンのコレクションとして展開します。
Object Gatewayサービスを既存のレルムとゾーンに関連付けることも(詳細については、Book “運用と管理ガイド”, Chapter 21 “Ceph Object Gateway”, Section 21.13 “マルチサイトObject Gateway”を参照してください)、存在しないREALM_NAMEとZONE_NAMEを指定することもできます。後者の場合、次の設定を適用すると自動的にゾーンとレルムが作成されます。
service_type: rgw service_id: REALM_NAME.ZONE_NAME placement: hosts: - ses-min1 - ses-min2 - ses-min3 spec: rgw_realm: RGW_REALM rgw_zone: RGW_ZONE
8.3.4.1 セキュアなSSLアクセスの使用 #
Object Gatewayへの接続にセキュアなSSL接続を使用するには、有効なSSL証明書とキーファイルのペアが必要です(詳細については、Book “運用と管理ガイド”, Chapter 21 “Ceph Object Gateway”, Section 21.7 “Object GatewayでのHTTPS/SSLの有効化”を参照してください)。必要な作業は、SSLの有効化、SSL接続のポート番号の指定、SSL証明書とキーファイルの指定です。
SSLを有効化し、ポート番号を指定するには、仕様に次の内容を記載します。
spec: ssl: true rgw_frontend_port: 443
SSL証明書とキーを指定するには、YAML仕様ファイルに内容を直接ペーストすることができます。行末のパイプ記号(|
)は、構文解析の際に複数行にまたがる文字列を1つの値として認識させるためのものです。以下に例を示します。
spec: ssl: true rgw_frontend_port: 443 rgw_frontend_ssl_certificate: | -----BEGIN CERTIFICATE----- MIIFmjCCA4KgAwIBAgIJAIZ2n35bmwXTMA0GCSqGSIb3DQEBCwUAMGIxCzAJBgNV BAYTAkFVMQwwCgYDVQQIDANOU1cxHTAbBgNVBAoMFEV4YW1wbGUgUkdXIFNTTCBp [...] -----END CERTIFICATE----- rgw_frontend_ssl_key: | -----BEGIN PRIVATE KEY----- MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDLtFwg6LLl2j4Z BDV+iL4AO7VZ9KbmWIt37Ml2W6y2YeKX3Qwf+3eBz7TVHR1dm6iPpCpqpQjXUsT9 [...] -----END PRIVATE KEY-----
SSL証明書とキーファイルの内容をペーストする代わりに、rgw_frontend_ssl_certificate:
キーワードとrgw_frontend_ssl_key:
キーワードを削除して、設定データベースにSSL証明書とキーファイルをアップロードすることもできます。
cephuser@adm >
ceph config-key set rgw/cert/REALM_NAME/ZONE_NAME.crt \ -i SSL_CERT_FILEcephuser@adm >
ceph config-key set rgw/cert/REALM_NAME/ZONE_NAME.key \ -i SSL_KEY_FILE
8.3.4.1.1 ポート443と80の両方でリスンするようにObject Gatewayを設定する #
ポート443 (HTTPS)とポート80 (HTTP)の両方でリスンするようにObject Gatewayを設定するには、次の手順に従います。
この手順のコマンドは、レルムとゾーンのdefault
を使用します。
仕様ファイルを提供して、Object Gatewayを展開します。Object Gateway仕様の詳細については、8.3.4項 「Object Gatewayの展開」を参照してください。次のコマンドを実行します。
cephuser@adm >
ceph orch apply -i SPEC_FILESSL証明書が仕様ファイルで提供されていない場合は、次のコマンドを使用してSSL証明書を追加します。
cephuser@adm >
ceph config-key set rgw/cert/default/default.crt -i certificate.pemcephuser@adm >
ceph config-key set rgw/cert/default/default.key -i key.pemrgw_frontends
オプションのデフォルト値を変更します。cephuser@adm >
ceph config set client.rgw.default.default rgw_frontends \ "beast port=80 ssl_port=443"cephadmによって作成された特定の設定を削除します。次のコマンドを実行して、
rgw_frontends
オプションが設定されているターゲットを特定します。cephuser@adm >
ceph config dump | grep rgwたとえば、ターゲットは
client.rgw.default.default.node4.yiewdu
です。現在の特定のrgw_frontends
値を削除します。cephuser@adm >
ceph config rm client.rgw.default.default.node4.yiewdu rgw_frontendsヒントrgw_frontends
の値を削除する代わりに指定できます。例:cephuser@adm >
ceph config set client.rgw.default.default.node4.yiewdu \ rgw_frontends "beast port=80 ssl_port=443"Object Gatewayを再起動します。
cephuser@adm >
ceph orch restart rgw.default.default
8.3.4.2 サブクラスタを使用した展開 #
「サブクラスタ」はクラスタ内のノードの整理に役立ちます。これによりワークロードを分離することで、弾力的な拡張が容易になります。サブクラスタを使用して展開する場合は、次の設定を適用します。
service_type: rgw service_id: REALM_NAME.ZONE_NAME.SUBCLUSTER placement: hosts: - ses-min1 - ses-min2 - ses-min3 spec: rgw_realm: RGW_REALM rgw_zone: RGW_ZONE subcluster: SUBCLUSTER
8.3.5 iSCSI Gatewayの展開 #
cephadmが展開するiSCSI Gatewayは、クライアント(「イニシエータ」)から、リモートサーバ上のSCSIストレージデバイス(「ターゲット」)にSCSIコマンドを送信できるようにする、SAN(ストレージエリアネットワーク)プロトコルです。
展開するには以下の設定を適用します。trusted_ip_list
にすべてのiSCSI GatewayノードとCeph ManagerノードのIPアドレスが含まれているか確認してください(以下の出力例を参照してください)。
以下の仕様を適用する前に、プールが作成されているか確認してください。
service_type: iscsi service_id: EXAMPLE_ISCSI placement: hosts: - ses-min1 - ses-min2 - ses-min3 spec: pool: EXAMPLE_POOL api_user: EXAMPLE_USER api_password: EXAMPLE_PASSWORD trusted_ip_list: "IP_ADDRESS_1,IP_ADDRESS_2"
trusted_ip_list
に列挙されたIPについて、カンマ区切りの後にスペースが入っていないことを確認してください。
8.3.5.1 セキュアなSSLの設定 #
セキュアなSSL接続をCephダッシュボードとiSCSIターゲットAPIの間で使用するには、有効なSSL証明書とキーファイルのペアが必要です。証明書とキーファイルは、CAが発行したものか自己署名したものを使用します(Book “運用と管理ガイド”, Chapter 10 “手動設定”, Section 10.1.1 “自己署名証明書の作成”を参照してください)。SSLを有効化するには、仕様ファイルにapi_secure: true
設定を含めます。
spec: api_secure: true
SSL証明書とキーを指定するには、YAML仕様ファイルに内容を直接ペーストすることができます。行末のパイプ記号(|
)は、構文解析の際に複数行にまたがる文字列を1つの値として認識させるためのものです。以下に例を示します。
spec: pool: EXAMPLE_POOL api_user: EXAMPLE_USER api_password: EXAMPLE_PASSWORD trusted_ip_list: "IP_ADDRESS_1,IP_ADDRESS_2" api_secure: true ssl_cert: | -----BEGIN CERTIFICATE----- MIIDtTCCAp2gAwIBAgIYMC4xNzc1NDQxNjEzMzc2MjMyXzxvQ7EcMA0GCSqGSIb3 DQEBCwUAMG0xCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARVdGFoMRcwFQYDVQQHDA5T [...] -----END CERTIFICATE----- ssl_key: | -----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5jdYbjtNTAKW4 /CwQr/7wOiLGzVxChn3mmCIF3DwbL/qvTFTX2d8bDf6LjGwLYloXHscRfxszX/4h [...] -----END PRIVATE KEY-----
8.3.6 NFS Ganeshaの展開 #
NFS Ganeshaは、NFSバージョン4.1以降をサポートしています。NFSバージョン3はサポートしていません。
cephadmはNFS Ganeshaの展開に、事前定義されたRADOSプールとオプションのネームスペースを使用します。NFS Ganeshaを展開するには、次の仕様を適用してください。
事前定義されたRADOSプールが必要です。これが存在しない場合は、ceph orch apply
処理に失敗します。プールの作成の詳細については、Book “運用と管理ガイド”, Chapter 18 “ストレージプールの管理”, Section 18.1 “プールの作成”を参照してください。
service_type: nfs service_id: EXAMPLE_NFS placement: hosts: - ses-min1 - ses-min2 spec: pool: EXAMPLE_POOL namespace: EXAMPLE_NAMESPACE
EXAMPLE_NFSにはNFSエクスポートを識別する任意の文字列を指定します。
EXAMPLE_POOLにはNFS GaneshaのRADOS設定オブジェクトを保存するプール名を指定します。
EXAMPLE_NAMESPACE(オプション)には、希望するObject GatewayのNFSネームスペースを指定します(
ganesha
など)。
8.3.7 配備 rbd-mirror
#
rbd-mirror
サービスは2つのCephクラスタ間でRADOS Block Deviceイメージの同期を行います(詳細についてはBook “運用と管理ガイド”, Chapter 20 “RADOS Block Device”, Section 20.4 “RBDイメージのミラーリング”を参照してください)。rbd-mirror
を展開するには、次の仕様を使用してください。
service_type: rbd-mirror service_id: EXAMPLE_RBD_MIRROR placement: hosts: - ses-min3
8.3.8 監視スタックの展開 #
監視スタックは、Prometheus、Prometheusエクスポータ、Prometheus Alertmanager、Grafanaから構成されます。Cephダッシュボードはこうしたコンポーネントを利用して、クラスタの使用量やパフォーマンスの詳細なメトリクスの保存と視覚化を行います。
展開に監視スタックサービスのカスタムコンテナイメージやローカルコンテナイメージを必要とする場合は、Book “運用と管理ガイド”, Chapter 16 “監視とアラート”, Section 16.1 “カスタムイメージまたはローカルイメージの設定”を参照してください。
監視スタックを展開するには、以下の手順に従ってください。
Ceph Managerデーモンで
prometheus
モジュールを有効化します。これにより、Cephの内部メトリクスが公開され、Prometheusから読み取れるようになります。cephuser@adm >
ceph mgr module enable prometheus注記このコマンドはPrometheusの展開前に実行してください。展開前にコマンドを実行していない場合、Prometheusを再展開してPrometheusの設定を更新する必要があります。
cephuser@adm >
ceph orch redeploy prometheus次のような内容を含む仕様ファイル(
monitoring.yaml
など)を作成します。service_type: prometheus placement: hosts: - ses-min2 --- service_type: node-exporter --- service_type: alertmanager placement: hosts: - ses-min4 --- service_type: grafana placement: hosts: - ses-min3
次のコマンドを実行して、監視サービスを適用します。
cephuser@adm >
ceph orch apply -i monitoring.yaml監視サービスの展開には1、2分かかる場合があります。
Prometheus、Grafana、Cephダッシュボードは、お互いに通信できるようにすべて自動的に設定されます。そのため、この手順で展開されたとき、Cephダッシュボードには完全に機能するGrafanaが統合されています。
このルールの例外は、RBDイメージの監視だけです。詳細については、Book “運用と管理ガイド”, Chapter 16 “監視とアラート”, Section 16.5.4 “RBDイメージ監視の有効化”を参照してください。
9 追加サービスの展開 #
9.1 iSCSIゲートウェイのインストール #
iSCSIは、クライアント(「イニシエータ」)から、リモートサーバ上のSCSIストレージデバイス(「ターゲット」)にSCSIコマンドを送信できるようにするSAN (ストレージエリアネットワーク)プロトコルです。SUSE Enterprise Storage 7.1には、Cephのストレージ管理をiSCSIプロトコル経由でMicrosoft Windows*、VMware* vSphereなどの異種クライアントから利用できるようにする機能が含まれています。マルチパスiSCSIアクセスによってこれらのクライアントの可用性とスケーラビリティが向上すると同時に、標準化されたiSCSIプロトコルがクライアントとSUSE Enterprise Storage 7.1クラスタ間に追加のセキュリティ分離層も提供します。この設定機能はceph-iscsi
という名前です。Cephストレージ管理者は、ceph-iscsi
を使用して、シンプロビジョニングおよび複製された高可用性ボリュームを定義できます。これらのボリュームでは、Ceph RBD (RADOS Block Device)により、読み込み専用スナップショット、読み書きクローン、および自動サイズ調整がサポートされます。これにより、単一のceph-iscsi
ゲートウェイホスト、またはマルチパスフェールオーバーをサポートする複数のゲートウェイホストを通じてボリュームをエクスポートできます。iSCSIプロトコルによってボリュームを他のSCSIブロックデバイスと同じように利用できるようになり、Linux、Microsoft Windows、およびVMwareホストはiSCSIプロトコルを使用してボリュームに接続できます。つまり、SUSE Enterprise Storage 7.1の顧客は、従来のSANの特徴と利点をすべて備えた完全なブロックストレージインフラストラクチャサブシステムをCeph上で効果的に実行でき、将来の増加に対応できます。
この章では、CephクラスタインフラストラクチャをiSCSI Gatewayと共に設定し、クライアントホストがiSCSIプロトコルを使ってリモート保存データをローカルストレージデバイスとして使用できるようにするための情報について詳しく説明します。
9.1.1 iSCSIブロックストレージ #
iSCSIは、IP (インターネットプロトコル)を使用するSCSI (Small Computer System Interface)コマンドセットを実装したもので、RFC 3720で規定されています。iSCSIはサービスとして実装され、クライアント(イニシエータ)はTCPポート3260でセッションを経由してサーバ(ターゲット)と通信します。iSCSIターゲットのIPアドレスとポートを「iSCSIポータル」と呼び、1つ以上のポータルを通じてターゲットを公開できます。ターゲットと1つ以上のポータルの組み合わせを「TPG」(ターゲットポータルグループ)と呼びます。
iSCSIの基礎となるデータリンク層プロトコルはほとんどの場合Ethernetです。具体的には、最新のiSCSIインフラストラクチャは、最適なスループットのために10ギガビットEthernetまたはより高速なネットワークを使用します。iSCSI GatewayとバックエンドのCephクラスタ間の接続には、10ギガビットEthernetを強くお勧めします。
9.1.1.1 LinuxカーネルiSCSIターゲット #
LinuxカーネルiSCSIターゲットは元々、プロジェクトの発端となったドメインとWebサイトlinux-iscsi.org
にちなんでLIOと呼ばれていました。しばらくの間、競合するiSCSIターゲット実装がLinuxプラットフォームで4つも利用可能な状態が続いていましたが、最終的にはLIOがiSCSIの単一のリファレンスターゲットとして普及しました。LIOのメインラインカーネルコードは、シンプルではあるものの若干あいまいな「ターゲット」という名前を用いて、「ターゲットコア」と、さまざまなフロントエンド/バックエンドターゲットモジュールを区別しています。
最も一般的に用いられているフロントエンドモジュールはまず間違いなくiSCSIです。ただし、LIOはFC (ファイバチャネル)、FCoE (ファイバチャネルオーバーEthernet)、およびその他の複数のフロントエンドプロトコルもサポートしています。現在のところ、SUSE Enterprise StorageによってサポートされているのはiSCSIプロトコルのみです。
最もよく使用されるターゲットバックエンドモジュールは、ターゲットホスト上で利用可能なブロックデバイスを単に再エクスポートできるモジュールです。このモジュールは「iblock」という名前です。ただし、LIOには、RBDイメージへの並列化マルチパスI/Oアクセスをサポートする、RBD固有のバックエンドモジュールもあります。
9.1.1.2 iSCSIイニシエータ #
このセクションでは、Linux、Microsoft Windows、およびVMwareの各プラットフォームで使用されているiSCSIイニシエータについて簡単に紹介します。
9.1.1.2.1 Linux #
Linuxプラットフォームの標準のイニシエータはopen-iscsi
です。open-iscsi
はデーモンiscsid
を起動し、ユーザはこのデーモンを使用して特定のポータル上のiSCSIターゲットを検出してターゲットにログインし、iSCSIボリュームをマップできます。iscsid
はSCSIの中間層と通信して、カーネル内ブロックデバイスを作成します。これにより、カーネルはこのブロックデバイスをシステムの他のSCSIブロックデバイスと同じように扱うことができます。open-iscsi
イニシエータをデバイスマッパーマルチパス(dm-multipath
)機能と組み合わせて展開することで、高可用性iSCSIブロックデバイスを提供できます。
9.1.1.2.2 Microsoft WindowsとHyper-V #
Microsoft WindowsオペレーティングシステムのデフォルトのiSCSIイニシエータは、Microsoft iSCSIイニシエーターです。このiSCSIサービスはGUI (グラフィカルユーザインタフェース)を使用して設定でき、高可用性のためにマルチパスI/Oをサポートしています。
9.1.1.2.3 VMware #
VMware vSphereおよびESXのデフォルトのiSCSIイニシエータは、VMware ESXソフトウェアiSCSIイニシエータvmkiscsi
です。これが有効な場合、vSphere Clientから、またはvmkiscsi-tool
コマンドを使用して設定できます。その後、vSphere iSCSIストレージアダプタを介してVMFSに接続されたストレージボリュームをフォーマットし、他のVMストレージデバイスと同じように使用できます。VMwareイニシエータも、高可用性のためにマルチパスI/Oをサポートしています。
9.1.2 ceph-iscsi
に関する一般情報 #
ceph-iscsi
は、RADOS Block Deviceの利点とiSCSIのユビキタスな汎用性を組み合わせたものです。iSCSIターゲットホスト(iSCSI Gatewayとして知られている)上でceph-iscsi
を使用することで、Cephクライアントプロトコルに対応していなくても、ブロックストレージを利用する必要があるすべてのアプリケーションがCephの利点を享受できます。代わりに、ユーザはiSCSIまたは他のターゲットフロントエンドプロトコルを使用してLIOターゲットに接続できます。これにより、そのターゲットがすべてのI/OをRBDストレージ操作に変換します。
ceph-iscsi
は本質的に高可用性であり、マルチパス操作をサポートしています。したがって、ダウンストリームのイニシエータホストは、複数のiSCSI Gatewayを使用して高可用性とスケーラビリティの両方を実現できます。複数のゲートウェイで構成されるiSCSI設定で通信する場合、イニシエータはiSCSI要求を複数のゲートウェイに負荷分散できます。ゲートウェイに障害が発生したり、一時的にアクセス不可能であったり、保守のために無効になっていたりする場合、I/Oは別のゲートウェイ経由で透過的に継続されます。
9.1.3 展開に関する考慮事項 #
SUSE Enterprise Storage 7.1とceph-iscsi
の最小設定は以下のコンポーネントで構成されます。
Ceph Storage Cluster。Cephクラスタは、それぞれが8つ以上のOSD (オブジェクトストレージデーモン)をホストする少なくとも4台の物理サーバで構成されます。このような設定では、3つのOSDノードがモニタ(MON)ホストとしての役割も持ちます。
LIO iSCSIターゲットを実行する1つのiSCSIターゲットサーバ。
ceph-iscsi
で設定します。1つのiSCSIイニシエータホスト。
open-iscsi
(Linux)、Microsoft iSCSIイニシエーター(Microsoft Windows)、または互換性があるその他のiSCSIイニシエータ実装を実行します。
SUSE Enterprise Storage 7.1とceph-iscsi
の推奨運用設定は以下で構成されます。
Ceph Storage Cluster。運用Cephクラスタは任意の数(通常は11以上)のOSDノードで構成されます。一般的にはそれぞれが10~12のOSD (オブジェクトストレージデーモン)を実行し、少なくとも3つの専用のMONホストを持ちます。
LIO iSCSIターゲットを実行する複数のiSCSIターゲットサーバ。
ceph-iscsi
で設定します。iSCSIのフェールオーバーと負荷分散を行うには、これらのサーバで、target_core_rbd
モジュールをサポートするカーネルを実行する必要があります。更新パッケージはSUSE Linux Enterprise Server保守チャネルから入手できます。任意の数のiSCSIイニシエータホスト。
open-iscsi
(Linux)、Microsoft iSCSIイニシエーター(Microsoft Windows)、または互換性があるその他のiSCSIイニシエータ実装を実行します。
9.1.4 インストールと設定 #
このセクションでは、SUSE Enterprise StorageにiSCSI Gatewayをインストールして設定する手順について説明します。
9.1.4.1 CephクラスタへのiSCSI Gatewayの展開 #
Ceph iSCSI Gatewayの展開は他のCephサービスの展開と同じ手順で行われます。すなわり、cephadmを使用します。詳細については、「8.3.5項 「iSCSI Gatewayの展開」」を参照してください。
9.1.4.2 RBDイメージの作成 #
RBDイメージはCephストア内に作成され、その後iSCSIにエクスポートされます。この目的のため、専用のRADOSプールを使用することをお勧めします。Ceph rbd
コマンドラインユーティリティを使用してStorage Clusterに接続できる任意のホストからボリュームを作成できます。このためには、クライアントが少なくとも最小限のceph.conf
設定ファイルとCephX認証資格情報を持っている必要があります。
以降iSCSI経由でエクスポートするために新しいボリュームを作成するには、rbd create
コマンドを使用して、ボリュームサイズをメガバイト単位で指定します。たとえば、iscsi-images
という名前のプールにtestvol
という名前の100GBのボリュームを作成するには、次のコマンドを実行します。
cephuser@adm >
rbd --pool iscsi-images create --size=102400 testvol
9.1.4.3 iSCSIを経由したRBDイメージのエクスポート #
iSCSI経由でRBDイメージをエクスポートするには、CephダッシュボードWebインタフェースか、ceph-iscsi
gwcliユーティリティのいずれかを使用できます。このセクションでは、gwcliにのみ焦点を当て、コマンドラインを使用してRBDイメージをエクスポートするiSCSIターゲットを作成する方法を示します。
次のプロパティを持つRBDイメージは、iSCSI経由ではエクスポートできません。
journaling
機能が有効化されたイメージstripe unit
が4096バイト未満のイメージ
root
ととして、iSCSI Gatewayのコンテナを入力します。
#
cephadm enter --name CONTAINER_NAME
root
として、iSCSI Gatewayのコマンドラインインタフェースを起動します。
#
gwcli
iscsi-targets
に移動して、次の名前のターゲットを作成します。iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol
gwcli >
/> cd /iscsi-targetsgwcli >
/iscsi-targets> create iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol
iSCSI Gatewayのname
とip
アドレスを指定して、ゲートウェイを作成します。
gwcli >
/iscsi-targets> cd iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/gatewaysgwcli >
/iscsi-target...tvol/gateways> create iscsi1 192.168.124.104gwcli >
/iscsi-target...tvol/gateways> create iscsi2 192.168.124.105
現在の設定ノードで使用可能なコマンドのリストを表示するには、help
コマンドを使用します。
testvol
という名前のRBDイメージをプールiscsi-images
に追加します。
gwcli >
/iscsi-target...tvol/gateways> cd /disksgwcli >
/disks> attach iscsi-images/testvol
RBDイメージをターゲットにマップします。
gwcli >
/disks> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/disksgwcli >
/iscsi-target...testvol/disks> add iscsi-images/testvol
targetcli
などの下位レベルのツールを使用してローカル設定を照会することができますが、設定を変更しないでください。
ls
コマンドを使用して、設定を確認できます。一部の設定ノードは、info
コマンドもサポートしています。このコマンドを使用すると、詳細情報を表示できます。
デフォルトではACL認証が有効になっているため、このターゲットにはまだアクセスできません。認証とアクセス制御の詳細については、9.1.4.4項 「認証とアクセス制御」を確認してください。
9.1.4.4 認証とアクセス制御 #
iSCSI認証は柔軟性があり、多数の認証方法に対応しています。
9.1.4.4.1 ACL認証の無効化 #
「認証なし」とは、イニシエータが、対応するターゲット上のすべてのLUNにアクセスできることを意味します。「認証なし」を有効にするには、ACL認証を無効にします。
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hostsgwcli >
/iscsi-target...testvol/hosts> auth disable_acl
9.1.4.4.2 ACL認証の使用 #
イニシエータ名ベースのACL認証の使用時には、定義されたイニシエータのみが接続を許可されます。以下を実行して、イニシエータを定義できます。
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hostsgwcli >
/iscsi-target...testvol/hosts> create iqn.1996-04.de.suse:01:e6ca28cc9f20
定義されているイニシエータは接続できますが、イニシエータに明示的に追加されたRBDイメージにのみアクセスできます。
gwcli >
/iscsi-target...:e6ca28cc9f20> disk add rbd/testvol
9.1.4.4.3 CHAP認証の有効化 #
ACLに加えて、各イニシエータのユーザ名とパスワードを指定して、CHAP認証を有効にできます。
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvol/hosts/iqn.1996-04.de.suse:01:e6ca28cc9f20gwcli >
/iscsi-target...:e6ca28cc9f20> auth username=common12 password=pass12345678
ユーザ名は8~64文字の長さが必要で、英数字と記号「.
」、「@
」、「-
」、「_
」、「:
」を使用できます。
パスワードは12~16文字の長さが必要で、英数字と記号「@
」、「-
」、「_
」、「/
」を使用できます。
必要に応じて、auth
コマンドでmutual_username
パラメータとmutual_password
パラメータを指定して、CHAP相互認証を有効にすることもできます。
9.1.4.4.4 検出認証と相互認証の設定 #
「検出認証」は、前の認証方法とは異なります。参照用の資格情報が必要です。これはオプションで、次のコマンドによって設定できます。
gwcli >
/> cd /iscsi-targetsgwcli >
/iscsi-targets> discovery_auth username=du123456 password=dp1234567890
ユーザ名は8~64文字の長さが必要で、英数字と記号「.
」、「@
」、「-
」、「_
」、「:
」のみ使用できます。
パスワードは12~16文字の長さが必要で、英数字と記号「@
」、「-
」、「_
」、「/
」を使用できます。
オプションで、discovery_auth
コマンドでmutual_username
パラメータとmutual_password
パラメータを指定することもできます。
検出認証は、次のコマンドを使用して無効にすることができます。
gwcli >
/iscsi-targets> discovery_auth nochap
9.1.4.5 高度な設定 #
高度なパラメータを使用してceph-iscsi
を設定し、設定したパラメータをその後LIO I/Oターゲットに渡すことができます。パラメータは、ターゲット
のパラメータとディスク
のパラメータに分かれています。
特に明記されていない限り、これらのパラメータをデフォルト設定から変更することは推奨しません。
9.1.4.5.1 ターゲット設定の表示 #
info
コマンドを使用して、これらの設定の値を表示できます。
gwcli >
/> cd /iscsi-targets/iqn.2003-01.org.linux-iscsi.iscsi.SYSTEM-ARCH:testvolgwcli >
/iscsi-target...i.SYSTEM-ARCH:testvol> info
また、reconfigure
コマンドを使用して、設定を変更します。
gwcli >
/iscsi-target...i.SYSTEM-ARCH:testvol> reconfigure login_timeout 20
使用可能なターゲット
設定は、次のとおりです。
- default_cmdsn_depth
CmdSN (コマンドシーケンス番号)のデフォルトの深さ。特定の時点でiSCSIイニシエータが未処理の状態にしておくことができる要求の量を制限します。
- default_erl
デフォルトのエラー回復レベル。
- login_timeout
ログインタイムアウトの値(秒)。
- netif_timeout
NICの障害タイムアウト(秒)。
- prod_mode_write_protect
1
に設定すると、LUNへの書き込みを防止します。
9.1.4.5.2 ディスク設定の表示 #
info
コマンドを使用して、これらの設定の値を表示できます。
gwcli >
/> cd /disks/rbd/testvolgwcli >
/disks/rbd/testvol> info
また、reconfigure
コマンドを使用して、設定を変更します。
gwcli >
/disks/rbd/testvol> reconfigure rbd/testvol emulate_pr 0
使用可能なディスク
設定は次のとおりです。
- block_size
基礎となるデバイスのブロックサイズ。
- emulate_3pc
1
に設定すると、サードパーティコピーが有効になります。- emulate_caw
1
に設定すると、Compare and Writeが有効になります。- emulate_dpo
1に設定すると、Disable Page Outがオンになります。
- emulate_fua_read
1
に設定すると、Force Unit Access読み込みが有効になります。- emulate_fua_write
1
に設定すると、Force Unit Access書き込みが有効になります。- emulate_model_alias
1
に設定すると、モデルのエイリアスに対してバックエンドデバイス名が使用されます。- emulate_pr
0に設定すると、Persistent Group Reservationを含む、SCSI予約のサポートが無効になります。無効になっている間、SES iSCSI Gatewayは予約状態を無視できるため、要求の遅延が改善されます。
ヒントiSCSIイニシエータでSCSI予約のサポートが必要ない場合は、
backstore_emulate_pr
を0
に設定することをお勧めします。- emulate_rest_reord
0
に設定すると、Queue Algorithm ModifierにRestricted Reorderingが設定されます。- emulate_tas
1
に設定すると、Task Aborted状態が有効になります。- emulate_tpu
1
に設定すると、Thin Provisioning Unmapが有効になります。- emulate_tpws
1
に設定すると、Thin Provisioning Write Sameが有効になります。- emulate_ua_intlck_ctrl
1
に設定すると、Unit Attention Interlockが有効になります。- emulate_write_cache
1
に設定すると、Write Cache Enableが有効になります。- enforce_pr_isids
1
に設定すると、ISIDの永続的な予約が強制されます。- is_nonrot
1
に設定すると、バックストアは非ローテーションデバイスになります。- max_unmap_block_desc_count
UNMAPのブロック記述子の最大数。
- max_unmap_lba_count:
UNMAPのLBAの最大数。
- max_write_same_len
WRITE_SAMEの最大長。
- optimal_sectors
最適な要求サイズ(セクタ単位)。
- pi_prot_type
DIF保護タイプ。
- queue_depth
キューの深さ。
- unmap_granularity
UNMAPの細分性。
- unmap_granularity_alignment
UNMAPの細分性の配置。
- force_pr_aptpl
有効にすると、クライアントがaptpl=1によって要求したかどうかに関係なく、LIOは常に永続ストレージに
「永続予約」状態を書き出します。これは、LIOのカーネルRBDバックエンドには影響しません。常にPR状態を永続化します。これを
target_core_rbd
オプションで強制的に「1」に設定し、誰かが設定で無効にしようとした場合はエラーをスローするのが理想的です。- unmap_zeroes_data
LIOがLBPRZをSCSIイニシエータにアドバタイズするかどうかに影響します。これは、マップ解除ビットを使用したUNMAPまたはWRITE SAMEの後に、領域から0が読み込まれることを示します。
9.1.5 tcmu-runner
を使用したRADOS Block Deviceイメージのエクスポート #
ceph-iscsi
は、rbd
(カーネルベース)およびuser:rbd
(tcmu-runner)の両方のバックストアをサポートしており、すべての管理をバックストアから独立して透過的に実行できます。
tcmu-runner
ベースのiSCSI Gatewayの展開は現在のところ技術プレビューです。
カーネルベースののiSCSI Gatewayの展開と異なり、tcmu-runner
ベースのiSCSI Gatewayの展開では、マルチパスI/OやSCSIの永続的な予約はサポートされません。
tcmu-runner
を使用してRADOS Block Deviceをエクスポートするには、ディスクの接続時にuser:rbd
バックストアを指定することのみが必要です。
gwcli >
/disks> attach rbd/testvol backstore=user:rbd
tcmu-runner
を使用する場合、エクスポートされたRBDイメージでexclusive-lock
機能が有効になっている必要があります。
パート III 古いリリースからのアップグレード #
- 10 SUSE Enterprise Storage 6から7.1へのアップグレード
この章では、SUSE Enterprise Storage 6をバージョン7.1にアップグレードする手順について説明します。
- 11 SUSE Enterprise Storage 7から7.1へのアップグレード
この章では、SUSE Enterprise Storage 7をバージョン7.1にアップグレードする手順について説明します。
10 SUSE Enterprise Storage 6から7.1へのアップグレード #
この章では、SUSE Enterprise Storage 6をバージョン7.1にアップグレードする手順について説明します。
アップグレードには次のタスクが含まれます。
Ceph NautilusからPacificへのアップグレード。
RPMパッケージを介してCephのインストールと実行を行う環境から、コンテナ内で実行する環境への切り替え。
DeepSeaを完全に消去し、
ceph-salt
とcephadmで置き換え。
この章のアップグレード情報は、DeepSeaからcephadmへのアップグレードに「のみ」適用されます。SUSE CaaS Platform上にSUSE Enterprise Storageを展開する場合は、この章の手順を使用しないでください。
6より古いバージョンのSUSE Enterprise Storageからのアップグレードはサポートされていません。まず、最新バージョンのSUSE Enterprise Storage 6にアップグレードしてから、この章の手順を実行する必要があります。
10.1 アップグレード実行前の確認事項 #
アップグレードの開始前に、必ず以下のタスクを完了させてください。このタスクはSUSE Enterprise Storage 6のライフタイムのどの時点でも実行できます。
SUSE Enterprise Storage 7.1ではFileStoreがサポートされていないため、FileStoreからBlueStoreへのOSDのマイグレーションはアップグレード前に行う必要があります。BlueStoreの詳細と、FileStoreからマイグレートする方法については、https://documentation.suse.com/ses/6/single-html/ses-deployment/#filestore2bluestoreを参照してください。
ceph-disk
OSDを使用するクラスタを実行中の場合は、アップグレード前に必ずceph-volume
へ切り替えてください。詳細については、https://documentation.suse.com/ses/6/single-html/ses-deployment/#upgrade-osd-deploymentを参照してください。
10.1.1 考慮すべきポイント #
アップグレードの前に以下のセクションを熟読して、実行する必要があるすべてのタスクを十分に理解してください。
リリースノートの確認.リリースノートには、旧リリースのSUSE Enterprise Storageからの変更点に関する追加情報が記載されています。リリースノートを参照して以下を確認します。
使用しているハードウェアに特別な配慮が必要かどうか
使用しているソフトウェアパッケージに大幅な変更があるかどうか
インストールのために特別な注意が必要かどうか
リリースノートには、マニュアルに記載できなかった情報が記載されています。また、既知の問題に関する注意も記載されています。
SES 7.1のリリースノートはhttps://www.suse.com/releasenotes/を参照してください。
release-notes-sesをSES 7.1リポジトリからインストールすると、ローカルディレクトリ
/usr/share/doc/release-notes
にリリースノートが置かれます。https://www.suse.com/releasenotes/でオンラインのリリースノートも利用できます。パートII「Cephクラスタの展開」を参照して、
ceph-salt
とCephオーケストレータについて理解してください。特に、サービス仕様に記載されている情報は重要です。クラスタのアップグレードには長い時間がかかることがあります。所要時間は、1台のマシンのアップグレード時間xクラスタノード数です。
最初にSalt Masterをアップグレードし、その後DeepSeaを
ceph-salt
とcephadmに置き換える必要があります。少なくとも、すべてのCeph Managerがアップグレードされるまで、cephadmオーケストレータモジュールの使用を開始することはできません。NautilusのRPMを使用する環境からPacificのコンテナ環境へのアップグレードは、一度に行う必要があります。これは、一度に1つのデーモンではなく、ノード全体を一度にアップグレードすることを意味します。
コアサービス(MON、MGR、OSD)のアップグレードは、順序立てて進めます。アップグレードの間も、各サービスは利用可能です。ゲートウェイサービス(メタデータサーバ、Object Gateway、NFS Ganesha、iSCSI Gateway)については、コアサービスのアップグレード後に再展開する必要があります。次に示すサービスごとに、ある程度のダウンタイムが発生します。
- 重要
メタデータサーバとObject Gatewaysについては、ノードをSUSE Linux Enterprise Server 15 SP1からSUSE Linux Enterprise Server 15 SP3にアップグレードする際にダウンします。ダウン状態はアップグレード手続きの最後にサービスが再展開されるまで続きます。特に注意が必要なのは、メタデータサーバとObject GatewaysをMON、MGR、OSDなどと同じ場所に配置している場合です。この場合、クラスタのアップグレードが完了するまでこれらのサービスを利用できない可能性があります。これが問題となる場合は、これらのサービスをアップグレード前に別のノードに分けて展開することを検討してください。そうすれば、ダウンタイムは最小限で済みます。この場合、ダウンする期間はクラスタ全体のアップグレード中ではなく、ゲートウェイノードのアップグレード中になります。
NFS GaneshaとiSCSI Gatewaysについては、SUSE Linux Enterprise Server 15 SP1からSUSE Linux Enterprise Server 15 SP3へアップグレードする手続きの中で、ノードがリブートしている間にダウンします。また、各サービスがコンテナ化モードで再展開する際にも一時的にダウンします。
10.1.2 クラスタ設定とデータのバックアップ #
SUSE Enterprise Storage 7.1へのアップグレードを開始する前に、すべてのクラスタ設定とデータをバックアップすることを強くお勧めします。すべてのデータをバックアップする方法については、https://documentation.suse.com/ses/6/single-html/ses-admin/#cha-deployment-backupを参照してください。
10.1.3 前回のアップグレード手順の確認 #
以前にバージョン5からアップグレードした場合は、バージョン6へのアップグレードが正常に完了していることを確認します。
/srv/salt/ceph/configuration/files/ceph.conf.import
というファイルが存在することを確認します。
このファイルはSUSE Enterprise Storage 5から6へのアップグレード中に、engulfプロセスにより作成されます。configuration_init: default-import
オプションは/srv/pillar/ceph/proposals/config/stack/default/ceph/cluster.yml
に設定されます。
configuration_init
がまだdefault-import
に設定されている場合、クラスタはその設定ファイルとしてceph.conf.import
を使用しています。これは、/srv/salt/ceph/configuration/files/ceph.conf.d/
にあるファイルからコンパイルされるDeepSeaのデフォルトのceph.conf
ではありません。
したがって、ceph.conf.import
でカスタム設定を調べ、可能であれば、/srv/salt/ceph/configuration/files/ceph.conf.d/
にあるファイルのいずれかに設定を移動する必要があります。
その後、/srv/pillar/ceph/proposals/config/stack/default/ceph/cluster.yml
からconfiguration_init: default-import
行を削除してください。
10.1.4 クラスタノードのアップデートとクラスタのヘルスの確認 #
SUSE Linux Enterprise Server 15 SP1とSUSE Enterprise Storage 6のすべての最新のアップデートがすべてのクラスタノードに適用されていることを確認してください。
#
zypper refresh && zypper patch
クラスタノードの更新の詳細については、https://documentation.suse.com/ses/6/html/ses-all/storage-salt-cluster.html#deepsea-rolling-updatesを参照してください。
更新が適用されたら、Salt Masterを再起動し、新しいSaltモジュールを同期して、クラスタヘルスを確認します。
root@master #
systemctl restart salt-master.serviceroot@master #
salt '*' saltutil.sync_allcephuser@adm >
ceph -s
10.1.4.1 非セキュアクライアントの無効化 #
Nautilus v14.2.20以降、非セキュアクライアントがクラスタに参加できることを通知する新しいヘルス警告が導入されました。この警告はデフォルトで「オン」になっています。Cephダッシュボードには、クラスタがHEALTH_WARN
ステータスで表示されます。コマンドラインは、クラスタのステータスを次のように確認します。
cephuser@adm >
ceph status
cluster:
id: 3fe8b35a-689f-4970-819d-0e6b11f6707c
health: HEALTH_WARN
mons are allowing insecure global_id reclaim
[...]
この警告は、Ceph Monitorが、パッチが適用されていない古いクライアントがクラスタに接続することを引き続き許可していることを意味します。これにより、クラスタのアップグレード中も既存のクライアントが引き続き接続できるようになりますが、対処する必要のある問題があることを警告します。クラスタとすべてのクライアントが最新バージョンのCephにアップグレードされたら、次のコマンドを実行して、パッチが適用されていないクライアントを禁止します。
cephuser@adm >
ceph config set mon auth_allow_insecure_global_id_reclaim false
10.1.5 ソフトウェアリポジトリとコンテナイメージへのアクセス確認 #
各クラスタノードがSUSE Linux Enterprise Server 15 SP3とSUSE Enterprise Storage 7.1のソフトウェアリポジトリとコンテナイメージのリポジトリにアクセスできることを確認してください。
10.1.5.1 ソフトウェアリポジトリ #
すべてのノードがSCCに登録されている場合、zypper migration
コマンドによるアップグレードが可能です。詳細については、https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-upgrade-online.html#sec-upgrade-online-zypperを参照してください。
ノードがSCCに登録されていない場合は、すべての既存のソフトウェアリポジトリを無効化し、次に示す各エクステンションにPool
リポジトリとUpdates
リポジトリの両方を追加してください。
SLE-Product-SLES/15-SP3
SLE-Module-Basesystem/15-SP3
SLE-Module-Server-Applications/15-SP3
SUSE-Enterprise-Storage-7.1
10.1.5.2 コンテナイメージ #
すべてのクラスタノードはコンテナイメージのレジストリにアクセスできる必要があります。多くの場合、registry.suse.com
のパブリックSUSEレジストリを使用します。必要なイメージは次のとおりです。
registry.suse.com/ses/7.1/ceph/ceph
registry.suse.com/ses/7.1/ceph/grafana
registry.suse.com/ses/7.1/ceph/prometheus-server
registry.suse.com/ses/7.1/ceph/prometheus-node-exporter
registry.suse.com/ses/7.1/ceph/prometheus-alertmanager
もしくは、たとえばエアギャップ環境で展開したい場合などは、ローカルレジストリを設定し、正常なコンテナイメージのセットが利用できることを確認してください。ローカルなコンテナイメージのレジストリを設定する方法の詳細については、7.2.10項 「コンテナレジストリの使用」を参照してください。
10.2 Salt Masterのアップグレード #
Salt Masterのアップグレードプロセスを以下に示します。
基礎となるOSをSUSE Linux Enterprise Server 15 SP3にアップグレードします。
すべてのノードがSCCに登録されているクラスタの場合は、
zypper migration
コマンドを実行します。手動で割り当てられたソフトウェアリポジトリを含むクラスタの場合は、
zypper dup
コマンドを実行した後、reboot
コマンドを実行します。
誤って使用しないように、DeepSeaステージを無効化します。
/srv/pillar/ceph/stack/global.yml
に次の内容を追加します。stage_prep: disabled stage_discovery: disabled stage_configure: disabled stage_deploy: disabled stage_services: disabled stage_remove: disabled
ファイルを保存し、変更を適用します。
root@master #
salt '*' saltutil.pillar_refreshregistry.suse.com
のコンテナイメージではなく、ローカル環境に設定したレジストリを使用している場合は、/srv/pillar/ceph/stack/global.yml
を編集して、DeepSeaがどのCephコンテナイメージとレジストリを使用するか指定します。たとえば、192.168.121.1:5000/my/ceph/image
を使用する場合は、次に示す内容を追加します。ses7_container_image: 192.168.121.1:5000/my/ceph/image ses7_container_registries: - location: 192.168.121.1:5000
レジストリの認証情報を指定する必要がある場合は、
ses7_container_registry_auth:
ブロックを追加します。次に例を示します。ses7_container_image: 192.168.121.1:5000/my/ceph/image ses7_container_registries: - location: 192.168.121.1:5000 ses7_container_registry_auth: registry: 192.168.121.1:5000 username: USER_NAME password: PASSWORD
ファイルを保存し、変更を適用します。
root@master #
salt '*' saltutil.refresh_pillar既存の設定を取り込みます。
cephuser@adm >
ceph config assimilate-conf -i /etc/ceph/ceph.confアップグレードステータスを確認します。クラスタの設定によって、出力は異なる場合があります。
root@master #
salt-run upgrade.status The newest installed software versions are: ceph: ceph version 16.2.7-640-gceb23c7491b (ceb23c7491bd96ab7956111374219a4cdcf6f8f4) pacific (stable) os: SUSE Linux Enterprise Server 15 SP3 Nodes running these software versions: admin.ceph (assigned roles: master, prometheus, grafana) Nodes running older software versions must be upgraded in the following order: 1: mon1.ceph (assigned roles: admin, mon, mgr) 2: mon2.ceph (assigned roles: admin, mon, mgr) 3: mon3.ceph (assigned roles: admin, mon, mgr) 4: data4.ceph (assigned roles: storage, mds) 5: data1.ceph (assigned roles: storage) 6: data2.ceph (assigned roles: storage) 7: data3.ceph (assigned roles: storage) 8: data5.ceph (assigned roles: storage, rgw)
10.3 MON、MGR、OSDノードのアップグレード #
Ceph Monitor、Ceph Manager、OSDのノードを一度にアップグレードしてください。サービスごとに、次の手順に従います。
OSDノードを採用する前に、OMAPデータのアカウンティングを改善するために、OSDノードのフォーマット変換を実行する必要があります。フォーマット変換を実行するには、管理ノードで次のコマンドを実行します。
cephuser@adm >
ceph config set osd bluestore_fsck_quick_fix_on_mount trueOSDノードは、採用が完了すると自動的に変換されます。
注記関連するハードディスクに含まれるOMAPデータの量によっては、変換に数分から数時間かかる場合があります。詳細については、https://docs.ceph.com/en/latest/releases/pacific/#upgrading-non-cephadm-clustersを参照してください。
アップグレードするノードがOSDノードの場合、アップグレード中にOSDが
out
とマークされることを避けるため、次のコマンドを実行します。cephuser@adm >
ceph osd add-noout SHORT_NODE_NAMESHORT_NODE_NAMEはノードの略称で置き換えます。この名称が
ceph osd tree
コマンドの出力に表示されます。たとえば、以下の入力はホスト名の略称がses-min1
とses-min2
の場合です。root@master #
ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.60405 root default -11 0.11691 host ses-min1 4 hdd 0.01949 osd.4 up 1.00000 1.00000 9 hdd 0.01949 osd.9 up 1.00000 1.00000 13 hdd 0.01949 osd.13 up 1.00000 1.00000 [...] -5 0.11691 host ses-min2 2 hdd 0.01949 osd.2 up 1.00000 1.00000 5 hdd 0.01949 osd.5 up 1.00000 1.00000 [...]基礎となるOSをSUSE Linux Enterprise Server 15 SP3にアップグレードします。
クラスタのノードがすべてSCCに登録されている場合は、
zypper migration
を実行します。手動で割り当てられたソフトウェアリポジトリを含むクラスタノードの場合は、
zypper dup
を実行した後、reboot
コマンドを実行します。
ノードの再起動後、Salt Master上で以下のコマンドを実行して、ノード上のすべての既存のMONデーモン、MGRデーモン、OSDデーモンをコンテナ化します。
root@master #
salt MINION_ID state.apply ceph.upgrade.ses7.adoptMINION_IDはアップグレードするミニオンのIDで置き換えます。Salt Master上で
salt-key -L
コマンドを実行することで、ミニオンIDのリストを取得できます。ヒント「導入」の進捗状況を確認するには、Cephダッシュボードを確認するか、Salt Master上で以下のコマンドのいずれかを実行します。
root@master #
ceph statusroot@master #
ceph versionsroot@master #
salt-run upgrade.statusOSDノードをアップグレード中の場合、導入が正常に完了した後で
noout
フラグの設定を解除してください。cephuser@adm >
ceph osd rm-noout SHORT_NODE_NAME
10.4 ゲートウェイノードのアップグレード #
次に、個別のゲートウェイノード(Sambaゲートウェイ、メタデータサーバ、Object Gateway、NFS Ganesha、iSCSI Gateway)をアップグレードしてください。各ノードに基礎となるOSをSUSE Linux Enterprise Server 15 SP3にアップグレードしてください。
クラスタのノードがすべてSUSE Customer Centerに登録されている場合は、
zypper migration
コマンドを実行してください。手動で割り当てられたソフトウェアリポジトリを含むクラスタノードの場合は、
zypper dup
コマンドを実行した後、reboot
コマンドを実行してください。
この手順はクラスタの一部であるが、まだ役割を割り当てていないノードにも適用します(割り当てたかどうか不明な場合は、Salt Master上でsalt-key -L
コマンドを実行してホストのリストを取得し、salt-run upgrade.status
コマンドの出力と比較してください)。
クラスタ内のすべてのノードでOSがアップグレードされたら、次の手順はceph-saltパッケージをインストールしてクラスタ設定を適用することです。ゲートウェイサービスそのものは、アップグレード処理の最後にコンテナ化モードで再展開されます。
メタデータサーバとObject Gatewayサービスは、SUSE Linux Enterprise Server 15 SP3へのアップグレードが始まると利用できなくなります。この状態はアップグレード処理の最後にサービスが再展開されるまで続きます。
10.5 ceph-salt
のインストールと、クラスタ設定の適用 #
ceph-salt
のインストールとクラスタ設定の適用を開始する前に、次のコマンドを実行してクラスタとアップグレードステータスを確認してください。
root@master #
ceph statusroot@master #
ceph versionsroot@master #
salt-run upgrade.status
DeepSeaが作成した
rbd_exporter
とrgw_exporter
というcron jobを削除します。Salt Master上でroot
としてcrontab -e
コマンドを実行し、crontabを編集します。以下の項目が存在する場合は削除します。# SALT_CRON_IDENTIFIER:deepsea rbd_exporter cron job */5 * * * * /var/lib/prometheus/node-exporter/rbd.sh > \ /var/lib/prometheus/node-exporter/rbd.prom 2> /dev/null # SALT_CRON_IDENTIFIER:Prometheus rgw_exporter cron job */5 * * * * /var/lib/prometheus/node-exporter/ceph_rgw.py > \ /var/lib/prometheus/node-exporter/ceph_rgw.prom 2> /dev/null
次のコマンドを実行して、DeepSeaからクラスタ設定をエクスポートします。
root@master #
salt-run upgrade.ceph_salt_config > ceph-salt-config.jsonroot@master #
salt-run upgrade.generate_service_specs > specs.yamlDeepSeaをアンインストールし、
ceph-salt
をSalt Masterにインストールします。root@master #
zypper remove 'deepsea*'root@master #
zypper install ceph-saltSalt Masterを再起動し、Saltモジュールを同期します。
root@master #
systemctl restart salt-master.serviceroot@master #
salt \* saltutil.sync_allDeepSeaのクラスタ設定を
ceph-salt
にインポートします。root@master #
ceph-salt import ceph-salt-config.jsonクラスタノード通信用のSSHキーを作成します。
root@master #
ceph-salt config /ssh generateヒントDeepSeaからクラスタ設定がインポートされたことを確認し、欠落している可能性のあるオプションを指定します。
root@master #
ceph-salt config lsクラスタ設定の詳細については7.2項 「クラスタプロパティの設定」を参照してください。
設定を適用し、cephadmを有効化します。
root@master #
ceph-salt applyローカルのコンテナレジストリURLやアクセス資格情報を提供する必要がある場合は、7.2.10項 「コンテナレジストリの使用」の手順に従ってください。
registry.suse.com
のコンテナイメージではなく、ローカルに設定したレジストリを使う場合は、次のコマンドを実行してどのコンテナイメージを使用するかをCephに伝えます。root@master #
ceph config set global container_image IMAGE_NAME例:
root@master #
ceph config set global container_image 192.168.121.1:5000/my/ceph/imageSUSE Enterprise Storage 6の
ceph-crash
デーモンを停止し、無効化します。これらのデーモンの新しくコンテナ化された形式は、後ほど自動的に起動します。root@master #
salt '*' service.stop ceph-crashroot@master #
salt '*' service.disable ceph-crash
10.6 監視スタックのアップグレードと導入 #
以下の手順によって、監視スタックのすべてのコンポーネントを導入します(詳細についてはBook “運用と管理ガイド”, Chapter 16 “監視とアラート”を参照してください)。
オーケストレータを一時停止します。
cephuser@adm >
ceph orch pausePrometheus、Grafana、Alertmanagerがどのノードで実行されている場合でも(デフォルトではSalt Masterノード)、以下のコマンドを実行します。
cephuser@adm >
cephadm adopt --style=legacy --name prometheus.$(hostname)cephuser@adm >
cephadm adopt --style=legacy --name alertmanager.$(hostname)cephuser@adm >
cephadm adopt --style=legacy --name grafana.$(hostname)ヒントregistry.suse.com
のデフォルトコンテナイメージレジストリを実行していない場合は、各コマンドで使用するイメージを指定する必要があります。以下に例を示します。cephuser@adm >
cephadm --image 192.168.121.1:5000/ses/7.1/ceph/prometheus-server:2.32.1 \ adopt --style=legacy --name prometheus.$(hostname)cephuser@adm >
cephadm --image 192.168.121.1:5000/ses/7.1/ceph/prometheus-alertmanager:0.21.0 \ adopt --style=legacy --name alertmanager.$(hostname)cephuser@adm >
cephadm --image 192.168.121.1:5000/ses/7.1/ceph/grafana:7.5.12 \ adopt --style=legacy --name grafana.$(hostname)必要なコンテナイメージと各バージョンをBook “運用と管理ガイド”, Chapter 16 “監視とアラート”, Section 16.1 “カスタムイメージまたはローカルイメージの設定”に一覧にします。
「すべての」ノードからNode-Exporterを削除します。Node-Exporterのマイグレーションは不要です。
specs.yaml
ファイルが適用された際にコンテナとして再インストールされます。>
sudo
zypper rm golang-github-prometheus-node_exporterまたは、管理ノードでSaltを使用して、すべてのノードからNode-Exporterを同時に削除することもできます。
root@master #
salt '*' pkg.remove golang-github-prometheus-node_exporterDeepSeaからエクスポートしておいたサービス仕様を適用します。
cephuser@adm >
ceph orch apply -i specs.yamlヒントデフォルトのコンテナイメージレジストリ
registry.suse.com
を実行していないが、ローカルコンテナレジストリを実行している場合は、Node-Exporterを展開する前に、Node-Exporterの展開にローカルレジストリのコンテナイメージを使用するようにcephadmを設定します。そうでない場合は、この手順を安全にスキップして、次の警告を無視してもかまいません。cephuser@adm >
ceph config set mgr mgr/cephadm/container_image_node_exporter QUALIFIED_IMAGE_PATHサービスを監視するすべてのコンテナイメージが、Node-Exporterのものだけでなく、ローカルレジストリをポイントしていることを確認します。この手順は、Node-Exporterに対してのみ行う必要がありますが、この時点でローカルレジストリをポイントするようにcephadmのすべてのモニタリングコンテナイメージを設定することをお勧めします。
このように設定しないと、モニタリングサービスの新規展開と再展開では、デフォルトのcephadm設定が使用され、サービスを展開できなくなったり(エアギャップ環境の展開の場合)、バージョンが混在したサービスが展開されたりする可能性があります。
ローカルレジストリのコンテナイメージを使用するようにcephadmを設定する方法については、Book “運用と管理ガイド”, Chapter 16 “監視とアラート”, Section 16.1 “カスタムイメージまたはローカルイメージの設定”を参照してください。
オーケストレータを再開します。
cephuser@adm >
ceph orch resume
10.7 ゲートウェイサービスの再展開 #
10.7.1 Object Gatewayのアップグレード #
SUSE Enterprise Storage 7.1においてObject Gatewayは常にレルムに設定されます。これにより、将来的なマルチサイトが可能になります(詳細についてはBook “運用と管理ガイド”, Chapter 21 “Ceph Object Gateway”, Section 21.13 “マルチサイトObject Gateway”を参照してください)。SUSE Enterprise Storage 6でシングルサイトのObject Gateway設定を使用している場合は、以下の手順に従ってレルムを追加してください。マルチサイト機能を使う予定がない場合は、レルム、ゾーングループ、ゾーンの名前にdefault
を使用してもかまいません。
新しいレルムを作成します。
cephuser@adm >
radosgw-admin realm create --rgw-realm=REALM_NAME --default必要に応じて、デフォルトのゾーンとゾーングループの名前を変更します。
cephuser@adm >
radosgw-admin zonegroup rename \ --rgw-zonegroup default \ --zonegroup-new-name=ZONEGROUP_NAMEcephuser@adm >
radosgw-admin zone rename \ --rgw-zone default \ --zone-new-name ZONE_NAME \ --rgw-zonegroup=ZONEGROUP_NAMEマスターゾーングループを設定します。
cephuser@adm >
radosgw-admin zonegroup modify \ --rgw-realm=REALM_NAME \ --rgw-zonegroup=ZONEGROUP_NAME \ --endpoints http://RGW.EXAMPLE.COM:80 \ --master --defaultマスターゾーンを設定します。このとき、
system
フラグが有効なObject GatewayユーザのACCESS_KEYとSECRET_KEYが必要になります。通常はadmin
ユーザが該当します。ACCESS_KEYとSECRET_KEYを取得するには、radosgw-admin user info --uid admin --rgw-zone=ZONE_NAME
を実行します。cephuser@adm >
radosgw-admin zone modify \ --rgw-realm=REALM_NAME \ --rgw-zonegroup=ZONEGROUP_NAME \ --rgw-zone=ZONE_NAME \ --endpoints http://RGW.EXAMPLE.COM:80 \ --access-key=ACCESS_KEY \ --secret=SECRET_KEY \ --master --defaultアップデートされた設定をコミットします。
cephuser@adm >
radosgw-admin period update --commit
Object Gatewayサービスをコンテナ化するには、8.3.4項 「Object Gatewayの展開」に記載されている仕様ファイルを作成し、適用します。
cephuser@adm >
ceph orch apply -i RGW.yml
10.7.2 NFS Ganeshaのアップグレード #
NFS Ganeshaは、NFSバージョン4.1以降をサポートしています。NFSバージョン3はサポートしていません。
Ceph Nautilusを実行する既存のNFS Ganeshaサービスから、Ceph Octopusを実行するNFS Ganeshaコンテナにマイグレートする方法を次で説明します。
以下の情報は、コアとなるCephサービスのアップグレードに成功していることを前提としたものです。
NFS Ganeshaはデーモンごとの追加設定を保存し、RADOSプールに設定をエクスポートします。設定済みのRADOSプールは、ganesha.conf
ファイルのRADOS_URLS
ブロックのwatch_url
行で確認できます。デフォルトでは、このプールはganesha_config
と名付けられます。
マイグレーションを試みる前に、RADOSプールにあるエクスポートおよびデーモン設定オブジェクトのコピーを作成することを強くお勧めします。設定されたRADOSプールを見つけるには、次のコマンドを実行します。
cephuser@adm >
grep -A5 RADOS_URLS /etc/ganesha/ganesha.conf
RADOSプールの内容を一覧にするには、次のコマンドを実行します。
cephuser@adm >
rados --pool ganesha_config --namespace ganesha ls | sort
conf-node3
export-1
export-2
export-3
export-4
RADOSオブジェクトをコピーするには、次のコマンドを実行します。
cephuser@adm >
RADOS_ARGS="--pool ganesha_config --namespace ganesha"cephuser@adm >
OBJS=$(rados $RADOS_ARGS ls)cephuser@adm >
for obj in $OBJS; do rados $RADOS_ARGS get $obj $obj; donecephuser@adm >
ls -lah total 40K drwxr-xr-x 2 root root 4.0K Sep 8 03:30 . drwx------ 9 root root 4.0K Sep 8 03:23 .. -rw-r--r-- 1 root root 90 Sep 8 03:30 conf-node2 -rw-r--r-- 1 root root 90 Sep 8 03:30 conf-node3 -rw-r--r-- 1 root root 350 Sep 8 03:30 export-1 -rw-r--r-- 1 root root 350 Sep 8 03:30 export-2 -rw-r--r-- 1 root root 350 Sep 8 03:30 export-3 -rw-r--r-- 1 root root 358 Sep 8 03:30 export-4
ノードごとに既存のNFS Ganeshaサービスを停止して、cephadmが管理するコンテナに置き換える必要があります。
既存のNFS Ganeshaサービスを停止および無効化します。
cephuser@adm >
systemctl stop nfs-ganeshacephuser@adm >
systemctl disable nfs-ganesha既存のNFS Ganeshaサービスが停止すると、cephadmを用いてコンテナ内に新しいサービスを展開できます。そのためには、
service_id
を記述したサービス仕様を作成する必要があります。このIDはこの新しいNFSクラスタの特定、配置仕様にホストとして記載された、マイグレーション先ノードのホスト名の特定、設定済みNFSエクスポートオブジェクトを含むRADOSプールとネームスペースの特定に使用されます。次に例を示します。service_type: nfs service_id: SERVICE_ID placement: hosts: - node2 pool: ganesha_config namespace: ganesha
配置仕様の作成の詳細については、8.2項 「サービス仕様と配置仕様」を参照してください。
配置仕様を適用します。
cephuser@adm >
ceph orch apply -i FILENAME.yamlホストでNFS Ganeshaデーモンが実行されていることを確認します。
cephuser@adm >
ceph orch ps --daemon_type nfs NAME HOST STATUS REFRESHED AGE VERSION IMAGE NAME IMAGE ID CONTAINER ID nfs.foo.node2 node2 running (26m) 8m ago 27m 3.3 registry.suse.com/ses/7.1/ceph/ceph:latest 8b4be7c42abd c8b75d7c8f0dNFS Ganeshaノードごとに、これらの手順を繰り返します。ノードごとに別々のサービス仕様を作成する必要はありません。各ノードのホスト名を既存のNFSサービス仕様に追加し、再適用すれば十分です。
既存のエクスポートは次の2つの方法でマイグレートできます。
Cephダッシュボードを使用して、手動で再作成と再適用を行う方法。
デーモンごとのRADOSオブジェクトの内容を、新しく作成されたNFS Ganesha共通設定に手動でコピーする方法。
デーモンごとのRADOSオブジェクトのリストを確認します。
cephuser@adm >
RADOS_ARGS="--pool ganesha_config --namespace ganesha"cephuser@adm >
DAEMON_OBJS=$(rados $RADOS_ARGS ls | grep 'conf-')デーモンごとのRADOSオブジェクトのコピーを作成します。
cephuser@adm >
for obj in $DAEMON_OBJS; do rados $RADOS_ARGS get $obj $obj; donecephuser@adm >
ls -lah total 20K drwxr-xr-x 2 root root 4.0K Sep 8 16:51 . drwxr-xr-x 3 root root 4.0K Sep 8 16:47 .. -rw-r--r-- 1 root root 90 Sep 8 16:51 conf-nfs.SERVICE_ID -rw-r--r-- 1 root root 90 Sep 8 16:51 conf-node2 -rw-r--r-- 1 root root 90 Sep 8 16:51 conf-node3ソートとマージを行って、エクスポートを単一のリストにします。
cephuser@adm >
cat conf-* | sort -u > conf-nfs.SERVICE_IDcephuser@adm >
cat conf-nfs.foo %url "rados://ganesha_config/ganesha/export-1" %url "rados://ganesha_config/ganesha/export-2" %url "rados://ganesha_config/ganesha/export-3" %url "rados://ganesha_config/ganesha/export-4"新しいNFS Ganesha共通設定ファイルを書き込みます。
cephuser@adm >
rados $RADOS_ARGS put conf-nfs.SERVICE_ID conf-nfs.SERVICE_IDNFS Ganeshaデーモンに通知します。
cephuser@adm >
rados $RADOS_ARGS notify conf-nfs.SERVICE_ID conf-nfs.SERVICE_ID注記このアクションによって、デーモンは設定を再ロードします。
サービスのマイグレートに成功すると、NautilusベースのNFS Ganeshaサービスを削除できるようになります。
NFS Ganeshaを削除します。
cephuser@adm >
zypper rm nfs-ganesha Reading installed packages... Resolving package dependencies... The following 5 packages are going to be REMOVED: nfs-ganesha nfs-ganesha-ceph nfs-ganesha-rados-grace nfs-ganesha-rados-urls nfs-ganesha-rgw 5 packages to remove. After the operation, 308.9 KiB will be freed. Continue? [y/n/v/...? shows all options] (y): y (1/5) Removing nfs-ganesha-ceph-2.8.3+git0.d504d374e-3.3.1.x86_64 .................................................................................................................................................................................................................................................................................................[done] (2/5) Removing nfs-ganesha-rgw-2.8.3+git0.d504d374e-3.3.1.x86_64 ..................................................................................................................................................................................................................................................................................................[done] (3/5) Removing nfs-ganesha-rados-urls-2.8.3+git0.d504d374e-3.3.1.x86_64 ...........................................................................................................................................................................................................................................................................................[done] (4/5) Removing nfs-ganesha-rados-grace-2.8.3+git0.d504d374e-3.3.1.x86_64 ..........................................................................................................................................................................................................................................................................................[done] (5/5) Removing nfs-ganesha-2.8.3+git0.d504d374e-3.3.1.x86_64 ......................................................................................................................................................................................................................................................................................................[done] Additional rpm output: warning: /etc/ganesha/ganesha.conf saved as /etc/ganesha/ganesha.conf.rpmsaveCephダッシュボードから古いクラスタ設定を削除します。
cephuser@adm >
ceph dashboard reset-ganesha-clusters-rados-pool-namespace
10.7.3 メタデータサーバのアップグレード #
MON、MGR、OSDとは異なり、メタデータサーバをインプレース導入することはできません。その代わり、Cephオーケストレータを使用して、コンテナ内に再展開する必要があります。
ceph fs ls
コマンドを実行して、ファイルシステムの名前を取得します。以下に例を示します。cephuser@adm >
ceph fs ls name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]8.3.3項 「メタデータサーバの展開」に記載されている、新しいサービス仕様ファイル
mds.yml
を作成します。そのために、ファイルシステムの名前をservice_id
として使用して、MDSデーモンを実行するホストを指定します。以下に例を示します。service_type: mds service_id: cephfs placement: hosts: - ses-min1 - ses-min2 - ses-min3
ceph orch apply -i mds.yml
コマンドを実行して、サービス仕様を適用し、MDSデーモンを起動します。
10.7.4 iSCSI Gatewayのアップグレード #
iSCSI Gatewayをアップグレードするには、Cephオーケストレータを使用してコンテナ内に再展開する必要があります。複数のiSCSI Gatewayを使用している場合はサービスのダウンタイムを短縮するために、iSCSI Gatewayを1つずつ再展開する必要があります。
各iSCSI Gatewayノードで実行されている既存のiSCSIデーモンを停止し無効化するには、次のコマンドを実行します。
>
sudo
systemctl stop rbd-target-gw>
sudo
systemctl disable rbd-target-gw>
sudo
systemctl stop rbd-target-api>
sudo
systemctl disable rbd-target-api8.3.5項 「iSCSI Gatewayの展開」に記載されている、iSCSI Gateway用のサービス仕様を作成します。そのためには、既存の
/etc/ceph/iscsi-gateway.cfg
ファイルからpool
、trusted_ip_list
、api_*
という設定を取得する必要があります。SSLサポートを有効にしている場合(api_secure = true
)、SSL証明書(/etc/ceph/iscsi-gateway.crt
)とキー(/etc/ceph/iscsi-gateway.key
)も必要です。例として、
/etc/ceph/iscsi-gateway.cfg
が以下の内容を含む場合を考えます。[config] cluster_client_name = client.igw.ses-min5 pool = iscsi-images trusted_ip_list = 10.20.179.203,10.20.179.201,10.20.179.205,10.20.179.202 api_port = 5000 api_user = admin api_password = admin api_secure = true
この場合、次のようなサービス仕様ファイル
iscsi.yml
を作成する必要があります。service_type: iscsi service_id: igw placement: hosts: - ses-min5 spec: pool: iscsi-images trusted_ip_list: "10.20.179.203,10.20.179.201,10.20.179.205,10.20.179.202" api_port: 5000 api_user: admin api_password: admin api_secure: true ssl_cert: | -----BEGIN CERTIFICATE----- MIIDtTCCAp2gAwIBAgIYMC4xNzc1NDQxNjEzMzc2MjMyXzxvQ7EcMA0GCSqGSIb3 DQEBCwUAMG0xCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARVdGFoMRcwFQYDVQQHDA5T [...] -----END CERTIFICATE----- ssl_key: | -----BEGIN PRIVATE KEY----- MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5jdYbjtNTAKW4 /CwQr/7wOiLGzVxChn3mmCIF3DwbL/qvTFTX2d8bDf6LjGwLYloXHscRfxszX/4h [...] -----END PRIVATE KEY-----
注記pool
、trusted_ip_list
、api_port
、api_user
、api_password
、api_secure
の設定は、/etc/ceph/iscsi-gateway.cfg
ファイルの内容とまったく同じです。ssl_cert
とssl_key
の値は、既存のSSL証明書とキーファイルからコピーできます。これらの設定が適切にインデントされていることを確認してください。また、ssl_cert:
行とssl_key:
行の末尾に「パイプ文字」(|
)があることを確認してください(上記のiscsi.yml
ファイルの内容を参照してください)。ceph orch apply -i iscsi.ym
コマンドを実行して、サービス仕様を適用し、iSCSI Gatewayデーモンを起動します。既存の各iSCSIゲートウェイノードから古いceph-iscsiパッケージを削除します。
cephuser@adm >
zypper rm -u ceph-iscsi
10.8 アップグレード後のクリーンアップ #
アップグレードの完了後に、以下のクリーンアップ手順を実行してください。
現在のCephバージョンをチェックして、クラスタのアップグレードに成功しているかを確認します。
cephuser@adm >
ceph versions古いOSDがクラスタに参加していないことを確認します。
cephuser@adm >
ceph osd require-osd-release pacific必要に応じて、既存のプールの
pg_autoscale_mode
を設定します。重要SUSE Enterprise Storage 6のプールは
pg_autoscale_mode
がデフォルトでwarn
に設定されています。そのため、配置グループ数が最適でない場合に警告メッセージが出ますが、警告のみで自動拡張は行われません。SUSE Enterprise Storage 7.1のデフォルト設定では、新しいプールのpg_autoscale_mode
オプションはon
に設定されるため、配置グループは自動拡張が実際に行われます。手順に従ってアップグレードを行っても、既存プールのpg_autoscale_mode
は、自動では変更されません。設定をon
に変更して自動拡張を活用したい場合は、Book “運用と管理ガイド”, Chapter 17 “保存データの管理”, Section 17.4.12 “配置グループの自動拡張の有効化”の手順を参照してください。詳細については、Book “運用と管理ガイド”, Chapter 17 “保存データの管理”, Section 17.4.12 “配置グループの自動拡張の有効化”を参照してください。
Luminousより前のバージョンのクライアントを拒否します。
cephuser@adm >
ceph osd set-require-min-compat-client luminousバランサモジュールを有効化します。
cephuser@adm >
ceph balancer mode upmapcephuser@adm >
ceph balancer on詳細については、Book “運用と管理ガイド”, Chapter 29 “Ceph Managerモジュール”, Section 29.1 “バランサ”を参照してください。
必要に応じてテレメトリモジュールを有効にします。
cephuser@adm >
ceph mgr module enable telemetrycephuser@adm >
ceph telemetry on詳細については、Book “運用と管理ガイド”, Chapter 29 “Ceph Managerモジュール”, Section 29.2 “テレメトリモジュールの有効化”を参照してください。
11 SUSE Enterprise Storage 7から7.1へのアップグレード #
この章では、SUSE Enterprise Storage 7をバージョン7.1にアップグレードする手順について説明します。
アップグレードには次のタスクが含まれます。
基礎となるSUSE Linux Enterprise Server SUSE Linux Enterprise Server 15 SP2からバージョンSUSE Linux Enterprise Server 15 SP3へのアップグレード。
Ceph OctopusからPacificへのアップグレード。
11.1 アップグレード実行前の確認事項 #
アップグレードの開始前に、必ず以下のタスクを完了させてください。このタスクはSUSE Enterprise Storage 7のライフタイムのどの時点でも実行できます。
11.1.1 考慮すべきポイント #
アップグレードの前に以下のセクションを熟読して、実行する必要があるすべてのタスクを十分に理解してください。
リリースノートの確認.リリースノートには、旧リリースのSUSE Enterprise Storageからの変更点に関する追加情報が記載されています。リリースノートを参照して以下を確認します。
使用しているハードウェアに特別な配慮が必要かどうか
使用しているソフトウェアパッケージに大幅な変更があるかどうか
インストールのために特別な注意が必要かどうか
リリースノートには、マニュアルに記載できなかった情報が記載されています。また、既知の問題に関する注意も記載されています。
SES 7.1のリリースノートはhttps://www.suse.com/releasenotes/を参照してください。
パッケージrelease-notes-sesをSES 7.1リポジトリからインストールすると、ローカルディレクトリ
/usr/share/doc/release-notes
にリリースノートが置かれます。https://www.suse.com/releasenotes/にあるオンラインのリリースノートも利用できます。パートII「Cephクラスタの展開」を参照して、
ceph-salt
とCephオーケストレータについて理解してください。特に、サービス仕様に記載されている情報は重要です。
11.1.2 クラスタ設定とデータのバックアップ #
アップグレードを開始する前に、すべてのクラスタ設定とデータをバックアップすることを強くお勧めします。すべてのデータをバックアップする方法については、Book “運用と管理ガイド”, Chapter 15 “バックアップおよび復元”を参照してください。
11.1.3 ソフトウェアリポジトリとコンテナイメージへのアクセス確認 #
各クラスタノードがSUSE Linux Enterprise Server 15 SP3とSUSE Enterprise Storage 7.1のソフトウェアリポジトリとコンテナイメージのリポジトリにアクセスできることを確認してください。
11.1.3.1 ソフトウェアリポジトリ #
すべてのノードがSCCに登録されている場合、zypper migration
コマンドによるアップグレードが可能です。詳細については、https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-upgrade-online.html#sec-upgrade-online-zypperを参照してください。
ノードがSCCに登録されていない場合は、すべての既存のソフトウェアリポジトリを無効化し、次に示す各エクステンションにPool
リポジトリとUpdates
リポジトリの両方を追加してください。
SLE-Product-SLES/15-SP3
SLE-Module-Basesystem/15-SP3
SLE-Module-Server-Applications/15-SP3
SUSE-Enterprise-Storage-7.1
11.1.3.2 コンテナイメージ #
すべてのクラスタノードはコンテナイメージのレジストリにアクセスできる必要があります。多くの場合、registry.suse.com
のパブリックSUSEレジストリを使用します。必要なイメージは次のとおりです。
registry.suse.com/ses/7.1/ceph/ceph
registry.suse.com/ses/7.1/ceph/grafana
registry.suse.com/ses/7.1/ceph/prometheus-server
registry.suse.com/ses/7.1/ceph/prometheus-node-exporter
registry.suse.com/ses/7.1/ceph/prometheus-alertmanager
もしくは、たとえばエアギャップ環境で展開したい場合などは、ローカルレジストリを設定し、正常なコンテナイメージのセットが利用できることを確認してください。ローカルなコンテナイメージのレジストリを設定する方法の詳細については、7.2.10項 「コンテナレジストリの使用」を参照してください。
11.2 各クラスタノードのSUSE Linux Enterprise ServerをバージョンSUSE Linux Enterprise Server 15 SP3に移行 #
クラスタノードがSUSE Customer Centerを使用するように設定されている場合は、zypper migration
コマンドを使用できます。
クラスタノードにソフトウェアリポジトリが手動で設定されている場合は、ノードを手動でアップグレードする必要があります。
zypper
を使用したSUSE Linux Enterprise Serverのアップグレードの詳細については、https://documentation.suse.com/sles/15-SP3/html/SLES-all/cha-upgrade-online.html#sec-upgrade-online-zypperを参照してください。
11.3 各クラスタノードでSUSE Enterprise Storage関連のパッケージを更新する #
SUSE Enterprise Storageパッケージを最新バージョンに更新するには、ceph-salt update
コマンドを使用します。詳細については、Book “運用と管理ガイド”, Chapter 13 “運用タスク”, Section 13.6 “クラスタノードの更新”を参照してください。
11.4 既存のCephクラスタサービスのアップグレード #
管理ノードから次のコマンドを実行して、Cephクラスタ全体をバージョンPacificにアップグレードします。
cephuser@adm >
ceph orch upgrade start --image registry.suse.com/ses/7.1/ceph/ceph
A アップストリーム「Pacific」ポイントリリースに基づくCeph保守更新 #
SUSE Enterprise Storage 7.1のいくつかの主要パッケージは、CephのPacificリリースシリーズに基づいています。Cephプロジェクト(https://github.com/ceph/ceph)がPacificシリーズの新しいポイントリリースを公開した場合、SUSE Enterprise Storage 7.1は、アップストリームの最新のバグ修正や機能のバックポートのメリットを得られるように更新されます。
この章には、製品に組み込み済みか、組み込みが予定されている各アップストリームポイントリリースに含まれる重要な変更点についての概要が記載されています。
用語集 #
一般
- Alertmanager #
Prometheusサーバによって送信されるアラートを処理し、エンドユーザに通知する単一のバイナリ。
- Ceph Manager #
Ceph Manager (MGR)は、Cephの管理ソフトウェアです。クラスタ全体からすべての状態を一か所に収集します。
- Ceph Monitor #
Ceph Monitor (MON)は、Cephのモニターソフトウェアです。
- Ceph Object Storage #
オブジェクトストレージの「製品」、サービス、またはケーパビリティです。Ceph Storage ClusterとCeph Object Gatewayから構成されます。
- Ceph OSDデーモン #
ceph-osd
デーモンは、ローカルファイルシステムにオブジェクトを保存し、ネットワーク経由でそれらにアクセスできるようにするCephのコンポーネントです。- Ceph Storage Cluster #
ユーザのデータを保存するストレージソフトウェアのコアセット。1つのセットは複数のCeph Monitorと複数のOSDで構成されます。
ceph-salt
#Saltを使用して、cephadmに管理されるCephクラスタを展開するツールを提供します。
- cephadm #
cephadmはCephクラスタを展開、管理します。その手段として、SSHを使用してマネージャデーモンからホストに接続し、Cephデーモンコンテナを追加、削除、更新します。
- CephFS #
Cephのファイルシステム。
- CephX #
Cephの認証プロトコル。CephXはKerberosのように動作しますが、単一障害点がありません。
- Cephクライアント #
Ceph Storage Clusterにアクセスできる、Cephコンポーネントのコレクション。たとえば、Object Gateway、Ceph Block Device、CephFS、およびこれらに関連するライブラリ、カーネルモジュール、FUSEクライアントなどがあります。
- Cephダッシュボード #
WebベースのCeph管理/監視用ビルトインアプリケーションで、クラスタの様々な側面とオブジェクトを管理します。このダッシュボードはCeph Managerモジュールとして実装されます。
- CRUSH、CRUSHマップ #
「Controlled Replication Under Scalable Hashing」: データの保存場所を計算することによって、データの保存と取得の方法を決定するアルゴリズム。CRUSHは、クラスタ全体に均等に分散したデータを擬似ランダムにOSDで保存および取得するために、クラスタのマップを必要とします。
- CRUSHルール #
特定のプール(単数または複数)に適用される、CRUSHのデータ配置ルール。
- DriveGroups #
DriveGroupsは、物理ドライブにマッピングできる1つ以上のOSDレイアウトの宣言です。OSDレイアウトはCephが指定された基準を満たすようにOSDストレージをメディア上に物理的に割り当てる方法を定義します。
- Grafana #
データベース分析および監視ソリューション。
- Multi-zone #
- Object Gateway #
Ceph Object Store用のS3/Swiftゲートウェイコンポーネント。RADOS Gateway (RGW)とも呼ばれます。
- OSD #
「Object Storage Device」: 物理ストレージユニットまたは論理ストレージユニット。
- OSDノード #
データの保存、データレプリケーションの処理、回復、バックフィル、およびリバランスを実行し、他のCeph OSDデーモンを確認することによってCeph Monitorにモニタリング情報を提供するクラスタノード。
- PG #
配置グループ: 「プール」を細分化したもので、パフォーマンスを調整するために使用します。
- Prometheus #
システム監視およびアラートツールキット。
- RADOS Block Device (RBD) #
Cephのブロックストレージコンポーネント。Cephブロックデバイスとも呼ばれます。
- Reliable Autonomic Distributed Object Store (RADOS) #
ユーザのデータを保存するストレージソフトウェアのコアセット(MON+OSD)。
- Samba #
Windowsとの統合ソフトウェア。
- Sambaゲートウェイ #
SambaゲートウェイはWindowsドメインのActive Directoryに参加し、ユーザの認証と権限の付与を行います。
- アーカイブ同期モジュール #
S3オブジェクトのバージョン履歴を保持するためのObject Gatewayゾーンを作成できるモジュール。
- ゾーングループ #
- ノード #
Cephクラスタ内の1つのマシンまたはサーバ。
- バケット #
他のノードを物理的な場所の階層に集約するポイント。
- プール #
ディスクイメージなどのオブジェクトを保存するための論理パーティション。
- ポイントリリース #
バグ修正やセキュリティ上の修正だけを含む、応急措置的なリリース。
- メタデータサーバ #
メタデータサーバ(MDS)は、Cephのメタデータソフトウェアです。
- ルーティングツリー #
受信者が実行できるさまざまなルートを示す図に付けられる用語。
- ルールセット #
プールのデータ配置を決定するためのルール。
- 管理ノード #
このホストからCeph関連のコマンドを実行して、クラスタのホストを管理します。