第2章 Gluster Storage for Oracle Linuxのインストール

この章では、リポジトリでGluster Storage for Oracle Linuxパッケージをインストールできるようにする方法と、それらのパッケージのインストールを実行する方法について説明します。この章では、Glusterの信頼できるストレージ・プールとTransport Layer Security (TLS)の設定についても説明します。この章には、以前のリリースのGluster Storage for Oracle Linuxからのアップグレードに関する情報も含まれています。

2.1 ハードウェアおよびネットワークの要件

Gluster Storage for Oracle Linuxでは特定のハードウェアを必要としませんが、一部のGluster操作ではCPUとメモリーを多用します。Oracle x86サーバーのX6およびX7ラインは、Glusterノードのホストに適しています。Oracle x86サーバーの詳細は、次を参照してください。

https://www.oracle.com/servers/x86/index.html

オラクル社では、64ビットのx86 (x86_64)および64ビットのARM (aarch64)ハードウェアでGluster Storage for Oracle Linuxをサポートしています。

最小ノード構成の内容は、次のとおりです。

  • 2つのCPUコア

  • 2GB RAM

  • 1GBイーサネットNIC

    推奨: 結合(802.3ad/LACP)構成に2つの1GBイーサネットNIC

  • データ要件(10GB以上)に適したサイズで、XFSファイル・システムとしてフォーマットされた専用ストレージ

Glusterの信頼できるストレージ・プールには、少なくとも3つのノードが必要です。このガイドの例では、node1node2およびnode3という3つのノードを使用します。プール内の各ノードのノード名は、各ホストで解決可能である必要があります。これを実現するために、DNSを正しく構成するか、各ノードの/etc/hostsファイルにホスト・エントリを追加できます。

このガイドの例では、各ホストが、/dev/sdbにある追加の専用ブロック・ストレージ・デバイスで構成されています。ブロック・デバイスはXFSファイル・システムでフォーマットされ、/data/glusterfs/myvolume/mybrickにマウントされます。

デプロイメントのニーズによっては、フットプリントがより大きいノードが必要になる場合があります。Glusterのアップストリームのドキュメントには、その他の考慮事項が詳しく記載されています。

2.2 オペレーティング・システムの要件

Gluster Storage for Oracle Linuxのリリース8は、次の表に示すプラットフォームとオペレーティング・システムで使用できます。

表2.1 オペレーティング・システムの要件

プラットフォーム

オペレーティング・システムのリリース

最小のオペレーティング・システムのメンテナンス・リリース

カーネル

x86_64

Oracle Linux 8

Oracle Linux 8.2

Unbreakable Enterprise Kernelリリース6 (UEK R6)

Red Hat Compatible Kernel (RHCK)

aarch64

Oracle Linux 8

Oracle Linux 8.2

UEK R6

RHCK

x86_64

Oracle Linux 7

Oracle Linux 7.7

UEK R6

UEK R5

UEK R4

RHCK

aarch64

Oracle Linux 7

Oracle Linux 7.7

UEK R6

UEK R5


重要
  • デプロイメント内のすべてのノードで、同じOracle Linuxリリースおよび更新レベルが実行される必要があります。そうでない場合、一部のコンポーネント・ソフトウェアのリリース間で変更を行うと(デフォルトのPythonバージョンなど)、ノード間の通信の問題が発生することがあります。

  • 以前のリリースのGluster Storage for Oracle Linuxからアップグレードする場合は、使用しているOracle Linuxリリースの最新の更新レベルにアップグレードする必要もあります。

2.3 Gluster Storage for Oracle Linuxパッケージへのアクセスの有効化

ノート

Oracle Linux 8システムで作業している場合は、このドキュメントの例ではyumコマンドを使用していますが、このコマンドのかわりにdnfを使用した場合も、同じ動作になります。

2.3.1 Oracle Linux 8システムでのアクセスの有効化

Gluster Storage for Oracle Linuxパッケージは、Oracle Linux yumサーバー(ol8_gluster_appstreamリポジトリ)またはUnbreakable Linux Network (ULN) (ol8_arch_gluster_appstreamチャネル)で使用できます。

