目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Enterprise Storage 7.1マニュアル / 導入ガイド / Cephクラスタの展開 / ceph-saltを使用したブートストラップクラスタの展開
適用項目 SUSE Enterprise Storage 7.1

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.service
root@master # salt \* saltutil.sync_all

7.2 クラスタプロパティの設定

ceph-salt configコマンドを使用して、クラスタの基本的なプロパティを設定します。

重要
重要

/etc/ceph/ceph.confファイルは、cephadmで管理されており、ユーザは編集しないでください。Cephの設定パラメータは、新しいceph configコマンドを使用して設定する必要があります。詳細については、28.2項 「設定データベース」を参照してください。

7.2.1 ceph-saltシェルの使用

configをパスやサブコマンドを使わずに実行する場合、インタラクティブなceph-saltceph-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-saltlsコマンドの出力を見るとわかるように、クラスタ構成がツリー構造に整理されます。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関連のコマンドは管理ノードで実行します。

ヒント
ヒント: 同じノード上のSalt Masterと管理ノード

すべての、または、ほとんどのホストが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つのミニオンにlatencythroughputの両方の役割を持たせることはできません。

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.com
    root@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 admin
root@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にマップするために使用できる別の空きポートを確認します。

手順 7.1: ローカルレジストリの作成
  1. Containers Module拡張機能が有効になっていることを確認します。

    > SUSEConnect --list-extensions | grep -A2 "Containers Module"
    Containers Module 15 SP3 x86_64 (Activated)
  2. 次のパッケージがインストールされていることを確認します: apache2-utils (セキュアなレジストリを有効にしている場合)、cnicni-pluginspodmanpodman-cni-config、およびskopeo

  3. 次の情報を収集します。

    • レジストリホスト(REG_HOST_FQDN)の完全修飾ドメイン名。

    • 5000のレジストリコンテナポート(REG_HOST_PORT)にマップするために使用される使用可能なポート番号。

    • レジストリがセキュアか非セキュアかどうか(insecure=[true|false])。

  4. 非セキュアなレジストリ(SSL暗号化なし)を開始するには、次の手順に従います。

    1. 非セキュアなレジストリのceph-saltを設定します。

      cephuser@adm > ceph-salt config containers/registries_conf enable
      cephuser@adm > ceph-salt config containers/registries_conf/registries \
       add prefix=REG_HOST_FQDN insecure=true \
       location=REG_HOST_PORT:5000
    2. 必要なディレクトリ(たとえば、/var/lib/registry)を作成し、podmanコマンドを使用してレジストリを開始することにより、非セキュアなレジストリを開始します。

      # mkdir -p /var/lib/registry
      # podman run --privileged -d --name registry \
       -p REG_HOST_PORT:5000 -v /var/lib/registry:/var/lib/registry \
       --restart=always registry:2
    3. 再起動後にレジストリを開始するには、レジストリのsystemdユニットファイルを作成して有効にします。

      > sudo podman generate systemd --files --name registry
      > sudo mv container-registry.service /etc/systemd/system/
      > sudo systemctl enable container-registry.service
  5. セキュアなレジストリを開始するには、次の手順に従います。

    1. 必要なディレクトリを作成します。

      # mkdir -p /var/lib/registry/{auth,certs}
    2. 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])に設定します。

    3. 証明書をすべてのクラスタノードにコピーし、証明書キャッシュを更新します。

      # salt-cp '*' /var/lib/registry/certs/domain.crt \
       /etc/pki/trust/anchors/
      # salt '*' cmd.shell "update-ca-certificates"
    4. レジストリへの認証用にユーザ名とパスワードの組み合わせを生成します。

      # htpasswd2 -bBc /var/lib/registry/auth/htpasswd \
       REG_USERNAME REG_PASSWORD
    5. セキュアなレジストリを開始します。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
    6. レジストリへのセキュアなアクセスをテストします。

      > curl https://REG_HOST_FQDN:REG_HOST_PORT/v2/_catalog \
       -u REG_USERNAME:REG_PASSWORD
  6. ローカルレジストリが作成されたら、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/
手順 7.2: ローカルレジストリを設定し、資格情報にアクセスする
  1. ローカルレジストリのURLを設定します。

    cephuser@adm > ceph-salt config /containers/registry_auth/registry set REG_HOST_URL
  2. ローカルレジストリにアクセスするためのユーザ名とパスワードを設定します。

    cephuser@adm > ceph-salt config /containers/registry_auth/username set REG_USERNAME
    cephuser@adm > ceph-salt config /containers/registry_auth/password set REG_PASSWORD
ヒント
ヒント: レジストリキャッシュ

更新されたコンテナが新しく登場した際にローカルレジストリを再同期しないようにするには、「レジストリキャッシュ」を設定できます。

7.2.10.2 コンテナイメージへのパスの設定

重要
重要

このセクションでは、ブートストラップクラスタのコンテナイメージへのパスを設定する方法を説明します(最初のCeph MonitorとCeph Managerのペアの展開)。パスは、監視スタックなどの追加サービスのコンテナイメージには適用されません。

ヒント
ヒント: HTTPSプロキシの設定

プロキシを使用してコンテナレジストリサーバと通信する必要がある場合は、すべてのクラスタノードで次の設定手順を実行します。

  1. コンテナの設定ファイルをコピーします。

    > sudo cp /usr/share/containers/containers.conf /etc/containers/containers.conf
  2. 新しくコピーしたファイルを編集し、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 secure
root@master # ceph-salt config /cephadm_bootstrap/ceph_conf/global set ms_service_mode secure
root@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 global
root@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 --rebootceph-salt rebootコマンドでは再起動されません。Salt Masterの再起動が必要な場合、手動で再起動してください。

ノードの更新後、最小のクラスタをブートストラップします。

root@master # ceph-salt apply
注記
注記

ブートストラップが完了すると、クラスタにはCeph MonitorとCeph Managerが1つずつ含まれます。

先のコマンドを実行すると、インタラクティブなユーザインターフェイスが開かれ、各ミニオンの現在の進行状況が表示されます。

最小クラスタの展開
図 7.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

これを動作させるには、設定した値に応じてファイアウォールの設定も調整する必要があります。詳細については、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