1.3. Red Hat Update Infrastructure のコンポーネント
RHUI の各コンポーネントについて詳細に説明します。
1.3.1. Red Hat Update Appliance
RHUI インストールごとに RHUA がありますが、多くのクラウド環境では、リージョンまたはデータセンターごとに RHUI インストールがあります。たとえば、Amazon の EC2 クラウドは複数のリージョンで設定されています。すべてのリージョンでは、独自の RHUA ノードを持つ個別の RHUI が設定されています。
RHUA では、以下の作業を行うことができます。
- Red Hat コンテンツ配信ネットワーク (CDN) から新規パッケージをダウンロードします。RHUA は Red Hat に接続する唯一の RHUI コンポーネントであり、RHUA の同期スケジュールを設定できます。
- 新規パッケージを各 CDS ノードにコピーします。
- RHUI インストールの健全性を検証し、結果を RHUA にあるファイルに書き込みます。監視ソリューションは、このファイルを使用して RHUI インストールの健全性を判断します。
- CLI ツールを使用して RHUI インストールの健全性について人間が判読できるビューを提供します。
RHUI は主に /etc/rhui/rhui-tools.conf
と /etc/rhui-installer/answers.yaml
の設定ファイルを使用します。
/etc/rhui/rhui-tools.conf
設定ファイルには、RHUA で使用される一般的なオプション (証明書のデフォルトのファイルの場所、Red Hat CDN 同期のデフォルト設定パラメーターなど) が含まれます。通常、このファイルを編集する必要はありません。
Red Hat Update Infrastructure Management Tool は、ユーザー入力の値に基づいて /etc/rhui-installer/answers.yaml
設定ファイルを生成します。これには、特定のリージョンで RHUA の実行を促進するすべての情報が含まれます。設定例には、パッケージをダウンロードするための RHUA の宛先と、RHUI インストールの CDS ノード (ホスト名) の一覧が含まれます。
RHUA は複数のサービスを使用して、配信を簡単にするためにコンテンツを同期し、整理し、配布します。
RHUA サービス
- Pulp
- サポートされるサービスの管理を監視し、ユーザーが対話するユーザーインターフェイスを提供するサービスです。
- MongoDB
- 現在同期しているリポジトリー、パッケージ、およびその他の重要なメタデータを追跡するために使用されるバリアントデータベースです。MongoDB は、値を bson (Binary JSON) オブジェクトに保存します。
- Qpid
- RHUA が CDS と安全に対話して、必要なアクションを RHUA に対して通知できるようにする Apache ベースのメッセージングブローカーシステム (同期、削除、調整リポジトリーなど)。これにより、RHUA システムから RHUI アプライアンスを完全に制御できます。
以下の考慮事項が該当します。
- MongoDB のファイルはファイルシステム上の多くの領域を取得するように表示され、データベースのコンテンツ自体よりも大きくなる場合があります。これは、Mongo の割り当て方法に基づく通常の動作です。詳細は 、RHUI の mongodb ファイルが実際のデータベースの内容よりも大きい を参照してください。
- MongoDB の起動に 失敗した場合、MongoDB の起動エラーが原因で Red Hat Update Infrastructure の起動に失敗することが 説明されているように、データベースロックのクリアと修復の実行が効果的であることがよくあります。
1.3.2. コンテンツ配信サーバー
CDS ノードは、クライアントが更新したコンテンツ用に接続するリポジトリーを提供します。CDS は 1 つしかありません。RHUI はフェイルオーバー機能を備えたロードバランサーを提供するため、複数の CDS ノードを使用することが推奨されます。
エンドユーザーの RHEL システムへの CDS ホストコンテンツシステムの数は必要ありませんが、CDS はラウンドロビン形式の負荷分散方式 (A、B、C、A、B、C) で動作し、エンドユーザーシステムにコンテンツを提供します。CDS は HTTP を使用して、httpd-based yum
リポジトリーを介してコンテンツをエンドユーザーシステムにホストします。
設定時に、パッケージが同期される CDS ディレクトリーを指定します。RHUA と同様に、唯一の要件は、CDS にディレクトリーをマウントすることです。必要なデバイスを割り当てる際の最適なアクションが判断されるのは、クラウドプロバイダー次第です。Red Hat Update Infrastructure Management Tool 設定 RPM は、パッケージディレクトリーと Apache 設定をリンクして、パッケージディレクトリーを提供します。
NFS が使用される場合、rhui-installer
は RHUA で NFS 共有を設定し、コンテンツと NFS 共有をマウントする CDS のディレクトリーを保存できます。以下の rhui-manager
オプションは、この設定を制御します。
-
--remote-fs-mountpoint
は、リモートファイルシステム共有をマウントする必要があるファイルシステムの場所です (デフォルト:/var/lib/rhui/remote_share
) -
--remote-fs-server
は、共有ファイルシステムが使用するリモートマウントポイントです。たとえば、nfs.example.com:/path/to/share
(デフォルト:nfs.example.com:/export
) です。
これらのデフォルト値が使用される場合、RHUA の /export
ディレクトリーと各 CDS の /var/lib/rhui/remote_share
ディレクトリーは同じになります。たとえば、yum
、docker
、および ostree
リポジトリーがすでに同期されている場合は、published
サブディレクトリーの構造は以下のようになります。
[root@rhua ~]# ls /export/published/ docker ostree yum [root@cds01 ~]# ls /var/lib/rhui/remote_share/published/ docker ostree yum
予想される使用法は、各 CDS がパッケージのコピーを保持することです。クラウドプロバイダーは、RHUA がパッケージを書き込んで各 CDS が読み取る共有ストレージ (Gluster Storage など) の形式を使用できます。
ストレージソリューションは、RHUA および CDS にマウントするための NFS エンドポイントを提供する必要があります。ローカルストレージが実装されている場合、クラスターが機能するために共有ストレージが必要になります。RHUA にローカルストレージを提供する場合は、RHUA が rhua.example.com:/path/to/nfs/share
エンドポイントが設定された NFS サーバーとして機能するように設定します。
各 CDS で行われる唯一の標準以外のロジックは、エンタイトルメント証明書チェックです。このチェックにより、クライアントが yum
リポジトリーまたは ostree
リポジトリーに対して要求を行うのが、クラウドプロバイダーがこれらのリポジトリーにアクセスする権限を付与するようになります。このチェックでは、以下の条件を確認します。
- エンタイトルメント証明書がクラウドプロバイダーの認証局 (CA) 証明書により署名されている。この検証を容易にするため、CA 証明書はその設定の一部として CDS にインストールされている。
- 要求された URI は、クライアントのエンタイトルメント証明書にあるエンタイトルメントと一致します。
CA の検証に失敗すると、クライアントには SSL エラーが表示されます。詳細は、/var/log/httpd/
にある CDS の Apache ログを参照してください。
[root@cds01 ~]# ls -1 /var/log/httpd/ access_log cds.example.com_access_ssl.log cds.example.com_error_ssl.log crane_access_ssl.log crane_error_ssl.log default_error.log error_log
Apache の設定は、CDS のインストール時に /etc/httpd/conf.d/cds_ssl.conf
ファイルで処理されます。
複数のクライアントがリポジトリーに対して更新に問題がある場合は、RHUI で問題があることを示す可能性があります。詳細は、Yum generates 'Errno 14 HTTP Error 401: Authorization Required' while accessing RHUI CDS を参照してください。
1.3.3. HAProxy
複数の CDS が使用される場合は、負荷分散ソリューションを準備して、クライアント HTTPS 要求をすべてのサーバーに分散する必要があります。RHUI には HAProxy が同梱されていますが、インストール時に使用する負荷分散ソリューション (クラウドプロバイダーからのソリューションなど) を選択するのはユーザー次第です。HAProxy が使用されている場合は、挿入するノードの数を決定する必要もあります。詳細は、HAProxy の設定 を参照してください。
クライアントは CDS に直接移動するように設定されていません。リポジトリーファイルは、RHUI ロードバランサーである HAProxy を参照するように設定されます。HAProxy は特に高可用性環境に適した TCP/HTTP リバースプロキシーです。HAProxy は以下の作業を行います。
- 静的に割り当てられた Cookie (クッキー) に応じて HTTP リクエストをルーティングします。
- HTTP Cookie を使用してサーバー永続性を維持しながら、複数のサーバーに負荷を分散します。
- メインサーバーが失敗した場合にバックアップサーバーに切り替えます。
- サービス監視専用の特別なポートへの接続を許可します。
- 既存の接続を破損することなく接続の受け入れを停止します。
- 両方向で HTTP ヘッダーを追加、変更、および削除します。
- 特定のパターンに一致するリクエストをブロックします。
- アプリケーション Cookie に応じて、正しいアプリケーションサーバーへのクライアント接続を永続化します。
- HTML ページとして、アプリケーションから傍受された URI からの認証ユーザーに詳細なステータスを報告します。
RHEL 7 では、ロードバランサー技術はベースオペレーティングシステムに含まれています。ロードバランサーは別のノードにインストールする必要があります。
既存のロードバランサーを使用する場合は、プールに転送される filename cds-lb-hostname
のロードバランサーでポート 5000 と 443 が設定されていること、およびクラスター内のすべての CDS がロードバランサーのプールにあることを確認してください。第 8 章の手順に従う必要はありません。
正確な設定は、使用する特定のロードバランサーソフトウェアによって異なります。ロードバランサーの設定方法を理解するには、一般的な HAProxy 設定から取られる以下の設定を参照してください。
[root@rhui3proxy ~]# cat /etc/haproxy/haproxy.cfg # This file managed by Puppet global chroot /var/lib/haproxy daemon group haproxy log 10.13.153.2 local0 maxconn 4000 pidfile /var/run/haproxy.pid stats socket /var/lib/haproxy/stats user haproxy defaults log global maxconn 8000 option redispatch retries 3 stats enable timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout check 10s listen crane00 bind 10.13.153.2:5000 balance roundrobin option tcplog option ssl-hello-chk server cds3-2.usersys.redhat.com cds3-2.usersys.redhat.com:5000 check server cds3-1.usersys.redhat.com cds3-1.usersys.redhat.com:5000 check listen https00 bind 10.13.153.2:443 balance roundrobin option tcplog option ssl-hello-chk server cds3-2.usersys.redhat.com cds3-2.usersys.redhat.com:443 check server cds3-1.usersys.redhat.com cds3-1.usersys.redhat.com:443 check
グローバル、デフォルト、およびリッスンの設定の詳細は、Red Hat Enterprise Linux 7 ロードバランサーの管理 を参照してください。
クライアントが正常に接続できない場合は、/var/log/httpd/
の下にある CDS の httpd
ログを確認して、要求が CDS に到達したことを確認することが重要であることに注意してください。リクエストが CDS に届かない場合は、DNS や一般的なネットワーク接続に問題がある可能性があります。
1.3.4. リポジトリー、コンテナー、およびコンテンツ
リポジトリーは、ソフトウェアパッケージ (RPM) のストレージの場所です。RHEL は、yum
コマンドを使用して、RPM の検索、ダウンロード、インストール、および設定を行います。RPM には、アプリケーションの実行に必要なすべての依存関係が含まれます。RPM は、リポジトリーのソフトウェアの更新もダウンロードします。
RHEL 7 は、リソース管理用のコントロールグループ (cgroup)、プロセス分離用の名前空間、SELinux によるセキュリティーなどのコアな技術を使用して Linux コンテナーを実装します。これにより、セキュアなマルチテナントが可能になり、セキュリティーの悪用の可能性が低減します。Linux コンテナーは、セキュリティーを強化する一方で、迅速なアプリケーションデプロイメント、単純なテスト、メンテナーンス、およびトラブルシューティングを可能にします。Docker で RHEL 7 を使用すると、スタッフの効率を高め、サードパーティーのアプリケーションを迅速にデプロイし、よりアジャイルな開発環境を有効にし、リソースをより密接に管理できます。
RHEL 7 で Linux コンテナーを使用するには、2 つの一般的なシナリオがあります。ホストコンテナーをアプリケーションサンドボックスのツールとして使用するか、またはイメージベースのコンテナーの拡張機能を使用できます。イメージからコンテナーを起動すると、書き込み可能な階層がこのイメージの上部に追加されます。コンテナーをコミットするたびに (docker commit
コマンドを使用)、変更を保存する新しいイメージ層が追加されます。
RHUI に関連するコンテンツは、RHUA ノードおよび CDS ノードで使用する Red Hat CDN からダウンロードしたソフトウェア (RPM など) です。RPM は、特定のアプリケーションおよびツールの実行に必要なファイルを提供します。クライアントには、rpm パッケージが提供する SSL コンテンツ証明書と鍵のセットによるアクセスが付与されます。これは、生成された yum
リポジトリーファイルのセットも提供します。
詳細は、What Channels Can Be Delivered at Red Hat's Certified Cloud & Service Provider (CCSP) Partners? を参照してください。