ULNを使用したリポジトリの有効化

ULNを使用するように登録した場合は、ULN Webインタフェースを使用して、システムで適切なチャネルをサブスクライブします。

  1. ULNユーザー名とパスワードを使用してhttps://linux.oracle.comにログインします。

  2. 「システム」タブの登録されたマシンのリストで、システムの名前が付いているリンクをクリックします。

  3. 「システム詳細」ページで、「サブスクリプションの管理」をクリックします。

  4. 「システム・サマリー」ページで、利用できるチャネルのリストから必要なチャネルを選択し、右矢印をクリックしてサブスクライブ済チャネルのリストに移動します。次のチャネルをシステムでサブスクライブして、すべての依存関係が満たされるようにします。

    • ol8_arch_gluster_appstream

    • ol8_arch_baseos_latest

    • ol8_arch_appstream

  5. サブスクリプションの保存をクリックします。

Oracle Linux yumサーバーを使用したリポジトリの有効化

システムの更新にOracle Linux yumサーバーを使用する場合は、コマンドラインを使用してGluster Storage for Oracle Linux yumリポジトリを有効にします。

  1. oracle-gluster-release-el8リリース・パッケージをインストールして、Gluster Storage for Oracle Linux yumリポジトリ構成をインストールします。

    sudo dnf install oracle-gluster-release-el8
  2. 次のyumリポジトリを有効にします。

    • ol8_gluster_appstream

    • ol8_baseos_latest

    • ol8_appstream

    dnf config-managerツールを使用して、yumリポジトリを有効にします。

    sudo dnf config-manager --enable ol8_gluster_appstream ol8_baseos_latest ol8_appstream

Oracle Linux 8: glusterfsモジュールおよびアプリケーション・ストリームの有効化

Oracle Linux 8では、Gluster Storage for Oracle Linuxパッケージはアプリケーション・ストリーム・モジュールとしてリリースされます。特定のリリースのGlusterソフトウェアに固有のすべてのパッケージは、ストリーム内でリリースされます。さらに、パッケージは、ユース・ケースによっては、システムでの単一のステップとしてインストールされるプロファイル内にバンドルされます。

Glusterでは、2つのモジュールを使用できます。glusterfsモジュールには、Glusterサーバー・ノードまたはGlusterクライアントをインストールして実行するために必要なすべてのサポート対象パッケージが含まれています。glusterfs-developerモジュールには、開発者専用のテクニカル・プレビューとしてリリースされるパッケージが含まれています。glusterfs-developerモジュールで使用可能なパッケージは、サポートされていないか、またはサポートされている他のソフトウェアでパッケージが使用可能になった場合など、非常に特殊なコンテキスト内でのみサポートされる場合があります。

Gluster Storage for Oracle Linuxパッケージにアクセスするには、glusterfsアプリケーション・ストリーム・モジュールを有効にします。

sudo dnf module enable glusterfs

モジュールが有効になると、このドキュメントの他のいずれかの手順に従って、モジュール内のいずれかのパッケージをインストールできます。

モジュール・プロファイルを利用して、単純にユース・ケースに必要なすべてのものをインストールすることもできます。たとえば、任意のサーバー・ノードで次のコマンドを実行します。

sudo dnf install @glusterfs/server

このアクションにより、Glusterのコア機能、Glusterの地理レプリケーション機能、NFS-Ganeshaサーバー、Heketiサーバー・パッケージなど、Glusterサーバー・ノードに必要な可能性があるすべてのパッケージがインストールされます。

Gluster共有にアクセスまたはマウントするクライアント・システムでは、次のコマンドを実行できます。

sudo dnf install @glusterfs/client

このアクションにより、Gluster共有のマウントまたはHeketiクライアントとしての動作に必要なGlusterパッケージがインストールされます。

2.3.2 Oracle Linux 7システムでのアクセスの有効化

Gluster Storage for Oracle Linuxパッケージは、Oracle Linux yumサーバー(ol7_gluster8リポジトリ)またはUnbreakable Linux Network (ULN) (ol7_arch_gluster8チャネル)で使用できます。ただし、他のリポジトリおよびチャネルに対する依存関係もあるため、これらはGlusterがインストールされている各システムで有効にする必要があります。

