第1章 コンテナーへの Red Hat Ceph Storage のデプロイ


この章では、Ansible アプリケーションと ceph-ansible Playbook を使用して Red Hat Ceph Storage 3 をコンテナーにデプロイする方法について説明します。

1.1. 前提条件

1.1.1. Red Hat Ceph Storage ノードの CDN への登録とサブスクリプションのアタッチ

各 Red Hat Ceph Storage (RHCS) ノードをコンテンツ配信ネットワーク (CDN) に登録し、ノードがソフトウェアリポジトリーにアクセスできるように適切なサブスクリプションを割り当てます。各 RHCS ノードは、Red Hat Enterprise Linux 7 のベースコンテンツとエクストラリポジトリのコンテンツに完全にアクセスできる必要があります。

前提条件
  • 有効な Red Hat サブスクリプション
  • RHCS のノードは、インターネットに接続できる必要があります。
  • インストール中にインターネットにアクセスできない RHCS ノードの場合、最初にインターネットにアクセスできるシステムで次の手順を実行する必要があります。

    1. ローカル Docker レジストリーを起動します。

      # docker run -d -p 5000:5000 --restart=always --name registry registry:2
      Copy to Clipboard Toggle word wrap
    2. Red Hat Customer Portal から Red Hat Ceph Storage 3.x イメージをプルします。

      # docker pull registry.access.redhat.com/rhceph/rhceph-3-rhel7
      Copy to Clipboard Toggle word wrap
    3. イメージにタグを付けます。

       # docker tag registry.access.redhat.com/rhceph/rhceph-3-rhel7 <local-host-fqdn>:5000/cephimageinlocalreg
      Copy to Clipboard Toggle word wrap

      <local-host-fqdn> をローカルホストの FQDN に置き換えます。

    4. イメージを、起動したローカルの Docker レジストリーにプッシュします。

      # docker push <local-host-fqdn>:5000/cephimageinlocalreg
      Copy to Clipboard Toggle word wrap

      <local-host-fqdn> をローカルホストの FQDN に置き換えます。

手順

ストレージクラスター内のすべてのノードで root ユーザーとして以下の手順を実行します。

  1. ノードを登録する。プロンプトが表示されたら、Red Hat カスタマーポータルの認証情報を入力します。

    # subscription-manager register
    Copy to Clipboard Toggle word wrap
  2. CDN から最新のサブスクリプションデータをプルします。

    # subscription-manager refresh
    Copy to Clipboard Toggle word wrap
  3. Red Hat Ceph Storage で利用可能なサブスクリプションの一覧を表示します。

    # subscription-manager list --available --all --matches="*Ceph*"
    Copy to Clipboard Toggle word wrap

    適切なサブスクリプションを特定し、プール ID を取得します。

  4. サブスクリプションを割り当てます。

    # subscription-manager attach --pool=$POOL_ID
    Copy to Clipboard Toggle word wrap
    置き換え
    • $POOL_ID を、直前の手順で特定されたプール ID に置き換えます。
  5. デフォルトのソフトウェアリポジトリーを無効にします。次に、Red Hat Enterprise Linux 7 Server、Red Hat Enterprise Linux 7 Server Extras、および RHCS リポジトリーを有効にします。

    # subscription-manager repos --disable=*
    # subscription-manager repos --enable=rhel-7-server-rpms
    # subscription-manager repos --enable=rhel-7-server-extras-rpms
    # subscription-manager repos --enable=rhel-7-server-rhceph-3-mon-els-rpms
    # subscription-manager repos --enable=rhel-7-server-rhceph-3-osd-els-rpms
    # subscription-manager repos --enable=rhel-7-server-rhceph-3-tools-els-rpms
    Copy to Clipboard Toggle word wrap
  6. システムを更新して、最新のパッケージを受け取ります。

    # yum update
    Copy to Clipboard Toggle word wrap
関連情報

1.1.2. sudo アクセスのある Ansible ユーザーの作成

