第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つのノードが必要です。このガイドの例では、node1
、node2
およびnode3
という3つのノードを使用します。プール内の各ノードのノード名は、各ホストで解決可能である必要があります。これを実現するために、DNSを正しく構成するか、各ノードの/etc/hosts
ファイルにホスト・エントリを追加できます。
このガイドの例では、各ホストが、/dev/sdb
にある追加の専用ブロック・ストレージ・デバイスで構成されています。ブロック・デバイスはXFSファイル・システムでフォーマットされ、/data/glusterfs/myvolume/mybrick
にマウントされます。
デプロイメントのニーズによっては、フットプリントがより大きいノードが必要になる場合があります。Glusterのアップストリームのドキュメントには、その他の考慮事項が詳しく記載されています。
2.2 オペレーティング・システムの要件
Gluster Storage for Oracle Linuxのリリース8は、次の表に示すプラットフォームとオペレーティング・システムで使用できます。
プラットフォーム |
オペレーティング・システムのリリース |
最小のオペレーティング・システムのメンテナンス・リリース |
カーネル |
---|---|---|---|
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インタフェースを使用して、システムで適切なチャネルをサブスクライブします。
-
ULNユーザー名とパスワードを使用してhttps://linux.oracle.comにログインします。
-
「システム」タブの登録されたマシンのリストで、システムの名前が付いているリンクをクリックします。
-
「システム詳細」ページで、「サブスクリプションの管理」をクリックします。
-
「システム・サマリー」ページで、利用できるチャネルのリストから必要なチャネルを選択し、右矢印をクリックしてサブスクライブ済チャネルのリストに移動します。次のチャネルをシステムでサブスクライブして、すべての依存関係が満たされるようにします。
-
ol8_
arch
_gluster_appstream -
ol8_
arch
_baseos_latest -
ol8_
arch
_appstream
-
-
サブスクリプションの保存をクリックします。
Oracle Linux yumサーバーを使用したリポジトリの有効化
システムの更新にOracle Linux yumサーバーを使用する場合は、コマンドラインを使用してGluster Storage for Oracle Linux yumリポジトリを有効にします。
-
リリース・パッケージをインストールして、Gluster Storage for Oracle Linux yumリポジトリ構成をインストールします。oracle-gluster-release-el8
sudo dnf install oracle-gluster-release-el8
-
次の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_
チャネル)で使用できます。ただし、他のリポジトリおよびチャネルに対する依存関係もあるため、これらはGlusterがインストールされている各システムで有効にする必要があります。 arch
_gluster8
ULNを使用したリポジトリの有効化
ULNを使用するように登録した場合は、ULN Webインタフェースを使用して、システムで適切なチャネルをサブスクライブします。
-
ULNユーザー名とパスワードを使用してhttps://linux.oracle.comにログインします。
-
「システム」タブの登録されたマシンのリストで、システムの名前が付いているリンクをクリックします。
-
「システム詳細」ページで、「サブスクリプションの管理」をクリックします。
-
「システム・サマリー」ページで、利用できるチャネルのリストから必要なチャネルを選択し、右矢印をクリックしてサブスクライブ済チャネルのリストに移動します。次のチャネルをシステムでサブスクライブします。
-
ol7_
arch
_gluster8 -
ol7_
arch
_addons -
ol7_
arch
_latest -
ol7_
arch
_optional_latest -
ol7_
またはarch
_UEKR5ol7_
arch
_UEKR4
-
-
サブスクリプションの保存をクリックします。
Oracle Linux yumサーバーを使用したリポジトリの有効化
システムの更新にOracle Linux yumサーバーを使用する場合は、コマンドラインを使用してGluster Storage for Oracle Linux yumリポジトリを有効にします。
-
リリース・パッケージをインストールして、Gluster Storage for Oracle Linux yumリポジトリ構成をインストールします。oracle-gluster-release-el7
sudo yum install oracle-gluster-release-el7
-
次の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サーバー・パッケージをインストールします。
-
glusterfs-server
パッケージをインストールします。Oracle Linux 8を実行している場合は、次のコマンドを入力します。
sudo dnf install @glusterfs/server
それ以外の場合は、次のように入力します。
sudo yum install glusterfs-server
-
Glusterサーバー・サービスを起動して有効にします。
sudo systemctl enable --now glusterd
-
ファイアウォール構成を調整します。
クラスタ内のノード間でプール・ネットワーク通信を実行できる必要があります。いずれかのノードにファイアウォールをデプロイする場合は、必要なポートまたはクラスタの各ノード間のネットワーク・トラフィックが可能になるようにサービスを構成します。
-
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つのサーバーのプールが作成されます(node1
、node2
およびnode3
)。プール内のノードの1つを、プール操作を実行するノードとして指定する必要があります。この例では、node1
が、プール操作が実行されるノードです。
-
信頼できるサーバー・プールにノードを追加します。プール操作を実行しているノードを追加する必要はありません。たとえば:
sudo gluster peer probe node2 sudo gluster peer probe node3
-
(オプション)プール内の各ノードのステータスを確認します。
sudo gluster peer status
-
(オプション)プール内のノードをリストします。
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によって証明書が署名される環境、および証明書が自己署名される場合の構成について説明します。
-
プール内の各ノードで秘密鍵を生成します。これを行うには、
openssl
ツールを使用します。sudo openssl genrsa -out /etc/ssl/glusterfs.key 2048
-
採用する方法に応じて、次のサブステップのいずれかを実行します。
自己署名証明書を使用-
ストレージ・プール内の各ノードに自己署名証明書を作成します。
sudo openssl req -new -x509 -days 365 -key /etc/ssl/glusterfs.key -out /etc/ssl/glusterfs.pem
-
各
*.pem
ファイルの内容を/etc/ssl/glusterfs.ca
という単一のファイルに連結します。 -
/etc/ssl/glusterfs.ca
がプール内のすべてのノードに存在することを確認します。各ノードは、このファイルを使用して、そのノードに接続する他のノードまたはクライアントによって提示された証明書を検証します。別の参加ノードまたはクライアントの公開証明書がこのファイルに存在しない場合、ノードは証明書を検証できず、接続は失敗します。
CA署名証明書を使用-
証明書署名リクエストを作成します。(CSR)
sudo openssl req -new -sha256 -key /etc/ssl/glusterfs.key -out /etc/ssl/glusterfs.csr
-
署名証明書をCAから取得したら、このファイルを
/etc/ssl/glusterfs.pem
に保存します。 -
CAプロバイダのCA証明書を、プール内の各ノードの
/etc/ssl/glusterfs.ca
に保存します。各ノードは、このファイルを使用して、そのノードに接続する他のノードまたはクライアントによって提示された証明書を検証します。別の参加ノードまたはクライアントの公開証明書が、CA署名証明書によって検証できない場合、クライアントまたはノードによる接続試行は失敗します。
-
-
プール内の各ノードの
/var/lib/glusterd/secure-access
に空のファイルを作成して、ストレージ・プール内の管理トラフィックに対してTLS暗号化を構成します。ボリュームをマウントするクライアント・システムで、この同じステップを実行します。
sudo touch /var/lib/glusterd/secure-access
-
既存のボリュームに対して
client.ssl
およびserver.ssl
パラメータを設定して、そのボリュームのI/OパスでTLSを有効にします。たとえば、
myvolume
という名前のボリュームでTLSを有効にするには、次のように入力します。sudo gluster volume set
myvolume
client.ssl on sudo gluster volume setmyvolume
server.ssl onこれらのパラメータは、Glusterネイティブ・クライアントを使用したクライアント・トラフィックおよびプール内のノード間の通信で、TLS検証および暗号化を有効にします。SMBなどのネイティブでないファイル共有プロトコルでは、これらの設定の変更でTLSが自動的に有効にならないことに注意してください。
-
プール内の管理トラフィックに対してセキュア・アクセスを有効にした各ノードで、
glusterd
サービスを再起動します。sudo systemctl restart glusterd