ULNを使用したリポジトリの有効化

ULNを使用するように登録した場合は、ULN Webインタフェースを使用して、システムで適切なチャネルをサブスクライブします。

  1. ULNユーザー名とパスワードを使用してhttps://linux.oracle.comにログインします。

  2. 「システム」タブの登録されたマシンのリストで、システムの名前が付いているリンクをクリックします。

  3. 「システム詳細」ページで、「サブスクリプションの管理」をクリックします。

  4. 「システム・サマリー」ページで、利用できるチャネルのリストから必要なチャネルを選択し、右矢印をクリックしてサブスクライブ済チャネルのリストに移動します。次のチャネルをシステムでサブスクライブします。

    • ol7_arch_gluster8

    • ol7_arch_addons

    • ol7_arch_latest

    • ol7_arch_optional_latest

    • ol7_arch_UEKR5またはol7_arch_UEKR4

  5. サブスクリプションの保存をクリックします。

Oracle Linux yumサーバーを使用したリポジトリの有効化

システムの更新にOracle Linux yumサーバーを使用する場合は、コマンドラインを使用してGluster Storage for Oracle Linux yumリポジトリを有効にします。

  1. oracle-gluster-release-el7リリース・パッケージをインストールして、Gluster Storage for Oracle Linux yumリポジトリ構成をインストールします。

    sudo yum install oracle-gluster-release-el7
  2. 次のyumリポジトリを有効にします。

    • ol7_gluster8

    • ol7_addons

    • ol7_latest

    • ol7_optional_latest

    • ol7_UEKR5またはol7_UEKR4

    yum-config-managerツールを使用して、yumリポジトリを有効にします。

    sudo yum-config-manager --enable ol7_gluster8 ol7_addons ol7_latest ol7_optional_latest ol7_UEKR5

2.4 Glusterのインストールと構成

Glusterデプロイメントは、ノードと呼ばれる複数のシステムで構成されます。複数のノードで、信頼できるストレージ・プールまたはクラスタが形成されます。

次の項では、Glusterの信頼できるストレージ・プールのノードの設定について説明します。

2.4.1 Oracle Linuxノードの準備

ノードとして使用するすべてのOracle Linuxシステムには、2.1項「ハードウェアおよびネットワークの要件」および2.2項「オペレーティング・システムの要件」に示されている要件に加えて、次の構成と機能が必要です。

  • 同じストレージ構成

  • 同期された時間

  • 解決可能な完全修飾ドメイン名(FQDN)

ストレージ構成

Glusterでは、クラスタ・データのノードごとに専用のファイル・システムが必要です。ストレージは、XFSファイル・システムでフォーマットされる必要があります。ストレージ・デバイスとして、追加のディスク、ディスク・パーティション、LVMボリューム、ループバック・デバイス、マルチパス・デバイスまたはLUNを使用できます。クラスタ・データにはルート・パーティションを使用しないでください。

このガイドの例で使用されているクラスタ・ファイル・システムは、各ノードの/dev/sdbにアタッチされたディスクのXFSファイル・システムです。このディスクはディレクトリ/data/glusterfs/myvolume/mybrickにマウントされています。Glusterファイル・システムで使用される拡張属性に対応するために、iノード・サイズは512バイトに設定されます。このディスクを設定するには、次のようなコマンドを使用します。

sudo mkfs.xfs -f -i size=512 -L glusterfs /dev/sdb
sudo mkdir -p /data/glusterfs/myvolume/mybrick
echo 'LABEL=glusterfs /data/glusterfs/myvolume/mybrick xfs defaults  0 0' |sudo tee -a /etc/fstab
sudo mount -a

同期された時間

時刻は、正確で、かつプール内のノード間で同期されている必要があります。このために、各ノードにNTPまたはPTPをインストールして構成できます。Oracle Linux 7での同期時間の構成の詳細は、Oracle® Linux 7: ネットワークの設定ネットワーク時間の構成を参照してください。