Ansible は、ソフトウェアをインストールし、パスワードを要求せずに設定ファイルを作成するための root 権限を持つユーザーとして、すべての Red Hat Ceph Storage (RHCS) ノードにログインできる必要があります。Ansible を使用して Red Hat Ceph Storage クラスターをデプロイおよび設定する際に、ストレージクラスター内のすべてのノードにパスワードなしの root アクセスで Ansible ユーザーを作成する必要があります。

前提条件

  • ストレージクラスター内のすべてのノードへの root または sudo アクセスがある。

手順

  1. Ceph ノードに root ユーザーとしてログインします。

    ssh root@$HOST_NAME
    Copy to Clipboard Toggle word wrap
    置き換え
    • $HOST_NAME は、Ceph ノードのホスト名に置き換えます。

    # ssh root@mon01
    Copy to Clipboard Toggle word wrap

    プロンプトに従い root パスワードを入力します。

  2. 新しい Ansible ユーザーを作成します。

    adduser $USER_NAME
    Copy to Clipboard Toggle word wrap
    置き換え
    • $USER_NAME は、Ansible ユーザーの新規ユーザー名に置き換えます。

    # adduser admin
    Copy to Clipboard Toggle word wrap

    重要

    ceph をユーザー名として使用しないでください。ceph ユーザー名は、Ceph デーモン用に予約されます。クラスター全体で統一されたユーザー名を使用すると、使いやすさが向上しますが、侵入者は通常、そのユーザー名をブルートフォース攻撃に使用するため、明白なユーザー名の使用は避けてください。

  3. このユーザーに新しいパスワードを設定します。

    # passwd $USER_NAME
    Copy to Clipboard Toggle word wrap
    置き換え
    • $USER_NAME は、Ansible ユーザーの新規ユーザー名に置き換えます。

    # passwd admin
    Copy to Clipboard Toggle word wrap

    プロンプトが表示されたら、新しいパスワードを 2 回入力します。

  4. 新規に作成されたユーザーの sudo アクセスを設定します。

    cat << EOF >/etc/sudoers.d/$USER_NAME
    $USER_NAME ALL = (root) NOPASSWD:ALL
    EOF
    Copy to Clipboard Toggle word wrap
    置き換え
    • $USER_NAME は、Ansible ユーザーの新規ユーザー名に置き換えます。

    # cat << EOF >/etc/sudoers.d/admin
    admin ALL = (root) NOPASSWD:ALL
    EOF
    Copy to Clipboard Toggle word wrap

  5. 正しいファイル権限を新しいファイルに割り当てます。

    chmod 0440 /etc/sudoers.d/$USER_NAME
    Copy to Clipboard Toggle word wrap
    置き換え
    • $USER_NAME は、Ansible ユーザーの新規ユーザー名に置き換えます。

    # chmod 0440 /etc/sudoers.d/admin
    Copy to Clipboard Toggle word wrap

関連情報

  • Red Hat Enterprise Linux 7 の『システム管理者のガイド』 の「 新しいユーザーの追加 」セクションを参照してください。

1.1.3. Ansible のパスワードなしの SSH の有効化

Ansible 管理ノードで SSH キーペアを生成し、ストレージクラスター内の各ノードに公開キーを配布して、Ansible がパスワードの入力を求められることなくノードにアクセスできるようにします。

前提条件
手順

