目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Enterprise Storage 7.1マニュアル / 導入ガイド / Cephクラスタの展開 / cephadmを使用して残りのコアサービスを展開する
適用項目 SUSE Enterprise Storage 7.1

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パラメータを使用します。指定できるタイプは、monosdmgrmds、および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 0
cephuser@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サービス(monmgrmdscrashosdrbd-mirror)、ゲートウェイ(nfsrgw)、監視スタックの一部(alertmanagergrafananode-exporterprometheus)。

service_id

サービスの名前です。次のサービスタイプについては、service_idプロパティは不要です。monmgralertmanagergrafananode-exporterprometheus

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出力フォーマットを変更できます。選択できるフォーマットは、jsonjson-prettyyamlです。以下に例を示します。

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を含める

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-devices
  • DriveGroupsを使用してデバイスを記述したOSD仕様を作成し、そのプロパティを基にデバイスを展開する方法(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サービスを既存のレルムとゾーンに関連付けることも(詳細については、21.13項 「マルチサイトObject Gateway」を参照してください)、存在しないREALM_NAMEZONE_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証明書とキーファイルのペアが必要です(詳細については、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_FILE
cephuser@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を使用します。

  1. 仕様ファイルを提供して、Object Gatewayを展開します。Object Gateway仕様の詳細については、8.3.4項 「Object Gatewayの展開」を参照してください。次のコマンドを実行します。

    cephuser@adm > ceph orch apply -i SPEC_FILE
  2. SSL証明書が仕様ファイルで提供されていない場合は、次のコマンドを使用してSSL証明書を追加します。

    cephuser@adm > ceph config-key set rgw/cert/default/default.crt -i certificate.pem
    cephuser@adm > ceph config-key set rgw/cert/default/default.key -i key.pem
  3. rgw_frontendsオプションのデフォルト値を変更します。

    cephuser@adm > ceph config set client.rgw.default.default rgw_frontends \
     "beast port=80 ssl_port=443"
  4. 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"
  5. 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が発行したものか自己署名したものを使用します(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処理に失敗します。プールの作成の詳細については、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イメージの同期を行います(詳細については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ダッシュボードはこうしたコンポーネントを利用して、クラスタの使用量やパフォーマンスの詳細なメトリクスの保存と視覚化を行います。

ヒント
ヒント

展開に監視スタックサービスのカスタムコンテナイメージやローカルコンテナイメージを必要とする場合は、16.1項 「カスタムイメージまたはローカルイメージの設定」を参照してください。

監視スタックを展開するには、以下の手順に従ってください。

  1. Ceph Managerデーモンでprometheusモジュールを有効化します。これにより、Cephの内部メトリクスが公開され、Prometheusから読み取れるようになります。

    cephuser@adm > ceph mgr module enable prometheus
    注記
    注記

    このコマンドはPrometheusの展開前に実行してください。展開前にコマンドを実行していない場合、Prometheusを再展開してPrometheusの設定を更新する必要があります。

    cephuser@adm > ceph orch redeploy prometheus
  2. 次のような内容を含む仕様ファイル(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
  3. 次のコマンドを実行して、監視サービスを適用します。

    cephuser@adm > ceph orch apply -i monitoring.yaml

    監視サービスの展開には1、2分かかる場合があります。

重要
重要

Prometheus、Grafana、Cephダッシュボードは、お互いに通信できるようにすべて自動的に設定されます。そのため、この手順で展開されたとき、Cephダッシュボードには完全に機能するGrafanaが統合されています。

このルールの例外は、RBDイメージの監視だけです。詳細については、16.5.4項 「RBDイメージ監視の有効化」を参照してください。