Oracle Linux 8に適用される同等の情報については、Oracle Linux: コマンドライン・インタフェースからのシステムの日時の更新およびOracle® Linux 8: ネットワークの設定ネットワーク時間の構成を参照してください。

解決可能なホスト名

すべてのノードは、プール内の各ノードのFQDNを解決できる必要があります。DNSを使用するか、各システムの/etc/hostsにエントリを入力します。DNSを使用する場合は、サービスに十分な冗長性があり、クラスタがいつでも名前解決を実行できるようにする必要があります。各ノードの/etc/hostsファイルを編集する場合は、次のように、プール内のすべてのノードのIPアドレスとホスト名のエントリを追加します。

192.168.1.51    node1.example.com     node1
192.168.1.52    node2.example.com     node2
192.168.1.53    node3.example.com     node3

2.4.2 Glusterサーバーのインストール

信頼できるストレージ・プールに含める各ノードにGlusterサーバー・パッケージをインストールします。

  1. glusterfs-serverパッケージをインストールします。

    Oracle Linux 8を実行している場合は、次のコマンドを入力します。

    sudo dnf install @glusterfs/server

    それ以外の場合は、次のように入力します。

    sudo yum install glusterfs-server
  2. Glusterサーバー・サービスを起動して有効にします。

    sudo systemctl enable --now glusterd
  3. ファイアウォール構成を調整します。

    クラスタ内のノード間でプール・ネットワーク通信を実行できる必要があります。いずれかのノードにファイアウォールをデプロイする場合は、必要なポートまたはクラスタの各ノード間のネットワーク・トラフィックが可能になるようにサービスを構成します。

    • Glusterトラフィック専用のネットワークがある場合は、信頼できるファイアウォール・ゾーンにインタフェースを追加し、プール内のノード間のすべてのトラフィックを許可できます。たとえば、プール内の各ノードで次を実行します。

      sudo firewall-cmd --permanent --change-zone=if-name --zone=trusted
      sudo firewall-cmd --reload

      このコマンドによって、行zone=trustedがインタフェースの/etc/sysconfig/network-scripts/ifcfg-if-nameファイルに自動的に追加され、ファイアウォールがリロードされて変更がアクティブ化されます。

      この構成では、クライアントが同じ専用ネットワークに存在し、同じファイアウォール・ゾーンに対して構成される必要があります。必要に応じて、ファイアウォール構成をさらにカスタマイズするために、クライアントが接続しているインタフェースに固有の追加ルールを構成することもできます。

    • ネットワーク・インタフェースが共有ネットワークまたは信頼できないネットワークに存在する場合は、Glusterで特に使用されるポートでトラフィックを許可するようにファイアウォールを構成します。

      sudo firewall-cmd --permanent --add-service=glusterfs
      sudo firewall-cmd --reload

      glusterfsサービスを追加すると、Glusterに必要なポートのみが公開されることに注意してください。Samba経由でアクセスを追加する場合は、これらのサービスも追加する必要があります。

2.4.3 信頼できるストレージ・プールの作成

この項では、信頼できるストレージ・プールの作成方法について説明します。この例では、3つのサーバーのプールが作成されます(node1node2およびnode3)。プール内のノードの1つを、プール操作を実行するノードとして指定する必要があります。この例では、node1が、プール操作が実行されるノードです。

  1. 信頼できるサーバー・プールにノードを追加します。プール操作を実行しているノードを追加する必要はありません。たとえば:

    sudo gluster peer probe node2
    sudo gluster peer probe node3
  2. (オプション)プール内の各ノードのステータスを確認します。

    sudo gluster peer status
  3. (オプション)プール内のノードをリストします。

    sudo gluster pool list

信頼できるサーバー・プールからサーバーを削除する必要がある場合は、次を使用します。

sudo gluster peer detach hostname

2.4.4 トランスポート層セキュリティの設定

Glusterでは、OpenSSLライブラリを使用してGlusterノードとクライアントを認証することで、Transport Layer Security (TLS)をサポートします。秘密鍵と公開証明書を使用することで、TLSは、信頼できるストレージ・プール内のノード間、およびプールのノードにアクセスするクライアント・システム間の通信を暗号化します。