Ansible 管理ノードから、Ansible ユーザーとして次の手順を実行します。

  1. SSH キーペアを生成し、デフォルトのファイル名を受け入れ、パスフレーズを空のままにします。

    [user@admin ~]$ ssh-keygen
    Copy to Clipboard Toggle word wrap
  2. 公開鍵をストレージクラスター内のすべてのノードにコピーします。

    ssh-copy-id $USER_NAME@$HOST_NAME
    Copy to Clipboard Toggle word wrap
    置き換え
    • $USER_NAME は、Ansible ユーザーの新規ユーザー名に置き換えます。
    • $HOST_NAME は、Ceph ノードのホスト名に置き換えます。

    [user@admin ~]$ ssh-copy-id admin@ceph-mon01
    Copy to Clipboard Toggle word wrap

  3. ~/.ssh/config ファイルを作成および編集します。

    重要

    ~/.ssh/config ファイルを作成および編集することで、ansible-playbook コマンドを実行するたびに -u $USER_NAME オプションを指定する必要はありません。

    1. SSH config ファイルを作成します。

      [user@admin ~]$ touch ~/.ssh/config
      Copy to Clipboard Toggle word wrap
    2. 編集のために config ファイルを開きます。ストレージクラスターの各ノードの HostnameUser オプションを設定します。

      Host node1
         Hostname $HOST_NAME
         User $USER_NAME
      Host node2
         Hostname $HOST_NAME
         User $USER_NAME
      ...
      Copy to Clipboard Toggle word wrap
      置き換え
      • $HOST_NAME は、Ceph ノードのホスト名に置き換えます。
      • $USER_NAME は、Ansible ユーザーの新規ユーザー名に置き換えます。

      Host node1
         Hostname monitor
         User admin
      Host node2
         Hostname osd
         User admin
      Host node3
         Hostname gateway
         User admin
      Copy to Clipboard Toggle word wrap

  4. ~/.ssh/config ファイルに正しいファイルパーミッションを設定します。

    [admin@admin ~]$ chmod 600 ~/.ssh/config
    Copy to Clipboard Toggle word wrap
関連情報
  • ssh_config(5) の man ページ
  • Red Hat Enterprise Linux7 の システム管理者ガイドOpen SSH の章

1.1.4. Red Hat Ceph Storage のファイアウォールの設定

