Ubuntu インストールガイド
Ubuntu への Red Hat Ceph Storage のインストール
概要
第1章 Red Hat Ceph Storage とは
Red Hat Ceph Storage はスケーラブルでオープンなソフトウェア定義のストレージプラットフォームで、Ceph ストレージシステムの最も安定したバージョンと、Ceph 管理プラットフォーム、デプロイメントユーティリティー、サポートサービスを組み合わせたものです。
Red Hat Ceph Storage は、クラウドインフラストラクチャーおよび Web スケールオブジェクトストレージ用に設計されています。Red Hat Ceph Storage クラスターは、以下のタイプのノードで構成されます。
- Red Hat Ceph Storage Ansible 管理ノード
このタイプのノードは、以前のバージョンの Red Hat Ceph Storage に行われた従来の Ceph 管理ノードとして機能します。このタイプのノードでは、以下の機能が提供されます。
- ストレージクラスターの一元管理
- Ceph 設定ファイルおよびキー
- 必要に応じて、セキュリティー上の理由からインターネットにアクセスできないノードに Ceph をインストールするためのローカルリポジトリー
- ノードの監視
-
各モニターノードは、クラスターマップのマスターコピーを維持する monitor デーモン (
ceph-mon
) を実行します。クラスターマップにはクラスタートポロジーが含まれます。Ceph クラスターに接続するクライアントは、モニターからクラスターマップの現在のコピーを取得します。これにより、クライアントがクラスターへのデータの読み取りおよび書き込みが可能になります。
Ceph は 1 つのモニターで実行できますが、実稼働クラスターで高可用性を確保するためには、Red Hat は少なくとも 3 つのモニターノードを持つデプロイメントのみをサポートします。Red Hat は、750 個の OSD を超えるストレージクラスターに合計 5 つの Ceph Monitor をデプロイすることを推奨します。
- OSD ノード
各 Object Storage Device (OSD) ノードは Ceph OSD デーモン (
ceph-osd
) を実行し、ノードに割り当てられている論理ディスクと相互作用します。Ceph は、この OSD ノードにデータを保存します。Ceph は、非常に少数の OSD ノード (デフォルトは 3) で実行できますが、実稼働クラスターは、ストレージクラスターで中程度のスケール (たとえば OSD が 50 個) で始まります。理想的には、Ceph クラスターに複数の OSD ノードがあり、CRUSH マップを作成して分離された障害ドメインを許可します。
- MDS ノード
-
各 Metadata Server (MDS) ノードは、Ceph ファイルシステム (CephFS) に保存されているファイルに関連する MDS デーモン (
ceph-mds
) を実行します。MDS デーモンは、共有クラスターへのアクセスも調整します。 - Object Gateway ノード
Ceph Object Gateway ノードは、Ceph RADOS Gateway デーモン (
ceph-radosgw
) を実行し、Ceph Storage クラスターへの RESTful ゲートウェイを使用するアプリケーションを提供するlibrados
上に構築されたオブジェクトストレージインターフェースです。Ceph Object Gateway は、以下の 2 つのインターフェースをサポートします。S3
Amazon S3 RESTful API の大規模なサブセットと互換性のあるインターフェースでオブジェクトストレージ機能を提供します。
Swift
OpenStack Swift API の大規模なサブセットと互換性のあるインターフェースでオブジェクトストレージ機能を提供します。
Ceph アーキテクチャーの詳細は、Red Hat Ceph Storage3 のアーキテクチャーガイド を参照してください。
最低限推奨されるハードウェアは、Red Hat Ceph ストレージハードウェア選択ガイド3 を参照してください。
第2章 Red Hat Ceph Storage のインストール要件
図2.1 前提条件のワークフロー
Red Hat Ceph Storage (RHCS) をインストールする前に、以下の要件をチェックして、各 Monitor、OSD、メタデータサーバー、およびクライアントノードを適宜準備します。
2.1. 前提条件
- ハードウェアが最低必要条件を満たしていることを確認してください。詳細については、Red Hat Ceph Storage3 のハードウェアガイドを参照してください。
2.2. Red Hat Ceph Storage をインストールするための要件チェックリスト
タスク | 必須 | セクション | 推奨事項 |
---|---|---|---|
オペレーティングシステムのバージョンの確認 | はい | ||
Ceph ソフトウェアリポジトリーの有効化 | はい | ||
OSD ノードでの RAID コントローラーの使用 | いいえ | RAID コントローラーでライトバックキャッシュを有効にすると、OSD ノードの小規模な I/O 書き込みスループットが増大する場合があります。 | |
ネットワークの設定 | はい | 少なくとも、パブリックネットワークが必要です。ただし、クラスター通信用のプライベートネットワークが推奨されます。 | |
ファイアウォールの設定 | いいえ | ファイアウォールは、ネットワークの信頼レベルを大きくすることができます。 | |
Ansible ユーザーの作成 | はい | すべての Ceph ノードで Ansible ユーザーを作成する必要があります。 | |
パスワードを使用しない SSH の有効化 | はい | Ansible で必須。 |
デフォルトでは、ceph-ansible
は要件として NTP をインストールします。NTP がカスタマイズされている場合は、Red Hat Ceph Storage の手動インストール の Red Hat Ceph Storage のネットワークタイムプロトコルの設定 を参照して、Ceph で正しく機能するように NTP を構成する方法を理解してください。
2.3. Red Hat Ceph Storage のオペレーティングシステム要件
Red Hat Ceph Storage 3 には、ストレージクラスター内のすべての Ceph ノードで実行される AMD64 または Intel64 アーキテクチャーなどの同種バージョンの Ubuntu16.04.04 が必要です。
Red Hat は異種のオペレーティングシステムやバージョンを使用したクラスターをサポートしていません。
関連情報
- Red Hat Enterprise Linux 7 の インストールガイド
- Red Hat Enterprise Linux 7 のシステム管理者ガイド
2.4. Red Hat Ceph ストレージリポジトリーの有効化
Red Hat Ceph Storage をインストールする前に、インストール方法を選択する必要があります。Red Hat Ceph Storage では、以下の 2 つのインストール方法がサポートされます。
コンテンツ配信ネットワーク (CDN)
インターネットに直接接続可能な Ceph ノードを持つ Ceph Storage クラスターの場合は、Red Hat Subscription Manager を使用して必要な Ceph リポジトリーを有効にします。
ローカルリポジトリー
セキュリティー対策がインターネットにアクセスできない Ceph Storage クラスターでは、ISO イメージとして配信される単一のソフトウェアビルドから Red Hat Ceph Storage 3.3 をインストールします。これにより、ローカルリポジトリーをインストールできます。
RHCS ソフトウェアリポジトリーにアクセスするには、Red Hat カスタマーポータル で有効な Red Hat ログインとパスワードが必要です。
アカウントマネージャーに連絡して、https://rhcs.download.redhat.com のクレデンシャルを取得してください。
前提条件
- 有効なカスタマーサブスクリプション
- CDN をインストールする場合、RHCS ノードはインターネットに接続できる必要があります。
手順
CDN インストールの場合:
Ansible 管理ノードで、Red Hat Ceph Storage 3 Tools リポジトリーを有効にします。
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update
ISO インストールの場合:
- Red Hat カスタマーポータルにログインします。
- Downloads をクリックして、Software & Download センターに移動します。
- Red Hat Ceph Storage エリアで Download Software をクリックして、最新バージョンのソフトウェアをダウンロードします。
関連情報
- Red Hat Enterprise Linux の管理者ガイドのシステムの登録とサブスクリプションの管理の章
2.5. OSD ノードで RAID コントローラーを使用する際の考慮事項 (オプション)
OSD ノードに 1 ~ 2 GB のキャッシュがインストールされている RAID コントローラーがある場合は、ライトバックキャッシュを有効にすると、I/O 書き込みスループットが向上する可能性があります。ただし、キャッシュは不揮発性である必要があります。
最近の RAID コントローラーには通常、電力損失イベント中に揮発性メモリーを不揮発性 NAND メモリーに排出するのに十分な電力を供給するスーパーキャパシタがあります。電源の復旧後に、特定のコントローラーとそのファームウェアがどのように動作するかを理解することが重要です。
RAID コントローラーによっては、手動の介入が必要になります。ハードドライブは、ディスクキャッシュをデフォルトで有効または無効にすべきかどうかに関わらず、オペレーティングシステムにアドバタイズします。ただし、特定の RAID コントローラーとファームウェアは、このような情報を提供しません。ファイルシステムが破損しないように、ディスクレベルのキャッシュが無効になっていることを確認します。
ライトバックキャッシュを有効にして、各 Ceph OSD データドライブにライトバックを設定して、単一の RAID 0 ボリュームを作成します。
Serial Attached SCSI (SAS) または SATA 接続の Solid-state Drive (SSD) ディスクも RAID コントローラーに存在する場合は、コントローラーとファームウェアが pass-through モードをサポートしているかどうかを確認します。pass-through モードを有効にすると、キャッシュロジックが回避され、通常は高速メディアの待ち時間が大幅に低くなります。
2.6. Object Gateway で NVMe を使用する際の考慮事項 (オプション)
Red Hat Ceph Storage の Object Gateway 機能を使用する予定で、OSD ノードに NVMe ベースの SSD または SATA SSD がある場合は、Ceph Object Gateway for Productionの手順に従って、LVM で NVMe を最適に使用することを検討してください。これらの手順では、ジャーナルとバケットインデックスを SSD に一緒に配置する特別に設計された Ansible Playbook の使用方法を説明します。これにより、すべてのジャーナルを 1 つのデバイスに配置する場合に比べてパフォーマンスを向上させることができます。NVMe と LVM を最適に使用するための情報は、本インストールガイドと併せて参照してください。
2.7. Red Hat Ceph Storage のネットワーク構成の確認
すべてのRed Hat Ceph Storage (RHCS) ノードには、パブリックネットワークが必要です。Ceph クライアントが Ceph monitor ノードおよび Ceph OSD ノードに到達できるパブリックネットワークにネットワークインターフェースカードが設定されている必要があります。
Ceph がパブリックネットワークとは別のネットワークでハートビート、ピアリング、レプリケーション、および復元を実行できるように、クラスターネットワーク用のネットワークインターフェイスカードがある場合があります。
ネットワークインターフェースを設定し、変更を永続化します。
Red Hat では、パブリックネットワークとプライベートネットワークの両方に単一のネットワークインターフェースカードを使用することは推奨していません。
関連情報
- ネットワーク設定の詳細は、Red Hat Ceph Storage 3 の『設定ガイド』の「ネットワーク設定参照」の章を参照してください。
2.8. Red Hat Ceph Storage のファイアウォールの設定
Red Hat Ceph Storage (RHCS) は iptables
サービスを使用します。
Monitor デーモンは、Ceph Storage クラスター内の通信にポート 6789
を使用します。
各 Ceph OSD ノードで、OSD デーモンは範囲 6800-7300
内の複数のポートを使用します。
- パブリックネットワークを介してクライアントおよびモニターと通信するための 1 つ
- クラスターネットワーク上で他の OSD にデータを送信する 1 つ (利用可能な場合)。それ以外の場合は、パブリックネットワーク経由でデータを送信します。
- 可能な場合は、クラスターネットワークを介してハートビートパケットを交換するための 1 つ。それ以外の場合は、パブリックネットワーク経由
Ceph Manager (ceph-mgr
) デーモンは、6800-7300
範囲内のポートを使用します。同じノード上で Ceph Monitor と ceph-mgr
デーモンを共存させることを検討してください。
Ceph Metadata Server ノード(ceph-mds)
は、6800~7300
の範囲のポートを使用します。
Ceph Object Gateway ノードは、デフォルトで 8080
を使用するように Ansible によって設定されます。ただし、デフォルトのポート (例: ポート 80
) を変更できます。
SSL/TLS サービスを使用するには、ポート 443
を開きます。
前提条件
- ネットワークハードウェアが接続されている。
手順
root
ユーザーで以下のコマンドを実行してください。
すべての Monitor ノードで、パブリックネットワークの
6789
ポートを開く。iptables -I INPUT 1 -i iface -p tcp -s IP_address/netmask_prefix --dport 6789 -j ACCEPT
- 置き換え
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
iface
。 -
IP_address
には、Monitor ノードのネットワークアドレスを指定します。 -
クラスレスドメイン間ルーティング (CIDR) 表記のネットマスクを使用した
netmask_prefix
。
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
例
$ sudo iptables -I INPUT 1 -i enp6s0 -p tcp -s 192.168.0.11/24 --dport 6789 -j ACCEPT
すべての OSD ノードで、パブリックネットワークでポート
6800-7300
を開きます。iptables -I INPUT 1 -i iface -m multiport -p tcp -s IP_address/netmask_prefix --dports 6800:7300 -j ACCEPT
- 置き換え
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
iface
。 -
OSD ノードのネットワークアドレスを含む
IP_address
。 -
netmask_prefix
には、CIDR 表記のネットマスクを指定します。
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
例
$ sudo iptables -I INPUT 1 -i enp6s0 -m multiport -p tcp -s 192.168.0.21/24 --dports 6800:7300 -j ACCEPT
すべての Ceph Manager (
ceph-mgr
) ノード (通常はMonitorのノードと同じ) で、パブリックネットワークの6800~7300
番ポートを開きます。iptables -I INPUT 1 -i iface -m multiport -p tcp -s IP_address/netmask_prefix --dports 6800:7300 -j ACCEPT
- 置き換え
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
iface
。 -
OSD ノードのネットワークアドレスを含む
IP_address
。 -
netmask_prefix
には、CIDR 表記のネットマスクを指定します。
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
例
$ sudo iptables -I INPUT 1 -i enp6s0 -m multiport -p tcp -s 192.168.0.21/24 --dports 6800:7300 -j ACCEPT
すべての Ceph Metadata Server (
ceph-mds
) ノードにおいて、パブリックネットワークでポート6800
を開きます。iptables -I INPUT 1 -i iface -m multiport -p tcp -s IP_address/netmask_prefix --dports 6800 -j ACCEPT
- 置き換え
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
iface
。 -
OSD ノードのネットワークアドレスを含む
IP_address
。 -
netmask_prefix
には、CIDR 表記のネットマスクを指定します。
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
例
$ sudo iptables -I INPUT 1 -i enp6s0 -m multiport -p tcp -s 192.168.0.21/24 --dports 6800 -j ACCEPT
すべての Ceph Object Gateway ノードで、パブリックネットワーク上の関連するポートを開きます。
デフォルトの Ansible が設定されたポート
8080
を開くには、以下のコマンドを実行します。iptables -I INPUT 1 -i iface -p tcp -s IP_address/netmask_prefix --dport 8080 -j ACCEPT
- 置き換え
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
iface
。 -
オブジェクトゲートウェイノードのネットワークアドレスを含む
IP_address
。 -
netmask_prefix
には、CIDR 表記のネットマスクを指定します。
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
例
$ sudo iptables -I INPUT 1 -i enp6s0 -p tcp -s 192.168.0.31/24 --dport 8080 -j ACCEPT
任意。Ansible を使用して Ceph Object Gateway をインストールし、使用する Ceph Object Gateway を Ansible が構成するデフォルトのポートを
8080
からポート80
に変更した場合は、次のポートを開きます。iptables -I INPUT 1 -i iface -p tcp -s IP_address/netmask_prefix --dport 80 -j ACCEPT
- 置き換え
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
iface
。 -
オブジェクトゲートウェイノードのネットワークアドレスを含む
IP_address
。 -
netmask_prefix
には、CIDR 表記のネットマスクを指定します。
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
例
$ sudo iptables -I INPUT 1 -i enp6s0 -p tcp -s 192.168.0.31/24 --dport 80 -j ACCEPT
任意。SSL/TLS を使用するには、
443
ポートを開きます。iptables -I INPUT 1 -i iface -p tcp -s IP_address/netmask_prefix --dport 443 -j ACCEPT
- 置き換え
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
iface
。 -
オブジェクトゲートウェイノードのネットワークアドレスを含む
IP_address
。 -
netmask_prefix
には、CIDR 表記のネットマスクを指定します。
-
パブリックネットワーク上のネットワークインターフェースカードの名前を持つ
例
$ sudo iptables -I INPUT 1 -i enp6s0 -p tcp -s 192.168.0.31/24 --dport 443 -j ACCEPT
ストレージクラスター内のすべての RHCS ノードで変更を永続的にします。
iptables-persistent
パッケージをインストールします。$ sudo apt-get install iptables-persistent
表示されるターミナル UI で、
yes
を選択して、現在のIPv4 iptables
ルールを/etc/iptables/rules.v4
ファイルに保存し、現在のIPv6 iptables
ルールを/etc/iptables/rules.v6
ファイルに保存します。注記iptables-persistent
のインストール後に新しいiptables
ルールを追加する場合は、新しいルールをrules
ファイルに追加します。$ sudo iptables-save >> /etc/iptables/rules.v4
関連情報
- パブリックネットワークとクラスターネットワークの詳細は、Red Hat Ceph Storage のネットワーク構成の確認を参照してください。
2.9. sudo
アクセスのある Ansible ユーザーの作成
Ansible は、ソフトウェアをインストールし、パスワードを要求せずに設定ファイルを作成するための root
権限を持つユーザーとして、すべての Red Hat Ceph Storage (RHCS) ノードにログインできる必要があります。Ansible を使用して Red Hat Ceph Storage クラスターをデプロイおよび設定する際に、ストレージクラスター内のすべてのノードにパスワードなしの root
アクセスで Ansible ユーザーを作成する必要があります。
前提条件
-
ストレージクラスター内のすべてのノードへの
root
またはsudo
アクセスがある。
手順
Ceph ノードに
root
ユーザとしてログインします。ssh root@$HOST_NAME
- 置き換え
-
Ceph ノードのホスト名で
$HOST_NAME
。
-
Ceph ノードのホスト名で
例
# ssh root@mon01
プロンプトに従い
root
パスワードを入力します。新しい Ansible ユーザーを作成します。
adduser $USER_NAME
- 置き換え
-
$USER_NAME
には、Ansible ユーザーの新しいユーザー名を指定します。
-
例
$ sudo adduser admin
プロンプトが表示されたら、このユーザーのパスワードを 2 回入力します。
重要ceph
をユーザー名として使用しないでください。ceph
ユーザー名は、Ceph デーモン用に予約されます。クラスター全体で統一されたユーザー名を使用すると、使いやすさが向上しますが、侵入者は通常、そのユーザー名をブルートフォース攻撃に使用するため、明白なユーザー名の使用は避けてください。新規に作成されたユーザーの
sudo
アクセスを設定します。cat << EOF >/etc/sudoers.d/$USER_NAME $USER_NAME ALL = (root) NOPASSWD:ALL EOF
- 置き換え
-
$USER_NAME
には、Ansible ユーザーの新しいユーザー名を指定します。
-
例
$ sudo cat << EOF >/etc/sudoers.d/admin admin ALL = (root) NOPASSWD:ALL EOF
正しいファイル権限を新しいファイルに割り当てます。
chmod 0440 /etc/sudoers.d/$USER_NAME
- 置き換え
-
$USER_NAME
には、Ansible ユーザーの新しいユーザー名を指定します。
-
例
$ sudo chmod 0440 /etc/sudoers.d/admin
関連情報
- Red Hat Enterprise Linux7 のシステム管理者ガイドの新しいユーザーの追加セクション。
2.10. Ansible でパスワードなしの SSH を有効にする
Ansible 管理ノードで SSH キーペアを生成し、ストレージクラスター内の各ノードに公開キーを配布して、Ansible がパスワードの入力を求められることなくノードにアクセスできるようにします。
前提条件
手順
Ansible 管理ノードから、Ansible ユーザーとして次の手順を実行します。
SSH キーペアを生成し、デフォルトのファイル名を受け入れ、パスフレーズを空のままにします。
[user@admin ~]$ ssh-keygen
公開鍵をストレージクラスター内のすべてのノードにコピーします。
ssh-copy-id $USER_NAME@$HOST_NAME
- 置き換え
-
$USER_NAME
には、Ansible ユーザーの新しいユーザー名を指定します。 -
Ceph ノードのホスト名で
$HOST_NAME
。
-
例
[user@admin ~]$ ssh-copy-id admin@ceph-mon01
~/.ssh/config
ファイルを作成および編集します。重要~/.ssh/config
ファイルを作成および編集することで、ansible-playbook
コマンドを実行するたびに-u $USER_NAME
オプションを指定する必要はありません。SSH
config
ファイルを作成します。[user@admin ~]$ touch ~/.ssh/config
編集のために
config
ファイルを開きます。ストレージクラスターの各ノードのHostname
とUser
オプションを設定します。Host node1 Hostname $HOST_NAME User $USER_NAME Host node2 Hostname $HOST_NAME User $USER_NAME ...
- 置き換え
-
Ceph ノードのホスト名で
$HOST_NAME
。 -
$USER_NAME
には、Ansible ユーザーの新しいユーザー名を指定します。
-
Ceph ノードのホスト名で
例
Host node1 Hostname monitor User admin Host node2 Hostname osd User admin Host node3 Hostname gateway User admin
~/.ssh/config
ファイルに正しいファイルパーミッションを設定します。[admin@admin ~]$ chmod 600 ~/.ssh/config
関連情報
-
ssh_config(5)
の man ページ - Red Hat Enterprise Linux7 の システム管理者ガイド の Open SSH の章
第3章 Red Hat Ceph Storage の導入
本章では、Ansible アプリケーションを使用して Red Hat Ceph Storage クラスターおよびその他のコンポーネントをデプロイする方法を説明します (メタデータサーバーや Ceph Object Gateway など)。
- Red Hat Ceph Storage クラスターをインストールするには、「Red Hat Ceph Storage クラスターのインストール」 を参照してください。
- メタデータサーバをインストールするには、「メタデータサーバのインストール」 を参照してください。
-
ceph-client
ロールをインストールするには、「Ceph クライアントロールのインストール」 を参照してください。 - Ceph Object Gatewayをインストールするには、「Ceph Object Gateway のインストール」 を参照してください。
- マルチサイトの Ceph Object Gateway を設定するには、「マルチサイト Ceph Object Gateway の設定」 を参照してください。
-
Ansibleの
--limit
オプションについては、「limit
オプションについて」 を参照してください。
以前は、Red Hat は Ubuntu 用の ceph-ansible
パッケージを提供していませんでした。Red Hat Ceph Storage バージョン 3 以降では、Ansible 自動化アプリケーションを使用して Ubuntu ノードから Ceph クラスターをデプロイできます。
3.1. 前提条件
- 有効なカスタマーサブスクリプションを取得します。
クラスタノードの準備各ノードで
3.2. Red Hat Ceph Storage クラスターのインストール
ceph-ansible
playbook 付きの Ansible アプリケーションを使用して、Red Hat Ceph Storage 3 をインストールします。
本番の Ceph ストレージクラスターは、最低でも 3 台のモニターホストと、複数の OSD デーモンを搭載した 3 台の OSD ノードが必要です。
前提条件
Ansible 管理ノードで、
ceph-ansible
パッケージをインストールします。[user@admin ~]$ sudo apt-get install ceph-ansible
手順
指示がない限り、Ansible の管理ノードから以下のコマンドを実行します。
Ansibleのユーザーとして、
ceph-ansible
Playbook で生成された一時的な値をAnsibleが保存するceph-ansible-keys
ディレクトリーを作成します。[user@admin ~]$ mkdir ~/ceph-ansible-keys
root として、
/etc/ansible/
ディレクトリーに/usr/share/ceph-ansible/group_vars
ディレクトリーへのシンボリックリンクを作成します。[root@admin ~]# ln -s /usr/share/ceph-ansible/group_vars /etc/ansible/group_vars
/usr/share/ceph-ansible
ディレクトリーに移動します。[root@admin ~]$ cd /usr/share/ceph-ansible
yml.sample
ファイルのコピーを新たに作成します。[root@admin ceph-ansible]# cp group_vars/all.yml.sample group_vars/all.yml [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml [root@admin ceph-ansible]# cp site.yml.sample site.yml
コピーしたファイルを編集します。
group_vars/all.yml
ファイルを編集します。アンコメントする最も一般的な必須およびオプションのパラメータについては、以下の表を参照してください。なお、この表にはすべてのパラメータが含まれているわけではありません。重要カスタムクラスター名の使用はサポートされていないため、
cluster: ceph
パラメータにceph
以外の値を設定しないでください。表3.1 Ansible の一般的な設定 オプション 値 必須 備考 ceph_origin
repository
またはdistro
またはlocal
はい
repository
値は、新しいリポジトリーで Ceph をインストールすることを意味します。distro
の値は、個別のリポジトリーファイルが追加されず、Linux ディストリビューションに含まれる Ceph のバージョンをすべて取得することを意味します。local
の値は、Ceph バイナリーがローカルマシンからコピーされることを意味します。ceph_repository_type
cdn
またはiso
はい
ceph_rhcs_iso_path
ISO イメージへのパス
ISO イメージを使用する場合は Yes
ceph_rhcs_cdn_debian_repo
オンラインの Ubuntu Ceph リポジトリーにアクセスするための認証情報です。例:
https://username:password@rhcs.download.redhat.com
はい
ceph_rhcs_cdn_debian_repo_version
新規インストールには
/3-release/
を使用します。更新には/3-updates/
を使用します。はい
monitor_interface
Monitor ノードがリッスンするインターフェース
MONITOR_INTERFACE
、MONITOR_ADDRESS
、またはMONITOR_ADDRESS_BLOCK
が必要です。monitor_address
Monitor ノードがリッスンするアドレス
monitor_address_block
Ceph のパブリックネットワークのサブネット
ノードの IP アドレスは不明だが、サブネットはわかっている場合に使用します
ip_version
ipv6
IPv6 アドレスを使用している場合は Yes
public_network
IPv6 を使用する場合には、Ceph パブリックネットワークの IP アドレスとネットマスク、または対応する IPv6 アドレス
はい
cluster_network
Ceph クラスターネットワークの IP アドレスとネットマスク
いいえ、デフォルトは
public_network
ですall.yml
ファイルの例は次のようになります。ceph_origin: distro ceph_repository: rhcs ceph_repository_type: cdn ceph_rhcs_version: 3 monitor_interface: eth0 public_network: 192.168.0.0/24
注記必ず
all.yml
ファイルでceph_origin
をdistro
に設定してください。これにより、インストールプロセスで正しいダウンロードリポジトリが使用されるようになります。注記ceph_rhcs_version
オプションを3
に設定すると、最新バージョンの Red Hat Ceph Storage 3 がプルされます。詳細は、
all.yml
ファイルを参照してください。group_vars/osds.yml
ファイルを編集します。アンコメントする最も一般的な必須およびオプションのパラメータについては、以下の表を参照してください。なお、この表にはすべてのパラメータが含まれているわけではありません。重要OSD のインストールには、OSD がインストールされている機器とは異なる物理的な機器を使用してください。オペレーティングシステムと OSD 間で同じデバイスを共有すると、パフォーマンスの問題が発生することになります。
表3.2 OSD Ansible 設定 オプション 値 必須 備考 osd_scenario
collocated
。ログ先行書き込みとキー/値データ (Blue Store) またはジャーナル (File Store) と OSD データに同じデバイスを使用non-collocated
。SSD や NVMe メディアなどの専用デバイスを使用して先行書き込みログとキー/値データ (Blue Store) またはジャーナルデータ(File Store)を保存するためlvm
: OSDデータの保存に論理ボリュームマネージャを使用する場合はい
osd_scenario:non-collocated
、ceph-ansible
を使用する場合、devices
とdedicated_devices
の変数の数が一致することを期待します。たとえば、devices
で 10 個のディスクを指定する場合は、dedicated_devices
で 10 個のエントリーを指定する必要があります。osd_auto_discovery
OSD を自動的に検出する場合は
true
osd_scenario: collocated
を使用している場合は Yesdevices
設定を使用している場合は使用できません。devices
ceph data
が保存されているデバイスのリストデバイスのリストを指定する場合は Yes
osd_auto_discovery
設定を使用する場合は使用できません。osd_scenario
としてlvm
を使用し、devices
オプションを設定する場合、ceph-volume lvm batch
モードは最適化された OSD 構成を作成します。dedicated_devices
ceph journal
が保存されている非コロケーション OSD 専用デバイスのリストosd_scenario: non-collocated
場合は Yes非分割型のデバイスであること
dmcrypt
OSD を暗号化する場合は
true
いいえ
デフォルトは
false
lvm_volumes
File Store または Blue Store 辞書のリスト
osd_scenario: lvm
使用している場合、ストレージ デバイスがdevices
を使用して定義されている場合は Yes各ディクショナリーには、
data
キー、journal
キー、およびdata_vg
キーが含まれている必要があります。論理ボリュームまたはボリュームグループはすべて、完全パスではなく、名前にする必要があります。data
キーおよびjournal
キーは論理ボリューム (LV) またはパーティションにすることができますが、複数のdata
論理ボリュームに 1 つのジャーナルを使用しないでください。data_vg
キーは、data
論理ボリューム含むボリュームグループである必要があります。必要に応じて、journal_vg
キーを使用して、ジャーナル LV を含むボリュームグループを指定できます (該当する場合)。サポートされているさまざまな構成については、以下の例を参照してください。osds_per_device
デバイスごとに作成する OSD 数。
いいえ
デフォルトは
1
ですosd_objectstore
OSD の Ceph オブジェクトストアタイプ。
いいえ
デフォルトは
bluestore
です。もう一つの選択肢は、filestore
です。アップグレードに必要です。以下は、
collocated
、non-collocated
、lvm
の 3つの OSD シナリオを使用した場合のosds.yml
ファイルの例です。指定されていない場合、デフォルトの OSD オブジェクトストアフォーマットは BlueStore です。Collocated
osd_objectstore: filestore osd_scenario: collocated devices: - /dev/sda - /dev/sdb
コロケートされていない - BlueStore
osd_objectstore: bluestore osd_scenario: non-collocated devices: - /dev/sda - /dev/sdb - /dev/sdc - /dev/sdd dedicated_devices: - /dev/nvme0n1 - /dev/nvme0n1 - /dev/nvme1n1 - /dev/nvme1n1
コロケートされていない例では、デバイスごとに 1 つずつ、4 つの Blue Store OSD が作成されます。この例では、従来のハードドライブ (
sda
、sdb
、sdc
、sdd
) がオブジェクトデータに使用され、ソリッドステートドライブ (SSD) (/ dev/nvme0n1
、/ dev/nvme1n1
) が Blue Store データベースに使用されて書き込みます-先行書き込みログ。この構成では、/dev/sda
および/dev/sdb
デバイスを/dev/nvme0n1
デバイスとペアにし、/dev/sdc
および/dev/sdd
デバイスを/ dev/nvme1n1
デバイスとペアにします。非コロケーション - Filestore
osd_objectstore: filestore osd_scenario: non-collocated devices: - /dev/sda - /dev/sdb - /dev/sdc - /dev/sdd dedicated_devices: - /dev/nvme0n1 - /dev/nvme0n1 - /dev/nvme1n1 - /dev/nvme1n1
LVM simple
osd_objectstore: bluestore osd_scenario: lvm devices: - /dev/sda - /dev/sdb
または
osd_objectstore: bluestore osd_scenario: lvm devices: - /dev/sda - /dev/sdb - /dev/nvme0n1
これらの単純な構成では
ceph-ansible
はバッチモード (ceph-volume lvm batch
) を使用して OSD を作成します。最初のシナリオでは、
devices
を従来のハードドライブまたは SSD の場合には、デバイスごとに OSD が 1 つ作成されます。2 つ目のシナリオでは、従来のハードドライブと SSD が混在している場合、データは従来のハードドライブ (
sda
、sdb
) に配置され、BlueStore データベース (block.db
) は SSD (nvme0n1
) にできる限り大きく作成されます。LVM advance
osd_objectstore: filestore osd_scenario: lvm lvm_volumes: - data: data-lv1 data_vg: vg1 journal: journal-lv1 journal_vg: vg2 - data: data-lv2 journal: /dev/sda data_vg: vg1
または
osd_objectstore: bluestore osd_scenario: lvm lvm_volumes: - data: data-lv1 data_vg: data-vg1 db: db-lv1 db_vg: db-vg1 wal: wal-lv1 wal_vg: wal-vg1 - data: data-lv2 data_vg: data-vg2 db: db-lv2 db_vg: db-vg2 wal: wal-lv2 wal_vg: wal-vg2
これらの事前シナリオ例では、事前にボリュームグループと論理ボリュームを作成しておく必要があります。それらは
ceph-ansible
によって作成されません。注記すべての NVMe SSD を使用する場合は、
osd_scenario:lvm
およびosds_per_device:4
オプションを設定します。詳細は、Red Hat Ceph Storage インストールガイドの Red Hat Enterprise Linux 用のすべての NVMe Storage の OSDAnsible 設定の構成または Ubuntu 用のすべての NVMe Storage の OSDAnsible設定の構成 を参照してください。詳細は、
osds.yml
ファイルのコメントをご覧ください。
デフォルトでは
/etc/ansible/hosts
にある Ansible のインベントリファイルを編集します。サンプルホストをコメントアウトすることを忘れないでください。[mons]
セクションの下に Monitor のノードを追加します。[mons] MONITOR_NODE_NAME1 MONITOR_NODE_NAME2 MONITOR_NODE_NAME3
[osds]
セクションの下に OSD ノードを追加します。ノードがシーケンシャルなネーミングの場合は、レンジの使用を検討してください。[osds] OSD_NODE_NAME1[1:10]
注記新規インストールの OSD の場合、デフォルトのオブジェクトストア形式は BlueStore です。
オプションで、
devices
およびdedicated_devices
オプションを使用して、OSD ノードが使用するデバイスを指定します。複数のデバイスをリストアップするには、コンマで区切ったリストを使用します。構文
[osds] CEPH_NODE_NAME devices="['DEVICE_1', 'DEVICE_2']" dedicated_devices="['DEVICE_3', 'DEVICE_4']"
例
[osds] ceph-osd-01 devices="['/dev/sdc', '/dev/sdd']" dedicated_devices="['/dev/sda', '/dev/sdb']" ceph-osd-02 devices="['/dev/sdc', '/dev/sdd', '/dev/sde']" dedicated_devices="['/dev/sdf', '/dev/sdg']"
デバイスを指定しない場合は、
osds.yml
ファイルのosd_auto_discovery
オプションをtrue
に設定してください。注記OSD が異なる名前の
デバイス
を使用する場合や、いずれかの OSD でデバイスのいずれかに障害が発生した場合に、devices およびdedicated_devices
パラメーターを使用すると便利です。
オプションで、すべてのデプロイメント( ベアメタル または コンテナー 内)でホスト固有のパラメーターを使用する場合は、ホストに固有のパラメーターを含めるために
host_vars
ディレクトリーにホストファイルを作成します。ストレージクラスターに追加される新しい Ceph OSD ノードを
/etc/ansible/host_vars/
ディレクトリーに作成します。構文
touch /etc/ansible/host_vars/OSD_NODE_NAME
例
[root@admin ~]# touch /etc/ansible/host_vars/osd07
ホスト固有のパラメーターで ファイルを更新します。ベアメタル デプロイメントでは、devices: および
dedicated_
セクションをファイルに追加できます。devices:
例
devices: - /dev/sdc - /dev/sdd - /dev/sde - /dev/sdf dedicated_devices: - /dev/sda - /dev/sdb
オプションで、ベアメタルまたはコンテナー内のすべてのデプロイメントで、
ansible-playbook
を使用してカスタム CRUSH 階層を作成できます。Ansible のインベントリーファイルを設定します。
osd_crush_location
パラメーターを使用して、OSD ホストを CRUSH マップの階層内のどこに配置するかを指定します。OSD の場所を指定するために、2 つ以上の CRUSH バケットタイプを指定し、1 つのバケットのtype
をホストに指定する必要があります。デフォルトでは、これには、root
、datacenter
、room
、row
、pod
、pdu
、rack
、chassis
およびhost
が含まれます。構文
[osds] CEPH_OSD_NAME osd_crush_location="{ 'root': ROOT_BUCKET', 'rack': 'RACK_BUCKET', 'pod': 'POD_BUCKET', 'host': 'CEPH_HOST_NAME' }"
例
[osds] ceph-osd-01 osd_crush_location="{ 'root': 'default', 'rack': 'rack1', 'pod': 'monpod', 'host': 'ceph-osd-01' }"
crush_rule_config
パラメーターとcreate_crush_tree
パラメーターをTrue
に設定し、デフォルトの CRUSH ルールを使用しない場合は、少なくとも 1 つの CRUSH ルールを作成します。たとえば、HDD デバイスを使用している場合は、次のようにパラメーターを編集します。crush_rule_config: True crush_rule_hdd: name: replicated_hdd_rule root: root-hdd type: host class: hdd default: True crush_rules: - "{{ crush_rule_hdd }}" create_crush_tree: True
SSD デバイスを使用している場合は、以下のようにパラメーターを編集します。
crush_rule_config: True crush_rule_ssd: name: replicated_ssd_rule root: root-ssd type: host class: ssd default: True crush_rules: - "{{ crush_rule_ssd }}" create_crush_tree: True
注記ssd
とhdd
の両方の OSD がデプロイされていない場合、デフォルトの CRUSH ルールは失敗します。これは、デフォルトのルールに、定義する必要のあるclass
パラメーターが含まれているためです。注記さらに、上記の手順で説明されているように、カスタムの CRUSH 階層を
host_vars
ディレクトリーの OSD ファイルに追加し、この設定を有効にします。group_vars/clients.yml
ファイルで作成したcrush_rules
を使用してpools
を作成します。例
>>>>>>> 3993c70c7f25ab628cbfd9c8e27623403ca18c99
copy_admin_key: True user_config: True pool1: name: "pool1" pg_num: 128 pgp_num: 128 rule_name: "HDD" type: "replicated" device_class: "hdd" pools: - "{{ pool1 }}"
ツリーを表示します。
[root@mon ~]# ceph osd tree
プールを検証します。
# for i in $(rados lspools);do echo "pool: $i"; ceph osd pool get $i crush_rule;done pool: pool1 crush_rule: HDD
ベアメタル またはコンテナー内 のすべてのデプロイメントで、Ansible インベントリーファイル (デフォルトでは
/etc/ansible/hosts
ファイル) を編集するために開きます。例のホストをコメントアウトします。[mgrs]
セクションに Ceph Manager (ceph-mgr
) ノードを追加します。Ceph Manager デーモンを Monitor ノードにコロケーションします。[mgrs] <monitor-host-name> <monitor-host-name> <monitor-host-name>
Ansible ユーザーとして、Ansible が Ceph ホストに到達できることを確認します。
[user@admin ~]$ ansible all -m ping
次の行を
/etc/ansible/ansible.cfg
ファイルに追加します。retry_files_save_path = ~/
root
として、/var/log/ansible/
ディレクトリーを作成し、ansible
ユーザーに適切な権限を割り当てます。[root@admin ~]# mkdir /var/log/ansible [root@admin ~]# chown ansible:ansible /var/log/ansible [root@admin ~]# chmod 755 /var/log/ansible
次のように
log_path
値を更新して、/usr/share/ceph-ansible/ansible.cfg
ファイルを編集します。log_path = /var/log/ansible/ansible.log
Ansible ユーザーとして、
/usr/share/ceph-ansible/
ディレクトリーに移動します。[user@admin ~]$ cd /usr/share/ceph-ansible/
ceph-ansible
Playbook を実行します。[user@admin ceph-ansible]$ ansible-playbook site.yml
注記デプロイメントの速度を増やすには、
--forks
オプションをansible-playbook
に指定します。デフォルトでは、ceph-ansible
はフォークを20
に設定します。この設定では、ノードを同時にインストールします。一度に最大 30 個のノードをインストールするには、ansible-playbook --forks 30 PLAYBOOKFILE
を実行します。管理ノードのリソースが過剰に使用されていないことを確認するために、監視する必要があります。そうである場合は、--forks
に渡される数を減らします。モニターノードの root アカウントを使用して、Ceph クラスターのステータスを確認します。
[root@monitor ~]# ceph health HEALTH_OK
rados
を使用してクラスターが機能していることを確認します。モニターノードから、8 つの配置グループを持つテストプールを作成します。
構文
[root@monitor ~]# ceph osd pool create <pool-name> <pg-number>
例
[root@monitor ~]# ceph osd pool create test 8
hello-world.txt
というファイルを作成します。構文
[root@monitor ~]# vim <file-name>
例
[root@monitor ~]# vim hello-world.txt
オブジェクト名
hello-world
を使用して、hello-world.txt
をテストプールにアップロードします。構文
[root@monitor ~]# rados --pool <pool-name> put <object-name> <object-file>
例
[root@monitor ~]# rados --pool test put hello-world hello-world.txt
テストプールからファイル名
fetch.txt
としてhello-world
をダウンロードします。構文
[root@monitor ~]# rados --pool <pool-name> get <object-name> <object-file>
例
[root@monitor ~]# rados --pool test get hello-world fetch.txt
fetch.txt
の内容を確認してください。[root@monitor ~]# cat fetch.txt
出力は以下のようになります。
"Hello World!"
注記クラスタの状態を確認するだけでなく、
ceph-medic
ユーティリティを使用して Ceph Storage Cluster を総合的に診断することができます。『Red Hat Ceph Storage 3 管理ガイド』 の「ceph-medic
を使用した Ceph Storage クラスターの診断 」の章を参照してください。
3.3. すべての NVMe ストレージに OSD Ansible 設定の構成
ストレージに NVMe (Non-volatile Memory Express) デバイスのみを使用する場合のパフォーマンスを最適化するには、各 NVMe デバイスに 4 つの OSD を構成します。通常、OSD はデバイスごとに1つしか設定されないため、NVMe デバイスのスループットを十分に活用できません。
SSD と HDD を混在させる場合、SSD は OSD ではなくジャーナルまたは block.db
のいずれかに使用されます。
テストでは、各 NVMe デバイスに 4 つの OSD を設定すると、最適なパフォーマンスが得られます。osds_per_device:4
を設定することをお勧めしますが、必須ではありません。他の値を設定すると、お客様の環境でより良いパフォーマンスが得られる場合があります。
前提条件
- Ceph クラスターのソフトウェアおよびハードウェアの要件をすべて満たすこと。
手順
osd_scenario:lvm
およびosds_per_device:4
をgroup_vars/osds.yml
に設定します。osd_scenario: lvm osds_per_device: 4
devices
の下に NVMe デバイスを一覧表示します。devices: - /dev/nvme0n1 - /dev/nvme1n1 - /dev/nvme2n1 - /dev/nvme3n1
group_vars/osds.yml
の設定は以下のようになります。osd_scenario: lvm osds_per_device: 4 devices: - /dev/nvme0n1 - /dev/nvme1n1 - /dev/nvme2n1 - /dev/nvme3n1
lvm_volumes
ではなく、この設定で devices
を使用する必要があります。これは、lvm_volumes
が、通常、作成済みの論理ボリュームで使用され、osds_per_device
は Ceph による論理ボリュームの自動作成を意味するためです。
3.4. メタデータサーバのインストール
Ansible 自動化アプリケーションを使用して Ceph Metadata Server (MDS) をインストールします。Ceph File System をデプロイするには、メタデータサーバーデーモンが必要です。
前提条件
- 稼働中の Red Hat Ceph Storage クラスター
手順
Ansible 管理ノードで以下の手順を実行します。
新しいセクション
[mdss]
を/etc/ansible/hosts
ファイルに追加します。[mdss] hostname hostname hostname
hostname は、Ceph Metadata Server をインストールするノードのホスト名に置き換えてください。
/usr/share/ceph-ansible
ディレクトリーに移動します。[root@admin ~]# cd /usr/share/ceph-ansible
任意。デフォルトの変数を変更します。
mdss.yml
という名前のgroup_vars/mdss.yml.sample
ファイルのコピーを作成します。[root@admin ceph-ansible]# cp group_vars/mdss.yml.sample group_vars/mdss.yml
-
オプションで、
mdss.yml
のパラメーターを編集します。詳細は、mdss.yml
を参照してください。
Ansible のユーザーとして、Ansible のプレイブックを実行します。
[user@admin ceph-ansible]$ ansible-playbook site.yml --limit mdss
- メタデータサーバーをインストールしたら、設定を行います。詳細は、Red Hat Ceph Storage3 の Ceph ファイルシステムガイドのメタデータサーバーデーモンの設定の章を参照してください。
関連情報
- Red Hat Ceph Storage 3 のCeph ファイルシステムガイド
-
limit
オプションについて
3.5. Ceph クライアントロールのインストール
ceph-ansible
ユーティリティーは、Ceph 設定ファイルと管理キーリングをノードにコピーする ceph-client
ロールを提供します。さらに、このロールを使用してカスタムプールおよびクライアントを作成することができます。
前提条件
-
稼働中の Ceph ストレージクラスター (
active + clean
の状態が望ましい)。 - 2章Red Hat Ceph Storage のインストール要件 に記載されているタスクを実行します。
手順
Ansible 管理ノードで以下のタスクを実行します。
新しいセクション
[clients]
を/etc/ansible/hosts
ファイルに追加します。[clients] <client-hostname>
<client-hostname>
は、ceph-client
ロールをインストールするノードのホスト名に置き換えます。/usr/share/ceph-ansible
ディレクトリーに移動します。[root@admin ~]# cd /usr/share/ceph-ansible
clients.yml
という名前のclients.yml.sample
ファイルの新しいコピーを作成します。[root@admin ceph-ansible ~]# cp group_vars/clients.yml.sample group_vars/clients.yml
group_vars/clients.yml
ファイルを開き、以下の行をコメント解除します。keys: - { name: client.test, caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" }, mode: "{{ ceph_keyring_permissions }}" }
client.test
を実際のクライアント名に置き換え、クライアントキーをクライアント定義の行に追加します。以下に例を示します。key: "ADD-KEYRING-HERE=="
これで、行全体の例は次のようになります。
- { name: client.test, key: "AQAin8tUMICVFBAALRHNrV0Z4MXupRw4v9JQ6Q==", caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" }, mode: "{{ ceph_keyring_permissions }}" }
注記ceph-authtool --gen-print-key
コマンドは、新しいクライアントキーを生成することができます。
必要に応じて、プールおよびクライアントを作成するように
ceph-client
に指示します。clients.yml
を更新します。-
user_config
設定のコメントを解除して、true
に設定します。 -
pools
セクションおよびkeys
セクションのコメントを解除し、必要に応じて更新します。cephx
機能を使用して、カスタムプールとクライアント名をまとめて定義できます。
-
osd_pool_default_pg_num
設定をall.yml
ファイルのceph_conf_overrides
セクションに追加します。ceph_conf_overrides: global: osd_pool_default_pg_num: <number>
<number>
を配置グループのデフォルト数に置き換えてください。
Ansible Playbook の実行:
[user@admin ceph-ansible]$ ansible-playbook site.yml --limit clients
関連情報
3.6. Ceph Object Gateway のインストール
Ceph Object Gateway は、RADOS ゲートウェイとも呼ばれ、librados
API 上に構築されたオブジェクトストレージインターフェースであり、アプリケーションに Ceph ストレージクラスターへの RESTful ゲートウェイを提供します。
前提条件
-
稼働中の Red Hat Ceph Storage クラスター (
active + clean
状態が望ましい) - Ceph Object Gateway ノードで、2章Red Hat Ceph Storage のインストール要件 に記載されているタスクを実行します。
手順
Ansible 管理ノードで以下のタスクを実行します。
[rgws]
セクションの下の/etc/ansible/hosts
ファイルにゲートウェイホストを追加して、それらのロールを Ansible に識別します。ホストに連続する命名がある場合は、以下のように範囲を使用します。[rgws] <rgw_host_name_1> <rgw_host_name_2> <rgw_host_name[3..10]>
Ansible 設定ディレクトリーに移動します。
[root@ansible ~]# cd /usr/share/ceph-ansible
サンプルファイルから
rgws.yml
ファイルを作成します。[root@ansible ~]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
group_vars/rgws.yml
ファイルを開いて編集します。管理者キーを Ceph Object Gateway ノードにコピーするには、copy_admin_key
オプションのコメントを解除します。copy_admin_key: true
rgws.yml
ファイルでは、デフォルトの7480
ポートとは異なるデフォルトポートを指定することができます。以下に例を示します。ceph_rgw_civetweb_port: 80
all.yml
ファイルはradosgw_interface
を指定する必要があります。以下に例を示します。radosgw_interface: eth0
インターフェースを指定すると、同じホストで複数のインスタンスを実行している場合に、Civetweb が別の Civetweb インスタンスと同じ IP アドレスにバインドされないようにします。
通常、デフォルトの設定を変更するには、
rgw.yml
ファイル内の設定をアンコメントし、それに応じて変更します。rgw.yml
ファイルにない設定に追加の変更を加えるには、all.yml
ファイルでceph_conf_overrides:
を使用します。例えば、rgw_dns_name:
に DNS サーバーのホストを設定し、クラスタの DNS サーバーをワイルドカード用に設定して S3 サブドメインを有効にします。ceph_conf_overrides: client.rgw.rgw1: rgw_dns_name: <host_name> rgw_override_bucket_index_max_shards: 16 rgw_bucket_default_quota_max_objects: 1638400
詳細な設定の詳細は、Red Hat Ceph Storage 3 の『実稼働環境への Ceph Object Gateway ガイド』を参照してください。高度なトピックには以下が含まれます。
- Ansible グループの設定
ストレージストラテジーの開発プールの作成方法および設定方法の詳細は、「ルートプールの作成」、「システムプールの作成」、および「データ配置戦略の作成」セクションを参照してください。
バケットのシャード化の詳細は、「バケットのシャード化」を参照してください。
group_vars/all.yml
ファイルのradosgw_interface
パラメーターのコメントを外します。radosgw_interface: <interface>
以下を置き換えます。
-
Ceph Object Gateway がリッスンするインターフェースを使用する
<interface>
詳細は、
all.yml
ファイルを参照してください。-
Ceph Object Gateway がリッスンするインターフェースを使用する
Ansible Playbook の実行:
[user@admin ceph-ansible]$ ansible-playbook site.yml --limit rgws
Ansible は、各 Ceph Object Gateway が確実に実行されていることを確認します。
単一サイトの構成の場合は、Ceph ObjectGateway を Ansible 構成に追加します。
マルチサイトデプロイメントでは、各ゾーンの Ansible 設定を行う必要があります。つまり、Ansible によって、そのゾーン用に Ceph Storage クラスターおよびゲートウェイインスタンスが作成されます。
マルチサイトクラスターのインストールが完了したら、マルチサイト用のクラスターの設定方法は、『Ubuntu 用のオブジェクトゲートウェイガイド』の「マルチサイト」の章に進んでください。
関連情報
3.6.1. マルチサイト Ceph Object Gateway の設定
Ansibleは、マルチサイト環境の Ceph Object Gateway のレルム、ゾーングループ、マスターゾーン、セカンダリゾーンを構成します。
前提条件
- Red Hat Ceph Storage クラスターを実行する 2 つ。
- Ceph Object Gateway ノード上で、『Red Hat Ceph Storage インストールガイド』の「Red Hat Ceph Storage のインストール要件」に記載のタスクを実行します。
- ストレージクラスターごとに 1 つの Ceph Object Gateway をインストールして構成します。
手順
プライマリーストレージクラスターの Ansible ノードで以下の手順を実行します。
システムキーを生成し、
multi-site-keys.txt
ファイルで出力を取得します。[root@ansible ~]# echo system_access_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1) > multi-site-keys.txt [root@ansible ~]# echo system_secret_key: $(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 40 | head -n 1) >> multi-site-keys.txt
Ansible 設定ディレクトリー
/usr/share/ceph-ansible
に移動します。[root@ansible ~]# cd /usr/share/ceph-ansible
group_vars/all.yml
ファイルを開いて編集します。以下のオプションを追加し、$ZONE_NAME
、$ZONE_GROUP_NAME
、$REALM_NAME
、$ACCESS_KEY
、$SECRET_KEY
の値を適宜更新することで、マルチサイトのサポートを有効にします。複数の Ceph Object Gateway がマスターゾーンにある場合は、
rgw_multisite_endpoints
オプションを設定する必要があります。rgw_multisite_endpoints
オプションの値は、コンマで区切られたリストで、スペースは含みません。例
rgw_multisite: true rgw_zone: $ZONE_NAME rgw_zonemaster: true rgw_zonesecondary: false rgw_multisite_endpoint_addr: "{{ ansible_fqdn }}" rgw_multisite_endpoints: http://foo.example.com:8080,http://bar.example.com:8080,http://baz.example.com:8080 rgw_zonegroup: $ZONE_GROUP_NAME rgw_zone_user: zone.user rgw_realm: $REALM_NAME system_access_key: $ACCESS_KEY system_secret_key: $SECRET_KEY
注記ansible_fqdn
ドメイン名は、セカンダリーストレージクラスターから解決可能である必要があります。注記新しい Object Gateway を追加するときは、Ansible Playbook を実行する前に、新しい Object Gateway のエンドポイント URL を使用して
rgw_multisite_endpoints
リストの最後に追加してください。Ansible Playbook の実行:
[user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
Ceph Object Gateway デーモンを再起動します。
[root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
セカンダリーストレージクラスターの Ansible ノードで以下の手順を行います。
Ansible 設定ディレクトリー
/usr/share/ceph-ansible
に移動します。[root@ansible ~]# cd /usr/share/ceph-ansible
group_vars/all.yml
ファイルを開いて編集します。以下のオプションを追加し、$ZONE_NAME
、$ZONE_GROUP_NAME
、$REALM_NAME
、$ACCESS_KEY
、$SECRET_KEY
の値を更新することで、マルチサイトのサポートを有効にします。rgw_zone_user
、system_access_key
、system_secret_key
は、マスターゾーンの設定で使用したものと同じ値でなければなりません。rgw_pullhost
オプションには、マスターゾーンの Ceph Object Gateway を指定する必要があります。複数の Ceph Object Gateway がセカンダリゾーンにある場合は、
rgw_multisite_endpoints
オプションを設定する必要があります。rgw_multisite_endpoints
オプションの値は、コンマで区切られたリストで、スペースは含みません。例
rgw_multisite: true rgw_zone: $ZONE_NAME rgw_zonemaster: false rgw_zonesecondary: true rgw_multisite_endpoint_addr: "{{ ansible_fqdn }}" rgw_multisite_endpoints: http://foo.example.com:8080,http://bar.example.com:8080,http://baz.example.com:8080 rgw_zonegroup: $ZONE_GROUP_NAME rgw_zone_user: zone.user rgw_realm: $REALM_NAME system_access_key: $ACCESS_KEY system_secret_key: $SECRET_KEY rgw_pull_proto: http rgw_pull_port: 8080 rgw_pullhost: $MASTER_RGW_NODE_NAME
注記ansible_fqdn
ドメイン名は、プライマリーストレージクラスターから解決可能である必要があります。注記新しい Object Gateway を追加するときは、Ansible Playbook を実行する前に、新しい Object Gateway のエンドポイント URL を使用して
rgw_multisite_endpoints
リストの最後に追加してください。Ansible Playbook の実行:
[user@ansible ceph-ansible]$ ansible-playbook site.yml --limit rgws
Ceph Object Gateway デーモンを再起動します。
[root@rgw ~]# systemctl restart ceph-radosgw@rgw.`hostname -s`
- マスターおよびセカンダリストレージクラスターで Ansible プレイブックを実行すると、アクティブ-アクティブ Ceph Object Gateway 構成が実行されます。
マルチサイト Ceph Object Gateway の設定を確認します。
-
各サイトの Ceph Monitor ノードと Object Gateway ノードから、プライマリーとセカンダリが他のサイトを
curl
できる必要があります。 -
両方のサイトで
radosgw-admin sync status
コマンドを実行します。
-
各サイトの Ceph Monitor ノードと Object Gateway ノードから、プライマリーとセカンダリが他のサイトを
3.7. NFS-Ganesha ゲートウェイのインストール
Ceph NFS Ganesha ゲートウェイは、Ceph Object Gateway 上に構築される NFS インターフェースで、ファイルシステム内のファイルを Ceph Object Storage に移行するために POSIX ファイルシステムインターフェースを使用するアプリケーションを Ceph Object Gateway に提供します。
前提条件
-
稼働中の Ceph ストレージクラスター (
active + clean
の状態が望ましい)。 - Ceph Object Gateway を実行するノードを少なくとも 1 つ。
- 開始前の手順を 実行します。
手順
Ansible 管理ノードで以下のタスクを実行します。
サンプルファイルから
nfss
ファイルを作成します。[root@ansible ~]# cd /usr/share/ceph-ansible/group_vars [root@ansible ~]# cp nfss.yml.sample nfss.yml
[nfss]
グループの下にゲートウェイホストを/etc/ansible/hosts
ファイルに追加して、Ansible へのグループメンバーシップを特定します。ホストがシーケンシャルに命名されている場合は、範囲を指定します。以下に例を示します。[nfss] <nfs_host_name_1> <nfs_host_name_2> <nfs_host_name[3..10]>
Ansible の設定ディレクトリである
/etc/ansible/
に移動します。[root@ansible ~]# cd /usr/share/ceph-ansible
管理者キーを Ceph Object Gateway ノードにコピーするには、
/usr/share/ceph-ansible/group_vars/nfss.yml
ファイルのcopy_admin_key
設定をコメント解除します。copy_admin_key: true
/usr/share/ceph-ansible/group_vars/nfss.yml
ファイルの FSAL (File System Abstraction Layer) セクションを設定します。ID、S3 ユーザー ID、S3 アクセスキーおよびシークレットを提供します。NFSv4 の場合は、以下のようになります。################### # FSAL RGW Config # ################### #ceph_nfs_rgw_export_id: <replace-w-numeric-export-id> #ceph_nfs_rgw_pseudo_path: "/" #ceph_nfs_rgw_protocols: "3,4" #ceph_nfs_rgw_access_type: "RW" #ceph_nfs_rgw_user: "cephnfs" # Note: keys are optional and can be generated, but not on containerized, where # they must be configered. #ceph_nfs_rgw_access_key: "<replace-w-access-key>" #ceph_nfs_rgw_secret_key: "<replace-w-secret-key>"
警告アクセスおよびシークレットキーは任意で、生成できます。
Ansible Playbook の実行:
[user@admin ceph-ansible]$ ansible-playbook site-docker.yml --limit nfss
関連情報
3.8. limit
オプションについて
本セクションでは、Ansible の --limit
オプションを説明します。
Ansible は、インベントリーファイルの特定のセクションに site
、site-docker
、rolling_upgrade
Ansible Playbook を使用できるようにする --limit
オプションをサポートしています。
$ ansible-playbook site.yml|rolling_upgrade.yml|site-docker.yml --limit osds|rgws|clients|mdss|nfss|iscsigws
たとえば、ベアメタルに OSD のみを再デプロイするには、Ansible ユーザーとして次のコマンドを実行します。
$ ansible-playbook /usr/share/ceph-ansible/site.yml --limit osds
1 つのノードに Ceph コンポーネントを同じ場所に配置すると、limit
オプションで指定されたコンポーネントタイプが 1 つだけであるにもかかわらず、Ansible はノード上のすべてのコンポーネントにプレイブックを適用します。たとえば、OSD とメタデータサーバー (MDS) を含むノードで --limit osds
オプションを指定して rolling_update
プレイブックを実行すると、Ansible は OSD と MDS の両方のコンポーネントをアップグレードします。
3.9. 関連情報
第4章 Red Hat Ceph Storage Cluster のアップグレード
このセクションでは、Red Hat Ceph Storage の新しいメジャーバージョンまたはマイナーバージョンにアップグレードする方法について説明します。
以前は、Red Hat は Ubuntu 用の ceph-ansible
パッケージを提供していませんでした。Red Hat Ceph Storage バージョン 3 以降では、Ansible 自動化アプリケーションを使用して Ubuntu ノードから Ceph クラスターをアップグレードできます。
- ストレージクラスターをアップグレードするには、「ストレージクラスターのアップグレード」 を参照してください。
管理ノードの /usr/share/ceph-ansible/infrastructure-playbooks/
ディレクトリーにある Ansiblerolling_update.yml
Playbook を使用して、Red Hat Ceph Storage の 2 つのメジャーバージョンまたはマイナーバージョン間でアップグレードするか、非同期更新を適用します。
Ansible は Ceph ノードを以下の順序でアップグレードします。
- ノードの監視
- MGR ノード
- OSD ノード
- MDS ノード
- Ceph Object Gateway ノード
- その他すべての Ceph クライアントノード
Red Hat Ceph Storage 3 では、/usr/share/ceph-ansible/group_vars/
ディレクトリーにある Ansible 設定ファイルにいくつかの変更が導入されており、特定のパラメーターの名前が変更されたり削除されたりしています。したがって、バージョン 3 にアップグレードした後、all.yml.sample
ファイルと osds.yml.sample
ファイルから新しいコピーを作成する前に、all.yml
ファイルと osds.yml
ファイルのバックアップコピーを作成してください。変更点の詳細は、付録H バージョン 2 と 3 の間の Ansible 変数の変更 をご覧ください。
Red Hat Ceph Storage 3.1 以降では、Object Gateway および高速 NVMe ベースの SSD (および SATA SSD) を使用する場合のパフォーマンスのためにストレージを最適化するために、新しい Ansible プレイブックが導入されています。Playbook は、ジャーナルとバケットインデックスを SSD に一緒に配置することでこれを行います。これにより、すべてのジャーナルを 1 つのデバイスに配置する場合に比べてパフォーマンスを向上させることができます。これらの Playbook は、Ceph のインストール時に使用されます。既存の OSD は動作し続け、アップグレード中に追加のステップは必要ありません。このようにストレージを最適化するために OSD を同時に再設定する際に、Ceph クラスターをアップグレードする方法はありません。ジャーナルまたはバケットインデックスに異なるデバイスを使用するには、OSD を再プロビジョニングする必要があります。詳細は、Ceph Object Gateway for Production での LVM での NVMe の最適な使用を参照してください。
Playbook rolling_update.yml
には、同時に更新するノード数を調整する シリアル
変数が含まれます。Red Hat では、デフォルト値 (1
) を使用することを強く推奨します。これにより、Ansible がクラスターノードを 1 つずつアップグレードします。
いずれかの時点でアップグレードが失敗した場合は、ceph status
コマンドでクラスターの状態を確認して、アップグレードの失敗理由を把握します。不具合の原因や解決方法がわからない場合は、Red Hat サポート にお問い合わせください。
rolling_update.yml
Playbook を使用して Red Hat Ceph Storage 3.x バージョンにアップグレードする場合、Ceph ファイルシステム (Ceph FS)を使用するユーザーは、Metadata Server (MDS) クラ スターを手動で更新する必要があります。これは、既知の問題によるものです。
ceph-ansible
rolling-upgrade.yml
を使用してクラスター全体をアップグレードする前に /etc/ansible/hosts
の MDS ホストをコメントアウトしてから、MDS を手動でアップグレードします。etc/ansible/hosts
ファイルでは
#[mdss] #host-abc
MDS クラスターの更新方法など、この既知の問題の詳細については、Red Hat Ceph Storage 3.0 リリースノート を参照してください。
Red Hat Ceph Storage クラスターを以前のバージョンからバージョン 3.2 にアップグレードする場合、Ceph Ansible 設定ではデフォルトのオブジェクトストアタイプが BlueStore に設定されます。OSD オブジェクトストアに FileStore を使用する場合は、Ceph Ansible 設定を明示的に FileStore に設定します。これにより、新たにデプロイされ、置き換えられた OSD は FileStore を使用します。
Playbook rolling_update.yml
を使用して Red Hat Ceph Storage 3.x バージョンにアップグレードし、マルチサイト Ceph Object Gateway 設定を使用している場合には、マルチサイト設定を指定するために all.yml
ファイルを手動で更新する必要はありません。
前提条件
- Ceph ノードが Red Hat コンテンツ配信ネットワーク (CDN) に接続されておらず、ISO イメージを使用して Red Hat Ceph Storage をインストールした場合は、ローカルリポジトリーを最新バージョンの Red Hat Ceph Storage で更新します。詳しくは 「Red Hat Ceph ストレージリポジトリーの有効化」 をご覧ください。
Red Hat Ceph Storage 2.x から 3.x にアップグレードする場合は、Ansible 管理ノードと RBD ミラーリングノードで、Red Hat Ceph Storage 3 Tools リポジトリーを有効にします。
[root@admin ~]$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' [root@admin ~]$ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' [root@admin ~]$ sudo apt-get update
Ansible 管理ノードで RHCS2.x から 3.x に、または RHCS 3.x から最新バージョンにアップグレードする場合は、
ceph-ansible
パッケージの最新バージョンがインストールされていることを確認してください。[root@admin ~]$ sudo apt-get install ceph-ansible
rolling_update.yml
Playbook で、health_osd_check_retries
とhealth_osd_check_delay
の値をそれぞれ50
と30
に変更します。health_osd_check_retries: 50 health_osd_check_delay: 30
これらの値を設定すると、OSD ノードごとに Ansible は最大 25 分待機し、30 秒ごとにストレージクラスターの状態をチェックし、アップグレードプロセスを続行する前に待機します。
注記ストレージクラスターで使用されているストレージ容量に基づいて、
health_osd_check_retries
オプションの値をスケールアップまたはダウンします。たとえば、436 TB 未満の 218 TB (ストレージ容量の 50%) を使用している場合は、health_osd_check_retries
オプションを50
に設定します。アップグレードするクラスターに
exclusive-lock
機能を使用する Ceph Block Device イメージが含まれている場合には、全 Ceph Block Device ユーザーにクライアントをブラックリストに登録するパーミッションがあるようにしてください。ceph auth caps client.<ID> mon 'allow r, allow command "osd blacklist"' osd '<existing-OSD-user-capabilities>'
4.1. ストレージクラスターのアップグレード
手順
Ansible の管理ノードから以下のコマンドを使用します。
root
ユーザーとして、/usr/share/ceph-ansible/
ディレクトリーにナビゲートします。[root@admin ~]# cd /usr/share/ceph-ansible/
Red Hat Ceph Storage バージョン 3.x から最新バージョンにアップグレードする場合は、この手順をスキップします。
group_vars/all.yml
とgroup_vars/osds.yml
ファイルをバックアップします。[root@admin ceph-ansible]# cp group_vars/all.yml group_vars/all_old.yml [root@admin ceph-ansible]# cp group_vars/osds.yml group_vars/osds_old.yml [root@admin ceph-ansible]# cp group_vars/clients.yml group_vars/clients_old.yml
Red Hat Ceph Storage バージョン 3.x から最新バージョンにアップグレードする場合は、この手順をスキップします。Red Hat Ceph Storage 2.x から 3.x にアップグレードする場合は、
group_vars/all.yml.sample
、group_vars/osds.yml.sample
、group_vars/clients.yml.sample
ファイルの新しいコピーを作成して、それぞれgroup_vars/all.yml
、group_vars/osds.yml
、group_vars/clients.yml
に名前を変更します。それらを開いて編集します。詳しくは、付録H バージョン 2 と 3 の間の Ansible 変数の変更 と「Red Hat Ceph Storage クラスターのインストール」 をご覧ください。[root@admin ceph-ansible]# cp group_vars/all.yml.sample group_vars/all.yml [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml [root@admin ceph-ansible]# cp group_vars/clients.yml.sample group_vars/clients.yml
Red Hat Ceph Storage バージョン 3.x から最新バージョンにアップグレードする場合は、この手順をスキップします。Red Hat Ceph Storage 2.x から 3.x にアップグレードする場合は、
group_vars/clients.yml
ファイルを開き、以下の行をアンコメントします。keys: - { name: client.test, caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" }, mode: "{{ ceph_keyring_permissions }}" }
client.test
を実際のクライアント名に置き換え、クライアントキーをクライアント定義の行に追加します。以下に例を示します。key: "ADD-KEYRING-HERE=="
これで、行全体の例は次のようになります。
- { name: client.test, key: "AQAin8tUMICVFBAALRHNrV0Z4MXupRw4v9JQ6Q==", caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" }, mode: "{{ ceph_keyring_permissions }}" }
注記クライアントキーを取得するには、
ceph auth get-or-create
コマンドを実行して、指定されたクライアントのキーを表示します。
group_vars/all.yml
ファイルで、upgrade_ceph_packages
オプションのコメントを外し、True
に設定します。upgrade_ceph_packages: True
group_vars/all.yml
ファイルにfetch_directory
パラメーターを追加してください。fetch_directory: <full_directory_path>
以下を置き換えます。
-
<full_directory_path>
を、書き込み可能な場所 (Ansible ユーザーのホームディレクトリーなど) に置き換えます。ストレージクラスターの初期インストール時に使用した既存のパスを入力してください。
既存のパスが失われていたり、なくなっていたりする場合は、まず次のことを行ってください。
既存の
group_vars/all.yml
ファイルに以下のオプションを追加します。fsid: <add_the_fsid> generate_fsid: false
take-over-existing-cluster.yml
Ansible playbook を実行します。[user@admin ceph-ansible]$ cp infrastructure-playbooks/take-over-existing-cluster.yml . [user@admin ceph-ansible]$ ansible-playbook take-over-existing-cluster.yml
-
アップグレードするクラスターに Ceph Object Gateway ノードが含まれている場合は、
radosgw_interface
パラメーターをgroup_vars/all.yml
ファイルに追加します。radosgw_interface: <interface>
以下を置き換えます。
-
Ceph Object Gateway がリッスンするインターフェースを使用する
<interface>
-
Ceph Object Gateway がリッスンするインターフェースを使用する
Red Hat Ceph Storage 3.2 から、デフォルトの OSD オブジェクトストアは BlueStore です。従来の OSD オブジェクトストアを維持するには、
osd_objectstore
オプションをgroup_vars/all.yml
ファイルのfilestore
に明示的に設定する必要があります。osd_objectstore: filestore
注記osd_objectstore
オプションをfilestore
に設定し、OSD を置き換えると BlueStore ではなく FileStore が使用されます。/etc/ansible/hosts
にある Ansible インベントリーファイルで、[mgrs]
セクションの下に Ceph Manager (ceph-mgr
) ノードを追加します。Ceph Manager デーモンを Monitor ノードにコロケーションします。バージョン 3.x から最新のバージョンにアップグレードする場合は、この手順をスキップします。[mgrs] <monitor-host-name> <monitor-host-name> <monitor-host-name>
infrastructure-playbooks
ディレクトリーから現在のディレクトリーに、rolling_update.yml
をコピーします。[root@admin ceph-ansible]# cp infrastructure-playbooks/rolling_update.yml .
重要Playbook
rolling_update.yml
では、limit
の ansible オプションを使用しないでください。/var/log/ansible/
ディレクトリーを作成し、ansible
ユーザーに適切な権限を割り当てます。[root@admin ceph-ansible]# mkdir /var/log/ansible [root@admin ceph-ansible]# chown ansible:ansible /var/log/ansible [root@admin ceph-ansible]# chmod 755 /var/log/ansible
次のように
log_path
値を更新して、/usr/share/ceph-ansible/ansible.cfg
ファイルを編集します。log_path = /var/log/ansible/ansible.log
Ansible ユーザーとして、Playbook を実行します。
[user@admin ceph-ansible]$ ansible-playbook rolling_update.yml
RBD ミラーリングデーモンノードに
root
ユーザーとしてログインしているときに、rbd-mirror
を手動でアップグレードします。$ sudo apt-get upgrade rbd-mirror
デーモンを再起動:
# systemctl restart ceph-rbd-mirror@<client-id>
-
クラスターの状態に問題がないことを確認します。
root
ユーザーとしてモニターノードにログインし、cephstatus コマンドを実行します。
[root@monitor ~]# ceph -s
OpenStack 環境で動作する場合には、すべての
cephx
ユーザーがプールに RBD プロファイルを使用するように更新します。以下のコマンドはroot
ユーザーとして実行する必要があります。Glance ユーザー
ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=<glance-pool-name>'
例
[root@monitor ~]# ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=images'
Cinder ユーザー
ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=<cinder-volume-pool-name>, profile rbd pool=<nova-pool-name>, profile rbd-read-only pool=<glance-pool-name>'
例
[root@monitor ~]# ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
OpenStack の一般ユーザー
ceph auth caps client.openstack mon 'profile rbd' osd 'profile rbd-read-only pool=<cinder-volume-pool-name>, profile rbd pool=<nova-pool-name>, profile rbd-read-only pool=<glance-pool-name>'
例
[root@monitor ~]# ceph auth caps client.openstack mon 'profile rbd' osd 'profile rbd-read-only pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
重要ライブクライアントの移行を実行する前に、これらの CAPS 更新を行います。これにより、クライアントがメモリーで実行している新しいライブラリーを使用でき、古い CAPS 設定がキャッシュから破棄され、新しい RBD プロファイル設定が適用されるようになります。
第5章 次のステップ
これは、最新のデータセンターの困難なストレージ要求を満たすために Red Hat Ceph Storage が実行できることの開始点にすぎません。以下は、さまざまなトピックの情報へのリンクになります。
- パフォーマンスのベンチマークとパフォーマンスカウンターへのアクセスは、Red Hat Ceph Storage 3 の『管理ガイド』の「パフォーマンスのベンチマーク」の章を参照してください。
- スナップショットの作成および管理。Red Hat Ceph Storage 3 の『ブロックデバイスガイド』の「スナップショット」の章を参照してください。
- Red Hat Ceph Storage クラスターの拡張については、Red Hat Ceph Storage 3 の『管理ガイド』の「クラスターサイズの管理」の章を参照してください。
- Ceph Block Device のミラーリングは、Red Hat Ceph Storage 3 の『ブロックデバイスガイド』の「ブロックデバイスのミラーリング」の章を参照してください。
- プロセス管理。Red Hat Ceph Storage 3 の『管理ガイド』の「プロセスの管理」の章を参照してください。
- 調整可能なパラメーター。Red Hat Ceph Storage 3 の「設定ガイド」を参照してください。
- OpenStack のバックエンドストレージとして Ceph を使用する場合には、Red Hat OpenStack Platform の 『ストレージガイド』の「バックエンド」セクションを参照してください。
付録A トラブルシューティング
A.1. Ansible は、予想よりも少ないデバイスを検出するため、インストールを停止します
Ansible 自動化アプリケーションはインストールプロセスを停止し、以下のエラーを返します。
- name: fix partitions gpt header or labels of the osd disks (autodiscover disks) shell: "sgdisk --zap-all --clear --mbrtogpt -- '/dev/{{ item.0.item.key }}' || sgdisk --zap-all --clear --mbrtogpt -- '/dev/{{ item.0.item.key }}'" with_together: - "{{ osd_partition_status_results.results }}" - "{{ ansible_devices }}" changed_when: false when: - ansible_devices is defined - item.0.item.value.removable == "0" - item.0.item.value.partitions|count == 0 - item.0.rc != 0
エラー内容:
/usr/share/ceph-ansible/group_vars/osds.yml
ファイルで osd_auto_discovery
パラメーターが true
に設定されている場合、Ansible は利用可能なすべてのデバイスを自動的に検出して設定します。このプロセス中、Ansible はすべての OSD が同じデバイスを使用することを想定します。デバイスは、Ansible が名前を検出するのと同じ順序で名前を取得します。いずれかの OSD でデバイスのいずれかが失敗すると、Ansible は障害が発生したデバイスの検出に失敗し、インストールプロセス全体を停止します。
状況例:
-
3 つの OSD ノード (
host1
、host2
、host3
) は、/dev/sdb
ディスク、/dev/sdc
ディスク、およびdev/sdd
ディスクを使用します。 -
host2
では、/dev/sdc
ディスクに障害が発生し、削除されます。 -
次回の再起動時に、Ansible は削除した
/dev/sdc
ディスクの検出に失敗し、host2
、/dev/sdb
および/dev/sdc
(以前は/dev/sdd
) には 2 つのディスクのみが使用されることを想定します。 - Ansible はインストールプロセスを停止し、上記のエラーメッセージを返します。
この問題を修正するには、以下を実行します。
/etc/ansible/hosts
ファイルで、障害が発生したディスクを持つ OSD ノードが使用するデバイスを指定します (上記の例の host2
)。
[osds] host1 host2 devices="[ '/dev/sdb', '/dev/sdc' ]" host3
詳しくは 3章Red Hat Ceph Storage の導入 をご覧ください。
付録B Red Hat Ceph Storage の手動インストール
Red Hat は、手動でデプロイしたクラスターのアップグレードをサポートしたり、テストしたりしません。したがって、Red Hat は、Ansible を使用して Red Hat Ceph Storage 3 で新規クラスターをデプロイすることを推奨します。詳しくは 3章Red Hat Ceph Storage の導入 をご覧ください。
apt-get
などのコマンドラインユーティリティーを使用して、手動でデプロイされたクラスターをインストールできます。
すべての Ceph クラスターにはモニターが少なくとも 1 つ、最低でも OSD がクラスターに保存されているオブジェクトのコピーとして必要になります。Red Hat は、実稼働環境に 3 台のモニターを使用し、少なくとも 3 つのオブジェクトストレージデバイス (OSD) を使用することを推奨します。
コマンドラインインターフェースを使用して Ceph Storage クラスターをインストールするには、以下の手順を行います。
B.1. 前提条件
Red Hat Ceph Storage のネットワークタイムプロトコルの設定
すべての Ceph Monitor および OSD ノードでは、ネットワークタイムプロトコル (NTP) を構成する必要があります。Ceph ノードが NTP ピアであることを確認します。NTP は、クロックドリフトから発生する問題を先取りするのに役立ちます。
Ansible を使用して Red Hat Ceph Storage クラスターをデプロイする場合、Ansible は NTP を自動的にインストール、構成、および有効にします。
前提条件
- 有効なタイムソースへのネットワークアクセス。
手順: RHCS のネットワークタイムプロトコルを構成する
ストレージクラスターのすべての RHCS ノードで、 root
ユーザーとして以下の手順を実行します。
ntp
パッケージをインストールします。$ sudo apt-get install ntp
$ sudo systemctl start ntp $ sudo systemctl enable ntp
NTP が正しくクロックを同期していることを確認してください。
$ ntpq -p
関連情報
- Red Hat Enterprise Linux7 の システム管理者ガイドのntpd を使用した NTP の設定の章。
ブートストラップの監視
Monitor のブートストラップおよび Ceph Storage クラスターの拡張には、以下のデータが必要です。
- 一意識別子
-
ファイルシステム識別子 (
fsid
) はクラスターの一意の識別子です。fsid
は、Ceph ストレージクラスターが Ceph ファイルシステムに主に使用する場合に使用されていました。Ceph はネイティブのインターフェース、ブロックデバイス、およびオブジェクトストレージゲートウェイのインターフェースもサポートするようになり、fsid
は一部の誤検出になります。 - クラスター名
Ceph クラスターにはクラスター名があり、これはスペースを含まないシンプルな文字列です。デフォルトのクラスター名は
ceph
ですが、別のクラスター名を指定することもできます。デフォルトのクラスター名を上書きすることは、複数のクラスターを扱う場合に特に有効です。マルチサイトアーキテクチャーで複数のクラスターを実行する場合、クラスター名 (
us-west
、us-east
など) は、現在のコマンドラインセッションのクラスターを識別します。注記コマンドラインインターフェイスでクラスター名を識別するには、クラスター名を使用して Ceph 構成ファイルを指定します (例:
ceph.conf
、us-west.conf
、us-east.conf
など)。たとえば、以下のようになります。
# ceph --cluster us-west.conf ...
- 監視名
-
クラスター内の各 Monitor インスタンスには一意の名前があります。一般的には、Ceph Monitor 名はノード名です。Red Hat では、ノードごとに Ceph Monitor を 1 つ推奨していますが、Ceph OSD デーモンを Ceph Monitor デーモンと同じ場所に配置しないことを推奨します。短いノード名を取得するには、
hostname -s
コマンドを使用します。 - マップの監視
初期モニターのブートストラップでは、モニターマップを生成する必要があります。Monitor マップには以下が必要です。
-
ファイルシステム識別子 (
fsid
) -
クラスター名、または
ceph
のデフォルトのクラスター名が使用されます。 - 1 つ以上のホスト名とその IP アドレス
-
ファイルシステム識別子 (
- キーリングの監視
- モニターは、秘密鍵を使用して相互に通信します。Monitor 秘密鍵でキーリングを生成し、初期 Monitor のブートストラップ時にこれを提供する必要があります。
- 管理者キーリング
-
ceph
コマンドラインインターフェースユーティリティーを使用するには、client.admin
ユーザーを作成し、そのキーリングを生成します。また、client.admin
ユーザーを Monitor キーリングに追加する必要があります。
前述の要件は、Ceph 設定ファイルの作成を意味するものではありません。ただし、Red Hat では、Ceph 設定ファイルを作成し、少なくとも fsid
、mon initial members
、および mon host
の設定で設定することを推奨します。
実行時にすべての Monitor 設定を取得および設定できます。ただし、Ceph 設定ファイルには、デフォルト値を上書きする設定のみが含まれる場合があります。Ceph 設定ファイルに設定を追加すると、デフォルト設定が上書きされます。Ceph 設定ファイルでこれらの設定を維持すると、クラスターを簡単に維持できます。
初期モニターをブートストラップするには、以下の手順を実行します。
Red Hat Ceph Storage 3 Monitor リポジトリーを有効にします。
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/MON $(lsb_release -sc) main | tee /etc/apt/sources.list.d/MON.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update
初期 Monitor ノードで、
root
でceph-mon
パッケージをインストールします。$ sudo apt-get install ceph-mon
root
で、/etc/ceph/
ディレクトリーに Ceph 設定ファイルを作成します。デフォルトでは、Ceph はceph.conf
を使用します。ここで、ceph
はクラスター名を反映します。構文
# touch /etc/ceph/<cluster_name>.conf
例
# touch /etc/ceph/ceph.conf
root
でクラスターの一意の識別子を生成し、一意の ID を Ceph 設定ファイルの[global]
セクションに追加します。構文
# echo "[global]" > /etc/ceph/<cluster_name>.conf # echo "fsid = `uuidgen`" >> /etc/ceph/<cluster_name>.conf
例
# echo "[global]" > /etc/ceph/ceph.conf # echo "fsid = `uuidgen`" >> /etc/ceph/ceph.conf
現在の Ceph 設定ファイルを表示します。
$ cat /etc/ceph/ceph.conf [global] fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993
root
として、最初の Monitor を Ceph 設定ファイルに追加します。構文
# echo "mon initial members = <monitor_host_name>[,<monitor_host_name>]" >> /etc/ceph/<cluster_name>.conf
例
# echo "mon initial members = node1" >> /etc/ceph/ceph.conf
root
として、初期 Monitor の IP アドレスを Ceph 設定ファイルに追加します。構文
# echo "mon host = <ip-address>[,<ip-address>]" >> /etc/ceph/<cluster_name>.conf
例
# echo "mon host = 192.168.0.120" >> /etc/ceph/ceph.conf
注記IPv6 アドレスを使用するには、
ms bind ipv6
オプションをtrue
に設定します。詳細は、Red Hat Ceph Storage 3 の『設定ガイド』の「バインド」セクションを参照してください。root
として、クラスターのキーリングを作成し、Monitor シークレットキーを生成します。構文
# ceph-authtool --create-keyring /tmp/<cluster_name>.mon.keyring --gen-key -n mon. --cap mon '<capabilites>'
例
# ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' creating /tmp/ceph.mon.keyring
root
で管理者キーリングを生成し、<cluster_name>.client.admin.keyring
ユーザーを生成し、ユーザーをキーリングに追加します。構文
# ceph-authtool --create-keyring /etc/ceph/<cluster_name>.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon '<capabilites>' --cap osd '<capabilites>' --cap mds '<capabilites>'
例
# ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow' creating /etc/ceph/ceph.client.admin.keyring
root
として、<cluster_name> .client.admin.keyring
キーを<cluster_name>.mon.keyring
に追加します。構文
# ceph-authtool /tmp/<cluster_name>.mon.keyring --import-keyring /etc/ceph/<cluster_name>.client.admin.keyring
例
# ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring importing contents of /etc/ceph/ceph.client.admin.keyring into /tmp/ceph.mon.keyring
Monitor マップを生成します。初期 Monitor のノード名、IP アドレス、および
fsid
を使用して指定し、/tmp/monmap
として保存します。構文
$ monmaptool --create --add <monitor_host_name> <ip-address> --fsid <uuid> /tmp/monmap
例
$ monmaptool --create --add node1 192.168.0.120 --fsid a7f64266-0894-4f1e-a635-d0aeaca0e993 /tmp/monmap monmaptool: monmap file /tmp/monmap monmaptool: set fsid to a7f64266-0894-4f1e-a635-d0aeaca0e993 monmaptool: writing epoch 0 to /tmp/monmap (1 monitors)
初期モニターノードで、
root
としてデフォルトのデータディレクトリーを作成します。構文
# mkdir /var/lib/ceph/mon/<cluster_name>-<monitor_host_name>
例
# mkdir /var/lib/ceph/mon/ceph-node1
root
として、最初の Monitor デーモンに Monitor マップとキーリングを設定します。構文
# ceph-mon [--cluster <cluster_name>] --mkfs -i <monitor_host_name> --monmap /tmp/monmap --keyring /tmp/<cluster_name>.mon.keyring
例
# ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring ceph-mon: set fsid to a7f64266-0894-4f1e-a635-d0aeaca0e993 ceph-mon: created monfs at /var/lib/ceph/mon/ceph-node1 for mon.node1
現在の Ceph 設定ファイルを表示します。
# cat /etc/ceph/ceph.conf [global] fsid = a7f64266-0894-4f1e-a635-d0aeaca0e993 mon_initial_members = node1 mon_host = 192.168.0.120
さまざまな Ceph 構成設定に関する詳細は、Red Hat Ceph Storage 3 の 『設定ガイド』 を参照してください。Ceph 設定ファイルの例では、最も一般的な構成設定の一部を示しています。
例
[global] fsid = <cluster-id> mon initial members = <monitor_host_name>[, <monitor_host_name>] mon host = <ip-address>[, <ip-address>] public network = <network>[, <network>] cluster network = <network>[, <network>] auth cluster required = cephx auth service required = cephx auth client required = cephx osd journal size = <n> osd pool default size = <n> # Write an object n times. osd pool default min size = <n> # Allow writing n copy in a degraded state. osd pool default pg num = <n> osd pool default pgp num = <n> osd crush chooseleaf type = <n>
root
として、done
ファイルを作成します。構文
# touch /var/lib/ceph/mon/<cluster_name>-<monitor_host_name>/done
例
# touch /var/lib/ceph/mon/ceph-node1/done
root
として、新しく作成されたディレクトリーおよびファイルで所有者とグループのアクセス権を更新します。構文
# chown -R <owner>:<group> <path_to_directory>
例
# chown -R ceph:ceph /var/lib/ceph/mon # chown -R ceph:ceph /var/log/ceph # chown -R ceph:ceph /var/run/ceph # chown ceph:ceph /etc/ceph/ceph.client.admin.keyring # chown ceph:ceph /etc/ceph/ceph.conf # chown ceph:ceph /etc/ceph/rbdmap
注記Ceph Monitor ノードが OpenStack Controller ノードと同じ場所にある場合、Glance および Cinder キーリングファイルは、それぞれ
glance
およびcinder
によって所有されている必要があります。以下に例を示します。# ls -l /etc/ceph/ ... -rw-------. 1 glance glance 64 <date> ceph.client.glance.keyring -rw-------. 1 cinder cinder 64 <date> ceph.client.cinder.keyring ...
カスタム名を持つストレージクラスターの場合、
root
として次の行を追加します。構文
$ sudo echo "CLUSTER=<custom_cluster_name>" >> /etc/default/ceph
例
$ sudo echo "CLUSTER=test123" >> /etc/default/ceph
root
として、初期モニターノードでceph-mon
プロセスを開始して有効にします。構文
$ sudo systemctl enable ceph-mon.target $ sudo systemctl enable ceph-mon@<monitor_host_name> $ sudo systemctl start ceph-mon@<monitor_host_name>
例
$ sudo systemctl enable ceph-mon.target $ sudo systemctl enable ceph-mon@node1 $ sudo systemctl start ceph-mon@node1
root
として、monitor デーモンが実行していることを確認します。構文
# sudo systemctl status ceph-mon@<monitor_host_name>
例
# sudo systemctl status ceph-mon@node1 ● ceph-mon@node1.service - Ceph cluster monitor daemon Loaded: loaded (/usr/lib/systemd/system/ceph-mon@.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2018-06-27 11:31:30 PDT; 5min ago Main PID: 1017 (ceph-mon) CGroup: /system.slice/system-ceph\x2dmon.slice/ceph-mon@node1.service └─1017 /usr/bin/ceph-mon -f --cluster ceph --id node1 --setuser ceph --setgroup ceph Jun 27 11:31:30 node1 systemd[1]: Started Ceph cluster monitor daemon. Jun 27 11:31:30 node1 systemd[1]: Starting Ceph cluster monitor daemon...
Red Hat Ceph Storage Monitor をストレージクラスターに追加するには、Red Hat Ceph Storage 3 の『管理ガイド』の「モニターの追加」セクションを参照してください。
B.2. Ceph Manager の手動インストール
通常、Ansible 自動化ユーティリティーは、Red Hat Ceph Storage クラスターをデプロイする際に Ceph Manager デーモン (ceph-mgr
) をインストールします。ただし、Ansible を使用して Red Hat Ceph Storage を管理しない場合は、Ceph Manager を手動でインストールすることができます。Red Hat は、Ceph Manager デーモンと Ceph Monitor デーモンを同じノードに配置することを推奨します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスター
-
root
またはsudo
アクセス -
rhel-7-server-rhceph-3-mon-els-rpms
リポジトリーが有効 -
ファイアウォールを使用している場合は、パブリックネットワーク上でポート
6800-7300
を開く
手順
ceph-mgr
がデプロイされるノードで、root
ユーザーまたは sudo
ユーティリティーで以下のコマンドを使用します。
ceph-mgr
パッケージをインストールします。[user@node1 ~]$ sudo apt-get install ceph-mgr
/var/lib/ceph/mgr/ceph-hostname/
ディレクトリーを作成します。mkdir /var/lib/ceph/mgr/ceph-hostname
hostname を、
ceph-mgr
デーモンがデプロイされるノードのホスト名に置き換えます。以下に例を示します。[user@node1 ~]$ sudo mkdir /var/lib/ceph/mgr/ceph-node1
新しく作成されたディレクトリーで、
ceph-mgr
デーモンの認証キーを作成します。[user@node1 ~]$ sudo ceph auth get-or-create mgr.`hostname -s` mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-node1/keyring
/var/lib/ceph/mgr/
ディレクトリーの所有者とグループをceph:ceph
に変更します。[user@node1 ~]$ sudo chown -R ceph:ceph /var/lib/ceph/mgr
ceph-mgr
ターゲットを有効にします。[user@node1 ~]$ sudo systemctl enable ceph-mgr.target
ceph-mgr
インスタンスを有効にして開始します。systemctl enable ceph-mgr@hostname systemctl start ceph-mgr@hostname
hostname を、
ceph-mgr
をデプロイするノードのホスト名に置き換えます。以下に例を示します。[user@node1 ~]$ sudo systemctl enable ceph-mgr@node1 [user@node1 ~]$ sudo systemctl start ceph-mgr@node1
ceph-mgr
デーモンが正常に起動していることを確認します。ceph -s
出力には、
services:
セクションの下に以下の行と同様の行が含まれます。mgr: node1(active)
-
追加の
ceph-mgr
デーモンをインストールして、現在のアクティブなデーモンに障害が発生した場合にアクティブになるスタンバイデーモンとして機能します。
OSD ブート制約
モニターを最初に実行したら、オブジェクトストレージデバイス (OSD) の追加を開始できます。オブジェクトのコピー数を処理するのに十分な OSD があるまで、クラスターは active + clean
状態に到達できません。
オブジェクトのデフォルトのコピー数は 3 です。少なくとも 3 つの OSD ノードが必要です。ただし、オブジェクトのコピーを 2 つだけ使用する場合には、OSD ノードを 2 つだけ追加してから、Ceph 設定ファイルの osd pool default size
および osd pool default min size
設定を更新します。
詳細は、Red Hat Ceph Storage 3 の『設定』の「OSD 設定参照」セクションを参照してください。
初期モニターのブートストラップ後に、クラスターにはデフォルトの CRUSH マップがあります。ただし、CRUSH マップには Ceph ノードにマッピングされた Ceph OSD デーモンがありません。
OSD をクラスターに追加し、デフォルトの CRUSH マップを更新するには、各 OSD ノードで以下のコマンドを実行します。
Red Hat Ceph Storage 3 OSD リポジトリーを有効にします。
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/OSD $(lsb_release -sc) main | tee /etc/apt/sources.list.d/OSD.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update
root
で Ceph OSD ノードにceph-osd
パッケージをインストールします。$ sudo apt-get install ceph-osd
Ceph 設定ファイルと管理キーリングファイルを初期 Monitor ノードから OSD ノードにコピーします。
構文
# scp <user_name>@<monitor_host_name>:<path_on_remote_system> <path_to_local_file>
例
# scp root@node1:/etc/ceph/ceph.conf /etc/ceph # scp root@node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph
OSD 用の Universally Unique Identifier (UUID) を生成します。
$ uuidgen b367c360-b364-4b1d-8fc6-09408a9cda7a
root
として、OSD インスタンスを作成します。構文
# ceph osd create <uuid> [<osd_id>]
例
# ceph osd create b367c360-b364-4b1d-8fc6-09408a9cda7a 0
注記このコマンドは、後続のステップに必要な OSD 番号識別子を出力します。
root
として、新規 OSD のデフォルトディレクトリーを作成します。構文
# mkdir /var/lib/ceph/osd/<cluster_name>-<osd_id>
例
# mkdir /var/lib/ceph/osd/ceph-0
root
として、OSD として使用するドライブを準備し、作成したディレクトリーにマウントします。Ceph データおよびジャーナル用にパーティションを作成します。ジャーナルとデータパーティションは同じディスクに配置できます。以下の例では、15 GB のディスクを使用しています。構文
# parted <path_to_disk> mklabel gpt # parted <path_to_disk> mkpart primary 1 10000 # mkfs -t <fstype> <path_to_partition> # mount -o noatime <path_to_partition> /var/lib/ceph/osd/<cluster_name>-<osd_id> # echo "<path_to_partition> /var/lib/ceph/osd/<cluster_name>-<osd_id> xfs defaults,noatime 1 2" >> /etc/fstab
例
# parted /dev/sdb mklabel gpt # parted /dev/sdb mkpart primary 1 10000 # parted /dev/sdb mkpart primary 10001 15000 # mkfs -t xfs /dev/sdb1 # mount -o noatime /dev/sdb1 /var/lib/ceph/osd/ceph-0 # echo "/dev/sdb1 /var/lib/ceph/osd/ceph-0 xfs defaults,noatime 1 2" >> /etc/fstab
root
として、OSD データディレクトリーを初期化します。構文
# ceph-osd -i <osd_id> --mkfs --mkkey --osd-uuid <uuid>
例
# ceph-osd -i 0 --mkfs --mkkey --osd-uuid b367c360-b364-4b1d-8fc6-09408a9cda7a ... auth: error reading file: /var/lib/ceph/osd/ceph-0/keyring: can't open /var/lib/ceph/osd/ceph-0/keyring: (2) No such file or directory ... created new key in keyring /var/lib/ceph/osd/ceph-0/keyring
注記--mkkey
オプションを指定してceph-osd
を実行する前に、ディレクトリーを空にする必要があります。カスタムのクラスタ名を使用する場合、ceph-osd
ユーティリティーには--cluster
オプションが必要です。root
として、OSD 認証キーを登録します。クラスター名がceph
と異なる場合は、代わりにクラスター名を挿入してください。構文
# ceph auth add osd.<osd_id> osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/<cluster_name>-<osd_id>/keyring
例
# ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring added key for osd.0
root
として、OSD ノードを CRUSH マップに追加します。構文
# ceph [--cluster <cluster_name>] osd crush add-bucket <host_name> host
例
# ceph osd crush add-bucket node2 host
root
で OSD ノードをdefault
の CRUSH ツリーに配置します。構文
# ceph [--cluster <cluster_name>] osd crush move <host_name> root=default
例
# ceph osd crush move node2 root=default
root
として、OSD ディスクを CRUSH マップに追加します。構文
# ceph [--cluster <cluster_name>] osd crush add osd.<osd_id> <weight> [<bucket_type>=<bucket-name> ...]
例
# ceph osd crush add osd.0 1.0 host=node2 add item id 0 name 'osd.0' weight 1 at location {host=node2} to crush map
注記CRUSH マップを逆コンパイルし、OSD をデバイス一覧に追加することもできます。OSD ノードをバケットとして追加してから、デバイスを OSD ノードの項目として追加し、OSD に重みを割り当て、CRUSH マップを再コンパイルし、CRUSH マップを設定します。詳細は、Red Hat Ceph Storage 3 の『ストレージ戦略ガイド』のセクション「CRUSH マップの編集」を参照してください。
root
として、新しく作成されたディレクトリーおよびファイルで所有者とグループのアクセス権を更新します。構文
# chown -R <owner>:<group> <path_to_directory>
例
# chown -R ceph:ceph /var/lib/ceph/osd # chown -R ceph:ceph /var/log/ceph # chown -R ceph:ceph /var/run/ceph # chown -R ceph:ceph /etc/ceph
カスタム名を持つストレージクラスターの場合は、
root
として、次の行を/etc/default/ceph
ファイルに追加します。構文
$ sudo echo "CLUSTER=<custom_cluster_name>" >> /etc/default/ceph
例
$ sudo echo "CLUSTER=test123" >> /etc/default/ceph
OSD ノードは Ceph Storage クラスターの設定にあります。ただし、OSD デーモンは
down
およびin
です。新しい OSD は、データの受信開始前にup
である必要があります。root
として、OSD プロセスを有効にして開始します。構文
$ sudo systemctl enable ceph-osd.target $ sudo systemctl enable ceph-osd@<osd_id> $ sudo systemctl start ceph-osd@<osd_id>
例
$ sudo systemctl enable ceph-osd.target $ sudo systemctl enable ceph-osd@0 $ sudo systemctl start ceph-osd@0
OSD デーモンを起動すると、これが
up
およびin
になります。
モニターと一部の OSD が稼働しています。以下のコマンドを実行して、配置グループピアを監視できます。
$ ceph -w
OSD ツリーを表示するには、以下のコマンドを実行します。
$ ceph osd tree
例
ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY -1 2 root default -2 2 host node2 0 1 osd.0 up 1 1 -3 1 host node3 1 1 osd.1 up 1 1
OSD をストレージクラスターに追加してストレージ容量を拡張するには、Red Hat Ceph Storage 3 『管理ガイド』の「OSD の追加」セクションを参照してください。
付録C Ceph コマンドラインインターフェースのインストール
Ceph コマンドラインインターフェース (CLI) により、管理者は Ceph 管理コマンドを実行できます。CLI は ceph-common
パッケージにより提供され、以下のユーティリティーが含まれます。
-
ceph
-
ceph-authtool
-
ceph-dencoder
-
rados
前提条件
-
稼働中の Ceph ストレージクラスター (
active + clean
の状態が望ましい)。
手順
クライアントノードで、Red Hat Ceph Storage 3 Tools リポジトリーを有効にします。
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update
クライアントノードで、
ceph-common
パッケージをインストールします。$ sudo apt-get install ceph-common
最初の監視ノードから、Ceph 設定ファイル (ここでは
ceph.conf
) と管理キーリングをクライアントノードにコピーします。構文
# scp /etc/ceph/<cluster_name>.conf <user_name>@<client_host_name>:/etc/ceph/ # scp /etc/ceph/<cluster_name>.client.admin.keyring <user_name>@<client_host_name:/etc/ceph/
例
# scp /etc/ceph/ceph.conf root@node1:/etc/ceph/ # scp /etc/ceph/ceph.client.admin.keyring root@node1:/etc/ceph/
<client_host_name>
を、クライアントノードのホスト名に置き換えてください。
付録D Ceph ブロックデバイスの手動インストール
以下の手順では、シンプロビジョニングされ、サイズが変更可能な Ceph ブロックデバイスをインストールおよびマウントする方法を説明します。
Ceph ブロックデバイスは、Ceph Monitor ノードと OSD ノードとは別のノードにデプロイする必要があります。同じノードでカーネルクライアントとカーネルサーバーデーモンを実行すると、カーネルのデッドロックが発生する可能性があります。
前提条件
- 付録C Ceph コマンドラインインターフェースのインストール セクションに記載されているタスクを実施するしておく。
- QEMU を使用する仮想マシンのバックエンドとして Ceph ブロックデバイスを使用する場合は、デフォルトのファイル記述子を増やします。詳細は、ナレッジベースの記事「Ceph - VM hangs when transferring large amounts of data to RBD disk」を参照してください。
手順
OSD ノード (
osd 'allow rwx'
) 上のファイルへの完全なパーミッションを持つclient.rbd
という名前の Ceph Block Device ユーザーを作成し、結果をキーリングファイルに出力します。ceph auth get-or-create client.rbd mon 'profile rbd' osd 'profile rbd pool=<pool_name>' \ -o /etc/ceph/rbd.keyring
<pool_name>
を、client.rbd
によるアクセスを許可するプールの名前 (例:rbd
) に置き換えます。$ sudo ceph auth get-or-create \ client.rbd mon 'allow r' osd 'allow rwx pool=rbd' \ -o /etc/ceph/rbd.keyring
ユーザーの作成に関する詳細は、Red Hat Ceph Storage 3 『管理ガイド』の「ユーザー管理」セクションを参照してください。
ブロックデバイスイメージを作成します。
rbd create <image_name> --size <image_size> --pool <pool_name> \ --name client.rbd --keyring /etc/ceph/rbd.keyring
<image_name>
、<image_size>
、および<pool_name>
を指定します。以下に例を示します。$ rbd create image1 --size 4096 --pool rbd \ --name client.rbd --keyring /etc/ceph/rbd.keyring
警告デフォルトの Ceph 設定には、以下の Ceph ブロックデバイス機能が含まれます。
-
layering
-
exclusive-lock
-
object-map
-
deep-flatten
-
fast-diff
カーネル RBD (
krbd
) クライアントを使用する場合、Red Hat Enterprise Linux 7.3 に含まれている現在のカーネルバージョンはobject-map
、deep-flatten
、およびfast-diff
をサポートしていないため、ブロックデバイスイメージをマップすることはできません。この問題を回避するには、サポートされていない機能を無効にします。これを行うには、以下のいずれかのオプションを使用します。
サポートされていない機能を動的に無効にします。
rbd feature disable <image_name> <feature_name>
以下に例を示します。
# rbd feature disable image1 object-map deep-flatten fast-diff
-
rbd create
コマンドで--image-feature layering
オプションを使用して、新たに作成されたブロックデバイスイメージで階層化
のみを有効にします。 Ceph 設定ファイルで機能のデフォルトを無効にします。
rbd_default_features = 1
これは既知の問題です。詳細は、Red Hat Ceph Storage 3 の『リリースノート』の「既知の問題」の章を参照してください。
これらの機能はすべて、ユーザー空間の RBD クライアントを使用してブロックデバイスイメージにアクセスするユーザーに機能します。
-
新規に作成されたイメージをブロックデバイスにマッピングします。
rbd map <image_name> --pool <pool_name>\ --name client.rbd --keyring /etc/ceph/rbd.keyring
以下に例を示します。
$ sudo rbd map image1 --pool rbd --name client.rbd \ --keyring /etc/ceph/rbd.keyring
ファイルシステムを作成してブロックデバイスを使用します。
mkfs.ext4 -m5 /dev/rbd/<pool_name>/<image_name>
以下のように、プール名とイメージ名を指定します。
$ sudo mkfs.ext4 -m5 /dev/rbd/rbd/image1
この作業には少し時間がかかります。
新しく作成されたファイルシステムをマウントします。
mkdir <mount_directory> mount /dev/rbd/<pool_name>/<image_name> <mount_directory>
以下に例を示します。
$ sudo mkdir /mnt/ceph-block-device $ sudo mount /dev/rbd/rbd/image1 /mnt/ceph-block-device
詳細は、Red Hat Ceph Storage 3 のブロックデバイスガイドを参照してください。
付録E Ceph Object Gateway の手動インストール
Ceph オブジェクトゲートウェイは RADOS ゲートウェイとしても知られている librados
API 上に構築されたオブジェクトストレージインターフェースで、RESTful ゲートウェイを Ceph ストレージクラスターに提供します。
前提条件
-
稼働中の Ceph ストレージクラスター (
active + clean
の状態が望ましい)。 - 2章Red Hat Ceph Storage のインストール要件 に記載されているタスクを実行します。
手順
Red Hat Ceph Storage 3 Tools リポジトリーを有効にします。
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update
Object Gateway ノードで、
radosgw
パッケージをインストールします。$ sudo apt-get install radosgw
初期モニターノードで、以下の手順を実施します。
以下のように Ceph 設定ファイルを更新します。
[client.rgw.<obj_gw_hostname>] host = <obj_gw_hostname> rgw frontends = "civetweb port=80" rgw dns name = <obj_gw_hostname>.example.com
ここで、
<obj_gw_hostname>
はゲートウェイノードの短縮ホスト名です。短縮ホスト名を表示するには、hostname -s
コマンドを使用します。更新された設定ファイルを新しい Object Gateway ノードおよび Ceph Storage クラスターのその他のノードにコピーします。
構文
$ sudo scp /etc/ceph/<cluster_name>.conf <user_name>@<target_host_name>:/etc/ceph
例
$ sudo scp /etc/ceph/ceph.conf root@node1:/etc/ceph/
<cluster_name>.client.admin.keyring
ファイルを新しい Object Gateway ノードにコピーします。構文
$ sudo scp /etc/ceph/<cluster_name>.client.admin.keyring <user_name>@<target_host_name>:/etc/ceph/
例
$ sudo scp /etc/ceph/ceph.client.admin.keyring root@node1:/etc/ceph/
Object Gateway ノードで、データディレクトリーを作成します。
構文
$ sudo mkdir -p /var/lib/ceph/radosgw/<cluster_name>-rgw.`hostname -s`
例
$ sudo mkdir -p /var/lib/ceph/radosgw/ceph-rgw.`hostname -s`
Object Gateway ノードで、ユーザーとキーリングを追加して、オブジェクトゲートウェイをブートストラップします。
構文
$ sudo ceph auth get-or-create client.rgw.`hostname -s` osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/<cluster_name>-rgw.`hostname -s`/keyring
例
$ sudo ceph auth get-or-create client.rgw.`hostname -s` osd 'allow rwx' mon 'allow rw' -o /var/lib/ceph/radosgw/ceph-rgw.`hostname -s`/keyring
重要ゲートウェイキーの機能を提供する場合は、読み取り機能を指定する必要があります。ただし、Monitor 書き込み機能を提供することはオプションです。指定した場合、Ceph Object Gateway はプールを自動的に作成できます。
このような場合は、プール内の配置グループの数に適切な数を指定してください。それ以外の場合、ゲートウェイはデフォルトの番号を使用しますが、これはニーズに適していない可能性があります。詳細は、「Ceph Placement Groups (PGs) per Pool Calculator」を参照してください。
Object Gateway ノードで、
done
ファイルを作成します。構文
$ sudo touch /var/lib/ceph/radosgw/<cluster_name>-rgw.`hostname -s`/done
例
$ sudo touch /var/lib/ceph/radosgw/ceph-rgw.`hostname -s`/done
Object Gateway ノードで、所有者およびグループのパーミッションを変更します。
$ sudo chown -R ceph:ceph /var/lib/ceph/radosgw $ sudo chown -R ceph:ceph /var/log/ceph $ sudo chown -R ceph:ceph /var/run/ceph $ sudo chown -R ceph:ceph /etc/ceph
カスタム名を持つストレージクラスターの場合、
root
として次の行を追加します。構文
$ sudo echo "CLUSTER=<custom_cluster_name>" >> /etc/default/ceph
例
$ sudo echo "CLUSTER=test123" >> /etc/default/ceph
Object Gateway ノードで、TCP ポート 80 を開きます。
$ sudo iptables -I INPUT 1 -i <network_interface> -p tcp -s <ip_address>/<netmask> --dport 80 -j ACCEPT
Object Gateway ノードで、
ceph-radosgw
プロセスを開始して有効にします。構文
$ sudo systemctl enable ceph-radosgw.target $ sudo systemctl enable ceph-radosgw@rgw.<rgw_hostname> $ sudo systemctl start ceph-radosgw@rgw.<rgw_hostname>
例
$ sudo systemctl enable ceph-radosgw.target $ sudo systemctl enable ceph-radosgw@rgw.node1 $ sudo systemctl start ceph-radosgw@rgw.node1
インストールが完了すると、書き込み機能が Monitor に設定されると、Ceph Object Gateway はプールを自動的に作成します。プールを手動で作成する方法は、ストレージ戦略ガイドのプールの章を参照してください。
詳細
- Red Hat Ceph Storage 3 Ubuntu 用のオブジェクトゲートウェイガイド
付録F Ceph のデフォルト設定の上書き
Ansible 設定ファイルに特に指定しない限り、Ceph はデフォルト設定を使用します。
Ansible は Ceph 設定ファイルを管理するため、/usr/share/ceph-ansible/group_vars/all.yml
ファイルを編集して Ceph の設定を変更します。ceph_conf_overrides
の設定を使用して、デフォルトの Ceph 設定を上書きします。
Ansible は、Ceph 設定ファイル ([global]
、[mon]
、[osd]
、[mds]
、[rgw]
など) と同じセクションをサポートします。特定の Ceph Object Gateway インスタンスなどの特定のインスタンスをオーバーライドすることもできます。以下に例を示します。
################### # CONFIG OVERRIDE # ################### ceph_conf_overrides: client.rgw.rgw1: log_file: /var/log/ceph/ceph-rgw-rgw1.log
Ansible には、Ceph 設定ファイルの特定セクションを参照する際に中かっこが含まれません。セクション名および設定名はコロンで終了します。
CONFIG OVERRIDE セクションの cluster_network
パラメーターを使用してクラスターネットワークを設定しないでください。競合する 2 つのクラスターネットワークが Ceph 設定ファイルに設定されている可能性があるためです。
クラスターネットワークを設定するには、CEPH CONFIGURATION セクションで cluster_network
パラメーターを使用します。詳細は、「Red Hat Ceph Storage クラスターのインストール」 を参照してください。
付録G Red Hat Ceph Storage 2 から 3 への手動アップグレード
Ceph Storage Cluster は、クラスターの実行中にローリング方式でバージョン 2 からバージョン 3 にアップグレードできます。クラスター内の各ノードを順番にアップグレードします。前のノードが完了した後でのみ、次のノードに進みます。
Red Hat では、以下の順序で Ceph コンポーネントをアップグレードすることをお勧めします。
- ノードの監視
- OSD ノード
- Ceph Object Gateway ノード
- その他すべての Ceph クライアントノード
Red Hat Ceph Storage 3 では、新しいデーモン Ceph Manager (ceph-mgr
) が導入されています。モニターノードをアップグレードした後、ceph-mgr
をインストールします。
Red Hat Ceph Storage 2 を 3 にアップグレードするには、2 つの方法があります。
- Red Hat のコンテンツ配信ネットワーク (CDN) の使用
- Red Hat が提供する ISO イメージファイルを使用する
ストレージクラスターをアップグレードした後、レガシーチューナブルを使用して CRUSH マップに関するヘルス警告を出すことができます。詳細は、Red Hat Ceph Storage3 のストレージ戦略ガイドの CRUSHTunables セクションを参照してください。
例
$ ceph -s cluster 848135d7-cdb9-4084-8df2-fb5e41ae60bd health HEALTH_WARN crush map has legacy tunables (require bobtail, min is firefly) monmap e1: 1 mons at {ceph1=192.168.0.121:6789/0} election epoch 2, quorum 0 ceph1 osdmap e83: 2 osds: 2 up, 2 in pgmap v1864: 64 pgs, 1 pools, 38192 kB data, 17 objects 10376 MB used, 10083 MB / 20460 MB avail 64 active+clean
Red Hat は、すべての Ceph クライアントが Ceph ストレージクラスターと同じバージョンを実行することを推奨しています。
前提条件
アップグレードするクラスターに
exclusive-lock
機能を使用する Ceph Block Device イメージが含まれている場合には、全 Ceph Block Device ユーザーにクライアントをブラックリストに登録するパーミッションがあるようにしてください。ceph auth caps client.<ID> mon 'allow r, allow command "osd blacklist"' osd '<existing-OSD-user-capabilities>'
モニタノードのアップグレード
この項では、Ceph Monitorノードを後のバージョンにアップグレードする手順を説明します。モニターの数は奇数でなければなりません。1 つの Monitor をアップグレードしている間、ストレージクラスターにはクォーラムがあります。
手順
ストレージクラスタの各 Monitor ノードで以下の手順を行います。一度に 1 つの Monitor ノードのみをアップグレードします。
ソフトウェアリポジトリーを使用して Red Hat Ceph Storage 2 をインストールした場合は、リポジトリーを無効にします。
以下の行が
/etc/apt/sources.list
または/etc/apt/sources.list.d/ceph.list
ファイルにある場合は、行の先頭にハッシュ記号(#)
を追加して、Red Hat Ceph Storage 2 のオンラインリポジトリーをコメントアウトします。deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools
以下のファイルを
/etc/apt/sources.list.d/
ディレクトリーから削除してください。Installer.list Tools.list
Red Hat Ceph Storage 3 Monitor リポジトリーを有効にします。
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/MON $(lsb_release -sc) main | tee /etc/apt/sources.list.d/MON.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update
root
で Monitor プロセスを停止します。構文
$ sudo stop ceph-mon id=<monitor_host_name>
例
$ sudo stop ceph-mon id=node1
root
で、ceph-mon
パッケージをアップデートします。$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo apt-get install ceph-mon
Red Hat の最新バージョンがインストールされていることを確認します。
$ dpkg -s ceph-base | grep Version Version: 10.2.2-19redhat1trusty
root
として、所有者とグループの権限を更新します。構文
# chown -R <owner>:<group> <path_to_directory>
例
# chown -R ceph:ceph /var/lib/ceph/mon # chown -R ceph:ceph /var/log/ceph # chown -R ceph:ceph /var/run/ceph # chown ceph:ceph /etc/ceph/ceph.client.admin.keyring # chown ceph:ceph /etc/ceph/ceph.conf # chown ceph:ceph /etc/ceph/rbdmap
注記Ceph Monitor ノードが OpenStack Controller ノードと同じ場所にある場合、Glance および Cinder キーリングファイルは、それぞれ
glance
およびcinder
によって所有されている必要があります。以下に例を示します。# ls -l /etc/ceph/ ... -rw-------. 1 glance glance 64 <date> ceph.client.glance.keyring -rw-------. 1 cinder cinder 64 <date> ceph.client.cinder.keyring ...
不要になったパッケージを削除します。
$ sudo apt-get purge ceph ceph-osd
root
として、カーネルからデバイスイベントを再生します。# udevadm trigger
root
として、ceph-mon
プロセスを有効にします。$ sudo systemctl enable ceph-mon.target $ sudo systemctl enable ceph-mon@<monitor_host_name>
root
で Monitor ノードを再起動します。# shutdown -r now
Monitor ノードが起動したら、次の Monitor ノードに移動する前に、Ceph ストレージクラスターの状態を確認します。
# ceph -s
G.1. Ceph Manager の手動インストール
通常、Ansible 自動化ユーティリティーは、Red Hat Ceph Storage クラスターをデプロイする際に Ceph Manager デーモン (ceph-mgr
) をインストールします。ただし、Ansible を使用して Red Hat Ceph Storage を管理しない場合は、Ceph Manager を手動でインストールすることができます。Red Hat は、Ceph Manager デーモンと Ceph Monitor デーモンを同じノードに配置することを推奨します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスター
-
root
またはsudo
アクセス -
rhel-7-server-rhceph-3-mon-els-rpms
リポジトリーが有効 -
ファイアウォールを使用している場合は、パブリックネットワーク上でポート
6800-7300
を開く
手順
ceph-mgr
がデプロイされるノードで、root
ユーザーまたは sudo
ユーティリティーで以下のコマンドを使用します。
ceph-mgr
パッケージをインストールします。[user@node1 ~]$ sudo apt-get install ceph-mgr
/var/lib/ceph/mgr/ceph-hostname/
ディレクトリーを作成します。mkdir /var/lib/ceph/mgr/ceph-hostname
hostname を、
ceph-mgr
デーモンがデプロイされるノードのホスト名に置き換えます。以下に例を示します。[user@node1 ~]$ sudo mkdir /var/lib/ceph/mgr/ceph-node1
新しく作成されたディレクトリーで、
ceph-mgr
デーモンの認証キーを作成します。[user@node1 ~]$ sudo ceph auth get-or-create mgr.`hostname -s` mon 'allow profile mgr' osd 'allow *' mds 'allow *' -o /var/lib/ceph/mgr/ceph-node1/keyring
/var/lib/ceph/mgr/
ディレクトリーの所有者とグループをceph:ceph
に変更します。[user@node1 ~]$ sudo chown -R ceph:ceph /var/lib/ceph/mgr
ceph-mgr
ターゲットを有効にします。[user@node1 ~]$ sudo systemctl enable ceph-mgr.target
ceph-mgr
インスタンスを有効にして開始します。systemctl enable ceph-mgr@hostname systemctl start ceph-mgr@hostname
hostname を、
ceph-mgr
をデプロイするノードのホスト名に置き換えます。以下に例を示します。[user@node1 ~]$ sudo systemctl enable ceph-mgr@node1 [user@node1 ~]$ sudo systemctl start ceph-mgr@node1
ceph-mgr
デーモンが正常に起動していることを確認します。ceph -s
出力には、
services:
セクションの下に以下の行と同様の行が含まれます。mgr: node1(active)
-
追加の
ceph-mgr
デーモンをインストールして、現在のアクティブなデーモンに障害が発生した場合にアクティブになるスタンバイデーモンとして機能します。
OSD ノードのアップグレード
この項では、Ceph OSD ノードを後のバージョンにアップグレードする手順を説明します。
前提条件
OSD ノードをアップグレードすると、OSD が停止または再起動する可能性があるため、一部の配置グループがデグレードされます。Ceph がリカバリープロセスを開始しないようにするには、Monitor ノードで、noout
および norebalance
OSD フラグを設定します。
[root@monitor ~]# ceph osd set noout [root@monitor ~]# ceph osd set norebalance
手順
ストレージクラスタの各 OSD ノードで以下の手順を行います。一度に 1 つの OSD ノードのみをアップグレードします。Red Hat Ceph Storage 2.3 に対して ISO ベースのインストールが実行された場合は、この最初のステップをスキップしてください。
root
で、Red Hat Ceph Storage 2 のリポジトリーを無効にします。以下の行が
/etc/apt/sources.list
または/etc/apt/sources.list.d/ceph.list
ファイルにある場合は、行の先頭にハッシュ記号(#)
を追加して、Red Hat Ceph Storage 2 のオンラインリポジトリーをコメントアウトします。deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools
以下のファイルを /etc/apt/sources.list.d/ ディレクトリーから削除してください。
Installer.list Tools.list
注記APT ソースファイル内の Red Hat Ceph Storage2 への参照をすべて削除します。Red Hat Ceph Storage 2 に対して ISO ベースのインストールが実行された場合は、この最初のステップをスキップしてください。
Red Hat Ceph Storage 3 OSD リポジトリーを有効にします。
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/OSD $(lsb_release -sc) main | tee /etc/apt/sources.list.d/OSD.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update
root
として、実行中の OSD プロセスをすべて停止します。構文
$ sudo stop ceph-osd id=<osd_id>
例
$ sudo stop ceph-osd id=0
root
として、ceph-osd
パッケージを更新します。$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo apt-get install ceph-osd
Red Hat の最新バージョンがインストールされていることを確認します。
$ dpkg -s ceph-base | grep Version Version: 10.2.2-19redhat1trusty
root
として、新しく作成されたディレクトリーおよびファイルで所有者とグループのアクセス権を更新します。構文
# chown -R <owner>:<group> <path_to_directory>
例
# chown -R ceph:ceph /var/lib/ceph/osd # chown -R ceph:ceph /var/log/ceph # chown -R ceph:ceph /var/run/ceph # chown -R ceph:ceph /etc/ceph
注記次の
find
コマンドを使用すると、多数のディスクがある Ceph ストレージクラスターでchown
コマンドを並行して使用することにより、所有権を変更するプロセスが速くなる可能性があります。# find /var/lib/ceph/osd -maxdepth 1 -mindepth 1 -print | xargs -P12 -n1 chown -R ceph:ceph
不要になったパッケージを削除します。
$ sudo apt-get purge ceph ceph-mon
注記ceph
パッケージがメタパッケージになりました。Monitor ノードではceph-mon
パッケージのみが必要であり、OSD ノードではceph-osd
パッケージのみが必要であり、RADOSGateway ノードではceph-radosgw
パッケージのみが必要です。root
として、カーネルからデバイスイベントを再生します。# udevadm trigger
root
として、ceph-osd
プロセスを有効にします。$ sudo systemctl enable ceph-osd.target $ sudo systemctl enable ceph-osd@<osd_id>
root
として、OSD ノードを再起動します。# shutdown -r now
次の OSD ノードに移動します。
注記noout
フラグとnorebalance
フラグが設定されている場合、ストレージクラスターはHEALTH_WARN
状態になります。$ ceph health HEALTH_WARN noout,norebalance flag(s) set
Ceph Storage Cluster のアップグレードが完了したら、以前に設定した OSD フラグの設定を解除し、ストレージクラスターのステータスを確認します。
モニターノードで、すべての OSD ノードがアップグレードされた後、noout
フラグとnorebalance
フラグの設定を解除します。
# ceph osd unset noout # ceph osd unset norebalance
さらに、ceph osd require-osd-release <release>
コマンドを実行します。このコマンドにより、Red Hat Ceph Storage 2.3 を搭載した OSD をストレージクラスターに追加できなくなります。このコマンドを実行しない場合、ストレージステータスは HEALTH_WARN
になります。
# ceph osd require-osd-release luminous
関連情報
- ストレージクラスターに新しい OSD を追加してストレージ容量を拡張するには、Red Hat Ceph Storage3 の 管理ガイド の OSD の追加 セクションを参照してください。
Ceph Object Gateway ノードのアップグレード
このセクションでは、Ceph Object Gateway ノードを新しいバージョンにアップグレードする手順について説明します。
Red Hat は、これらのアップグレード手順を続行する前に、システムをバックアップすることをお勧めします。
前提条件
- Red Hat は、HAProxy などのロードバランサーの背後に Ceph Object Gateway を配置することをお勧めします。ロードバランサーを使用する場合は、リクエストが処理されなくなったら、ロードバランサーから Ceph Object Gateway を削除します。
rgw_region_root_pool
パラメーターで指定されたリージョンプールのカスタム名を使用する場合は、Ceph 構成ファイルの[global]
セクションにrgw_zonegroup_root_pool
パラメーターを追加します。rgw_zonegroup_root_pool
の値をrgw_region_root_pool
と同じになるように設定します。次に例を示します。[global] rgw_zonegroup_root_pool = .us.rgw.root
手順
ストレージクラスター内の各 Ceph Object Gateway ノードで次の手順を実行します。一度に 1 つのノードのみをアップグレードします。
オンラインリポジトリーを使用して Red Hat Ceph Storage をインストールした場合は、2 つのリポジトリーを無効にします。
/etc/apt/sources.list
ファイルと/etc/apt/sources.list.d/ceph.list
ファイルの次の行をコメントアウトします。# deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer # deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools
/etc/apt/sources.list.d/
ディレクトリーから次のファイルを削除します。# rm /etc/apt/sources.list.d/Installer.list # rm /etc/apt/sources.list.d/Tools.list
Red Hat Ceph Storage 3 Tools リポジトリーを有効にします。
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update
Ceph Object Gateway プロセス (
ceph-radosgw
) を停止します。$ sudo stop radosgw id=rgw.<hostname>
<hostname>
を Ceph Object Gateway ホストの名前 (gateway-node
など) に置き換えます。$ sudo stop radosgw id=rgw.node
ceph-radosgw
パッケージを更新します。$ sudo apt-get update $ sudo apt-get dist-upgrade $ sudo apt-get install radosgw
新しく作成された
/var/lib/ceph/radosgw/
および/var/log/ceph/
ディレクトリーとそれらのコンテンツに対する所有者とグループの権限をceph
に変更します。# chown -R ceph:ceph /var/lib/ceph/radosgw # chown -R ceph:ceph /var/log/ceph
不要になったパッケージを削除します。
$ sudo apt-get purge ceph
注記ceph
パッケージがメタパッケージになりました。Monitor、OSD、Ceph Object Gatewayの各ノードでは、ceph-mon
、ceph-osd
、ceph-radosgw
パッケージのみが必要です。ceph-radosgw
プロセスを有効にします。$ sudo systemctl enable ceph-radosgw.target $ sudo systemctl enable ceph-radosgw@rgw.<hostname>
<hostname>
を Ceph Object Gateway ホストの名前 (gateway-node
など) に置き換えます。$ sudo systemctl enable ceph-radosgw.target $ sudo systemctl enable ceph-radosgw@rgw.gateway-node
Ceph Object Gateway ノードを再起動します。
# shutdown -r now
- ロードバランサーを使用する場合は、Ceph Object Gateway ノードをロードバランサーに追加し直します。
関連項目
Ceph クライアントノードのアップグレード
Ceph のクライアントは
- Ceph ブロックデバイス
- OpenStack Nova コンピュートノード
- QEMU/KVM ハイパーバイザー
- Ceph クライアント側ライブラリーを使用するカスタムアプリケーション
Red Hat は、すべての Ceph クライアントが Ceph ストレージクラスターと同じバージョンを実行することを推奨しています。
前提条件
- パッケージのアップグレード中に Ceph クライアントノードに対するすべての I/O 要求を停止して、予期しないエラーが発生しないようにします
手順
ソフトウェアリポジトリーを使用して Red Hat Ceph Storage 2 クライアントをインストールした場合は、リポジトリーを無効にします。
以下の行が
/etc/apt/sources.list
または/etc/apt/sources.list.d/ceph.list
ファイルにある場合は、行の先頭にハッシュ記号(#)
を追加して、Red Hat Ceph Storage 2 のオンラインリポジトリーをコメントアウトします。deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Installer deb https://<customer_name>:<customer_password>@rhcs.download.redhat.com/ubuntu/2-updates/Tools
以下のファイルを /etc/apt/sources.list.d/ ディレクトリーから削除してください。
Installer.list Tools.list
注記APT ソースファイル内の Red Hat Ceph Storage2 への参照をすべて削除します。
クライアントノードで、Red Hat Ceph Storage Tools 3 リポジトリーを有効にします。
$ sudo bash -c 'umask 0077; echo deb https://customername:customerpasswd@rhcs.download.redhat.com/3-updates/Tools $(lsb_release -sc) main | tee /etc/apt/sources.list.d/Tools.list' $ sudo bash -c 'wget -O - https://www.redhat.com/security/fd431d51.txt | apt-key add -' $ sudo apt-get update
クライアントノードで、
ceph-common
パッケージを更新します。$ sudo apt-get install ceph-common
ceph-common
パッケージをアップグレードした後、Ceph クライアントサイドライブラリーに依存するアプリケーションを再起動します。
QEMU/KVM インスタンスを実行している OpenStack Nova コンピュートノードをアップグレードする場合や、専用の QEMU/KVM クライアントを使用する場合には、インスタンスを再起動しても機能しないため、QEMU/KVM インスタンスを停止して起動してください。
付録H バージョン 2 と 3 の間の Ansible 変数の変更
Red Hat Ceph Storage 3 では、/usr/share/ceph-ansible/group_vars/
ディレクトリーにある構成ファイルの特定の変数が変更されたか、削除されました。以下の表は、すべての変更点を示しています。バージョン3へのアップグレード後は、all.yml.sample
と osds.yml.sample
を再度コピーし、これらの変更を反映させてください。詳細は、Red Hat Ceph ストレージクラスターのアップグレード を参照してください。
旧オプション | 新しいオプション | ファイル |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
付録I 既存の Ceph クラスターの Ansible へのインポート
Ansible が Ansible なしでデプロイされたクラスターを使用するように設定することができます。たとえば、Red Hat Ceph Storage 1.3 クラスターを手動でバージョン 2 にアップグレードした場合は、以下の手順により Ansible を使用するように設定してください。
- バージョン 1.3 からバージョン 2 に手動でアップグレードした後、管理ノードに Ansible をインストールおよび設定します。
-
Ansible 管理ノードに、クラスター内の全 Ceph ノードにパスワードレスの
ssh
アクセスがあることを確認します。詳しくは 「Ansible でパスワードなしの SSH を有効にする」 をご覧ください。 root
で、/etc/ansible/
ディレクトリーに Ansible のgroup_vars
ディレクトリーへのシンボリックリンクを作成します。# ln -s /usr/share/ceph-ansible/group_vars /etc/ansible/group_vars
root
でall.yml.sample
ファイルからall.yml
ファイルを作成し、編集用に開きます。# cd /etc/ansible/group_vars # cp all.yml.sample all.yml # vim all.yml
-
group_vars/all.yml
でgenerate_fsid
設定をfalse
に設定します。 -
ceph fsid
を実行して、現在のクラスターfsid
を取得します。 -
取得した
fsid
をgroup_vars/all.yml
に設定します。 -
Ceph ホストが含まれるように、
/etc/ansible/hosts
の Ansible インベントリーを変更します。[mons]
セクションの下にモニター、[osds]
セクションの下に OSD、および[rgws]
セクションのゲートウェイを追加して、それらのロールをAnsible に特定します。 ceph_conf_overrides
セクションが、all.yml
ファイルの[global]
セクション、[osd]
セクション、[mon]
セクション、および[client]
セクションに使用される元のceph.conf
オプションで更新されていることを確認します。osd ジャーナル
、public_network
、cluster_network
などのオプションはすでにall.yml
に含まれているため、ceph_conf_overrides
には追加しないでください。all.yml
に含まれず、元のceph.conf
にあるオプションのみをceph_conf_overrides
に追加する必要があります。/usr/share/ceph-ansible/
ディレクトリーから Playbook を実行します。# cd /usr/share/ceph-ansible/ # cp infrastructure-playbooks/take-over-existing-cluster.yml . $ ansible-playbook take-over-existing-cluster.yml -u <username>
付録J Ansible を使用して Ceph クラスターをパージする
Ansible を使用して Ceph クラスターをデプロイし、クラスターをパージする場合は、infrastructure-playbooks
ディレクトリーにある purge-cluster.yml Ansible
Playbook を使用します。
Ceph クラスターをパージすると、クラスターの OSD に保存されているデータが失われます。
Ceph クラスターをパージする前に...
osds.yml
ファイルの osd_auto_discovery
オプションを確認してください。このオプションが true
に設定されていると、パージは失敗します。この不具合を防ぐために、パージを実行する前に以下の手順を行ってください。
-
osds.yml
ファイルで OSD デバイスを宣言します。詳しくは 「Red Hat Ceph Storage クラスターのインストール」 をご覧ください。 -
osds.yml
ファイルのosd_auto_discovery
オプションをコメントアウトします。
Ceph クラスターをパージするには...
root
として/usr/share/ceph-ansible/
ディレクトリーに移動します。# cd /usr/share/ceph-ansible
root
で、purge-cluster.yml
Ansible playbook をカレントディレクトリにコピーします。# cp infrastructure-playbooks/purge-cluster.yml .
purge-cluster.yml
Ansible playbook を実行します:$ ansible-playbook purge-cluster.yml