Glusterはすべてのトランザクションで相互認証を実行します。接続の片側がTLSを使用するように構成されている場合、その反対側もTLSを使用する必要があります。各ノードには、プール内の他のすべてのノードの公開証明書、またはプール内の各ノードが提示する証明書の検証に使用できる署名CA証明書のいずれかのコピーが必要です。同様に、プール内のいずれかのノードにアクセスするクライアント・システムには、そのノードの証明書または署名CA証明書のコピーが必要です。同様に、ノードには、アクセスしているクライアントの証明書のコピーが必要です。

TLSはボリュームの設定として有効になり、プール内の管理通信に対して有効にすることもできます。

Glusterデプロイメントに対するTLSの構成はオプションですが、セキュリティを向上させるためにお薦めします。

本番環境では、認証局(CA)によって適切に署名された証明書を使用することで、検証のセキュリティを高めると同時に構成の複雑さを軽減することが適切です。ただし、多数のクライアントがプールにアクセスする場合に、この方法が実際的でないことがあります。この項では、CAによって証明書が署名される環境、および証明書が自己署名される場合の構成について説明します。

  1. プール内の各ノードで秘密鍵を生成します。これを行うには、opensslツールを使用します。

    sudo openssl genrsa -out /etc/ssl/glusterfs.key 2048
  2. 採用する方法に応じて、次のサブステップのいずれかを実行します。

    自己署名証明書を使用
    1. ストレージ・プール内の各ノードに自己署名証明書を作成します。

      sudo openssl req -new -x509 -days 365 -key /etc/ssl/glusterfs.key -out /etc/ssl/glusterfs.pem
    2. *.pemファイルの内容を/etc/ssl/glusterfs.caという単一のファイルに連結します。

    3. /etc/ssl/glusterfs.caがプール内のすべてのノードに存在することを確認します。

      各ノードは、このファイルを使用して、そのノードに接続する他のノードまたはクライアントによって提示された証明書を検証します。別の参加ノードまたはクライアントの公開証明書がこのファイルに存在しない場合、ノードは証明書を検証できず、接続は失敗します。

    CA署名証明書を使用
    1. 証明書署名リクエストを作成します。(CSR)

      sudo openssl req -new -sha256 -key /etc/ssl/glusterfs.key -out /etc/ssl/glusterfs.csr
    2. 署名証明書をCAから取得したら、このファイルを/etc/ssl/glusterfs.pemに保存します。

    3. CAプロバイダのCA証明書を、プール内の各ノードの/etc/ssl/glusterfs.caに保存します。

      各ノードは、このファイルを使用して、そのノードに接続する他のノードまたはクライアントによって提示された証明書を検証します。別の参加ノードまたはクライアントの公開証明書が、CA署名証明書によって検証できない場合、クライアントまたはノードによる接続試行は失敗します。

  3. プール内の各ノードの/var/lib/glusterd/secure-accessに空のファイルを作成して、ストレージ・プール内の管理トラフィックに対してTLS暗号化を構成します。

    ボリュームをマウントするクライアント・システムで、この同じステップを実行します。

    sudo touch /var/lib/glusterd/secure-access
  4. 既存のボリュームに対してclient.sslおよびserver.sslパラメータを設定して、そのボリュームのI/OパスでTLSを有効にします。

    たとえば、myvolumeという名前のボリュームでTLSを有効にするには、次のように入力します。

    sudo gluster volume set myvolume client.ssl on
    sudo gluster volume set myvolume server.ssl on

    これらのパラメータは、Glusterネイティブ・クライアントを使用したクライアント・トラフィックおよびプール内のノード間の通信で、TLS検証および暗号化を有効にします。SMBなどのネイティブでないファイル共有プロトコルでは、これらの設定の変更でTLSが自動的に有効にならないことに注意してください。

  5. プール内の管理トラフィックに対してセキュア・アクセスを有効にした各ノードで、glusterdサービスを再起動します。

    sudo systemctl restart glusterd