Red Hat Ceph Storage (RHCS) は firewalld サービスを使用します。

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 ユーザーで実行します。

  1. すべての RHCS ノードで、firewalld サービスを起動します。これを有効にして、システムの起動時に実行し、実行していることを確認します。

    # systemctl enable firewalld
    # systemctl start firewalld
    # systemctl status firewalld
    Copy to Clipboard Toggle word wrap
  2. すべての Monitor ノードで、パブリックネットワークの 6789 ポートを開く。

    [root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp
    [root@monitor ~]# firewall-cmd --zone=public --add-port=6789/tcp --permanent
    Copy to Clipboard Toggle word wrap

    ソースアドレスに基づいてアクセスを制限するには、以下を実行します。

    firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
    source address="IP_address/netmask_prefix" port protocol="tcp" \
    port="6789" accept"
    Copy to Clipboard Toggle word wrap
    firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
    source address="IP_address/netmask_prefix" port protocol="tcp" \
    port="6789" accept" --permanent
    Copy to Clipboard Toggle word wrap
    置き換え
    • IP_address には、Monitor ノードのネットワークアドレスを指定します。
    • netmask_prefix には、CIDR 表記のネットマスクを指定します。

    [root@monitor ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
    source address="192.168.0.11/24" port protocol="tcp" \
    port="6789" accept"
    Copy to Clipboard Toggle word wrap

    [root@monitor ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
    source address="192.168.0.11/24" port protocol="tcp" \
    port="6789" accept" --permanent
    Copy to Clipboard Toggle word wrap
  3. すべての OSD ノードで、パブリックネットワークでポート 6800-7300 を開きます。

    [root@osd ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp
    [root@osd ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
    Copy to Clipboard Toggle word wrap

    別のクラスターネットワークがある場合には、適切なゾーンでコマンドを繰り返します。

  4. すべての Ceph Manager (ceph-mgr) ノード (通常はMonitorのノードと同じ) で、パブリックネットワークの 6800~7300 番ポートを開きます。

    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp
    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
    Copy to Clipboard Toggle word wrap

    別のクラスターネットワークがある場合には、適切なゾーンでコマンドを繰り返します。

  5. すべての Ceph Metadata Server (ceph-mds) ノードにおいて、パブリックネットワークでポート 6800 を開きます。

    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800/tcp
    [root@monitor ~]# firewall-cmd --zone=public --add-port=6800/tcp --permanent
    Copy to Clipboard Toggle word wrap

    別のクラスターネットワークがある場合には、適切なゾーンでコマンドを繰り返します。

  6. すべての Ceph Object Gateway ノードで、パブリックネットワーク上の関連するポートを開きます。

    1. デフォルトの Ansible が設定されたポート 8080 を開くには、以下のコマンドを実行します。

      [root@gateway ~]# firewall-cmd --zone=public --add-port=8080/tcp
      [root@gateway ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
      Copy to Clipboard Toggle word wrap

      ソースアドレスに基づいてアクセスを制限するには、以下を実行します。

      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="8080" accept"
      Copy to Clipboard Toggle word wrap
      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="8080" accept" --permanent
      Copy to Clipboard Toggle word wrap
      置き換え
      • オブジェクトゲートウェイノードのネットワークアドレスを含む IP_address
      • netmask_prefix には、CIDR 表記のネットマスクを指定します。

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="8080" accept"
      Copy to Clipboard Toggle word wrap

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="8080" accept" --permanent
      Copy to Clipboard Toggle word wrap
    2. オプション:Ansible を使用して Ceph Object Gateway をインストールし、使用する Ceph Object Gateway を Ansible が構成するデフォルトのポートを 8080 からポート 80 に変更した場合は、次のポートを開きます。

      [root@gateway ~]# firewall-cmd --zone=public --add-port=80/tcp
      [root@gateway ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
      Copy to Clipboard Toggle word wrap

      ソースアドレスに基づいてアクセスを制限するには、以下のコマンドを実行します。

      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="80" accept"
      Copy to Clipboard Toggle word wrap
      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="80" accept" --permanent
      Copy to Clipboard Toggle word wrap
      置き換え
      • オブジェクトゲートウェイノードのネットワークアドレスを含む IP_address
      • netmask_prefix には、CIDR 表記のネットマスクを指定します。

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="80" accept"
      Copy to Clipboard Toggle word wrap

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="80" accept" --permanent
      Copy to Clipboard Toggle word wrap
    3. オプション:SSL/TLS を使用するには、443 ポートを開きます。

      [root@gateway ~]# firewall-cmd --zone=public --add-port=443/tcp
      [root@gateway ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent
      Copy to Clipboard Toggle word wrap

      ソースアドレスに基づいてアクセスを制限するには、以下のコマンドを実行します。

      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="443" accept"
      Copy to Clipboard Toggle word wrap
      firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="IP_address/netmask_prefix" port protocol="tcp" \
      port="443" accept" --permanent
      Copy to Clipboard Toggle word wrap
      置き換え
      • オブジェクトゲートウェイノードのネットワークアドレスを含む IP_address
      • netmask_prefix には、CIDR 表記のネットマスクを指定します。

      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="443" accept"
      [root@gateway ~]# firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" \
      source address="192.168.0.31/24" port protocol="tcp" \
      port="443" accept" --permanent
      Copy to Clipboard Toggle word wrap

関連情報

1.1.5. HTTP プロキシーの使用

Ceph ノードが HTTP/HTTPS プロキシーの背後にある場合は、レジストリー内のイメージにアクセスするように docker を設定する必要があります。以下の手順に従って、HTTP/HTTPS プロキシーを使用して docker のアクセスを設定します。

前提条件
  • 実行中の HTTP/HTTPS プロキシー
手順
  1. root として、docker サービスの systemd ディレクトリーを作成します。

    # mkdir /etc/systemd/system/docker.service.d/
    Copy to Clipboard Toggle word wrap
  2. root として、HTTP/HTTPS 設定ファイルを作成します。

    1. HTTP の場合は、/etc/systemd/system/docker.service.d/http-proxy.conf ファイルを作成し、以下の行をファイルに追加します。

      [Service]
      Environment="HTTP_PROXY=http://proxy.example.com:80/"
      Copy to Clipboard Toggle word wrap
    2. HTTPS の場合は、/etc/systemd/system/docker.service.d/https-proxy.conf ファイルを作成し、以下の行をファイルに追加します。

      [Service]
      Environment="HTTPS_PROXY=https://proxy.example.com:443/"
      Copy to Clipboard Toggle word wrap
  3. root として、ceph-ansible Playbook を実行する前に、ストレージクラスター内のすべての Ceph ノードに HTTP/HTTPS 設定ファイルをコピーします。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat