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