Amazon Web Services への RHEL 9 のデプロイ
RHEL システムイメージの取得と AWS 上での RHEL インスタンスの作成
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 パブリッククラウドプラットフォームでの RHEL の導入 リンクのコピーリンクがクリップボードにコピーされました!
パブリッククラウドプラットフォームは、コンピューティングリソースをサービスとして提供します。オンプレミスのハードウェアを使用する代わりに、Red Hat Enterprise Linux (RHEL) システムなどの IT ワークロードをパブリッククラウドインスタンスとして実行できます。
1.1. パブリッククラウドで RHEL を使用する利点 リンクのコピーリンクがクリップボードにコピーされました!
パブリッククラウドプラットフォーム上に配置されたクラウドインスタンスとしての RHEL には、RHEL オンプレミスの物理システムまたは仮想マシン (VM) に比べて次の利点があります。
リソースの柔軟性と詳細な割り当て
RHEL のクラウドインスタンスは、クラウドプラットフォーム上の仮想マシンとして実行されます。この仮想マシンは通常、クラウドサービスのプロバイダーによって維持管理されるリモートサーバーのクラスターです。したがって、特定のタイプの CPU やストレージなどのハードウェアリソースのインスタンスへの割り当ては、ソフトウェアレベルで行われ、簡単にカスタマイズできます。
また、ローカルの RHEL システムと比較すると、物理ホストの機能によって制限されることがありません。むしろ、クラウドプロバイダーが提供する選択肢に基づいて、さまざまな機能から選択できます。
領域とコスト効率
クラウドワークロードをホストするためにオンプレミスサーバーを所有する必要がありません。これにより、物理ハードウェアに関連するスペース、電力、メンテナンスの要件が回避されます。
代わりに、パブリッククラウドプラットフォームでは、クラウドインスタンスの使用料をクラウドプロバイダーに直接支払います。通常、コストはインスタンスに割り当てられたハードウェアとその使用時間に基づきます。したがって、要件に基づいてコストを最適化できます。
ソフトウェアで制御される設定
クラウドインスタンスの設定全体がクラウドプラットフォーム上にデータとして保存され、ソフトウェアによって制御されます。したがって、インスタンスの作成、削除、クローン作成、または移行を簡単に行うことができます。また、クラウドインスタンスは、クラウドプロバイダーのコンソールでリモートで操作され、デフォルトでリモートストレージに接続されます。
さらに、クラウドインスタンスの現在の状態をいつでもスナップショットとしてバックアップできます。その後、スナップショットをロードしてインスタンスを保存した状態に復元できます。
ホストからの分離とソフトウェアの互換性
ローカルの仮想マシンと同様に、クラウドインスタンス上の RHEL ゲストオペレーティングシステムは仮想化されたカーネル上で実行されます。このカーネルは、ホストオペレーティングシステムや、インスタンスへの接続に使用する クライアント システムとは別のものです。
したがって、任意のオペレーティングシステムをクラウドインスタンスにインストールできます。つまり、RHEL パブリッククラウドインスタンスでは、ローカルオペレーティングシステムでは使用できない RHEL 固有のアプリケーションを実行できます。
さらに、インスタンスのオペレーティングシステムが不安定になったり侵害されたりした場合でも、クライアントシステムには一切影響がありません。
1.2. RHEL のパブリッククラウドのユースケース リンクのコピーリンクがクリップボードにコピーされました!
パブリッククラウドへのデプロイには多くの利点がありますが、すべてのシナリオにおいて最も効率的なソリューションであるとは限りません。RHEL デプロイメントをパブリッククラウドに移行するかどうかを評価している場合は、ユースケースがパブリッククラウドの利点を享受できるかどうかを検討してください。
有益なユースケース
パブリッククラウドインスタンスのデプロイは、デプロイメントのアクティブなコンピューティング能力を柔軟に増減する (スケールアップ および スケールダウン とも呼ばれます) 場合に非常に効果的です。したがって、次のシナリオではパブリッククラウドで RHEL を使用することを推奨します。
- ピーク時のワークロードが高く、一般的なパフォーマンス要件が低いクラスター。要求に応じてスケールアップおよびスケールダウンすることで、リソースコストの面で高い効率が得られる場合があります。
- クラスターを迅速にセットアップまたは拡張できます。これにより、ローカルサーバーのセットアップにかかる高額な初期費用が回避されます。
- クラウドインスタンスは、ローカル環境で何が起こっても影響を受けません。したがって、バックアップや障害復旧に使用できます。
問題が発生する可能性のあるユースケース
- 調整不可能な既存の環境を運用している場合。既存のデプロイメントの特定のニーズに合わせてクラウドインスタンスをカスタマイズすることは、現在のホストプラットフォームと比較して費用対効果が低い可能性があります。
- 厳しい予算制限の中で運用している場合。通常、ローカルデータセンターでデプロイメントを維持管理すると、パブリッククラウドよりも柔軟性は低くなりますが、最大リソースコストをより細かく制御できます。
次のステップ
1.3. パブリッククラウドへの移行時によくある懸念事項 リンクのコピーリンクがクリップボードにコピーされました!
RHEL ワークロードをローカル環境からパブリッククラウドプラットフォームに移行すると、それに伴う変更に懸念が生じる可能性があります。よくある質問は次のとおりです。
RHEL は、クラウドインスタンスとして動作する場合、ローカル仮想マシンとして動作する場合とは異なる動作になりますか?
パブリッククラウドプラットフォーム上の RHEL インスタンスは、ほとんどの点で、オンプレミスサーバーなどのローカルホスト上の RHEL 仮想マシンと同じように機能します。注目すべき例外には次のようなものがあります。
- パブリッククラウドインスタンスは、プライベートオーケストレーションインターフェイスの代わりに、プロバイダー固有のコンソールインターフェイスを使用してクラウドリソースを管理します。
- ネストされた仮想化などの特定の機能が正しく動作しない可能性があります。特定の機能がデプロイメントにとって重要な場合は、選択したパブリッククラウドプロバイダーとその機能の互換性を事前に確認してください。
ローカルサーバーと比べて、パブリッククラウドではデータは安全に保たれますか?
RHEL クラウドインスタンス内のデータの所有権はユーザーにあり、パブリッククラウドプロバイダーはデータにアクセスできません。さらに、主要なクラウドプロバイダーは転送中のデータ暗号化をサポートしているため、仮想マシンをパブリッククラウドに移行する際のデータのセキュリティーが向上します。
RHEL パブリッククラウドインスタンスの一般的なセキュリティーは次のように管理されます。
- パブリッククラウドプロバイダーは、クラウドハイパーバイザーのセキュリティーを担当します。
- Red Hat は、RHEL ゲストオペレーティングシステムのセキュリティー機能をインスタンスに提供します。
- ユーザーは、クラウドインフラストラクチャーにおける特定のセキュリティー設定とプラクティスを管理します。
ユーザーの地理的リージョンは、RHEL パブリッククラウドインスタンスの機能にどのように影響しますか?
RHEL インスタンスは、地理的な場所に関係なく、パブリッククラウドプラットフォームで使用できます。したがって、オンプレミスサーバーと同じリージョンでインスタンスを実行できます。
ただし、物理的に離れたリージョンでインスタンスをホストすると、操作時に待ち時間が長くなる可能性があります。さらに、パブリッククラウドプロバイダーによっては、特定のリージョンで、追加機能が提供される場合や、より高いコスト効率が得られる場合があります。RHEL インスタンスを作成する前に、選択したクラウドプロバイダーで利用可能なホスティングリージョンのプロパティーを確認してください。
1.4. パブリッククラウドデプロイメント用の RHEL の入手 リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムをパブリッククラウド環境にデプロイするには、次の手順を実行する必要があります。
要件と市場の現在のオファーに基づいて、ユースケースに最適なクラウドプロバイダーを選択します。
現在、RHEL インスタンスの実行が認定されているクラウドプロバイダーは次のとおりです。
- Amazon Web Services (AWS)
- Google Cloud Platform (GCP)
- 注記
このドキュメントでは、AWS への RHEL のデプロイについて特に説明します。
- 選択したクラウドプラットフォーム上に RHEL クラウドインスタンスを作成します。詳細は、RHEL クラウドインスタンスを作成する方法 を参照してください。
- RHEL デプロイメントを最新の状態に保つには、Red Hat Update Infrastructure (RHUI) を使用します。
1.5. RHEL クラウドインスタンスを作成する方法 リンクのコピーリンクがクリップボードにコピーされました!
RHEL インスタンスをパブリッククラウドプラットフォームにデプロイするには、次のいずれかの方法を使用できます。
| RHEL のシステムイメージを作成し、クラウドプラットフォームにインポートします。
|
| RHEL インスタンスをクラウドプロバイダーマーケットプレイスから直接購入します。
|
さまざまな方法を使用して Amazon Web Services に RHEL インスタンスをデプロイする詳細な手順は、このドキュメントの次の章を参照してください。
第2章 AWS AMI イメージの作成とアップロード リンクのコピーリンクがクリップボードにコピーされました!
カスタマイズした RHEL システムイメージを Amazon Web Services (AWS) クラウドで使用するには、Image Builder でそれぞれの出力タイプを使用してシステムイメージを作成し、イメージをアップロードするようにシステムを設定し、イメージを AWS アカウントにアップロードします。
2.1. AWS AMI イメージを手動でアップロードする準備 リンクのコピーリンクがクリップボードにコピーされました!
AWS AMI イメージをアップロードする前に、イメージをアップロードするためのシステムを設定する必要があります。
前提条件
- AWS IAM アカウントマネージャー にアクセスキー ID を設定している。
- 書き込み可能な S3 bucket を準備する必要があります。Creating S3 bucket を参照してください。
手順
Python 3 および
pipツールをインストールします。dnf install python3 python3-pip
# dnf install python3 python3-pipCopy to Clipboard Copied! Toggle word wrap Toggle overflow pip で
AWS コマンドラインツールをインストールします。pip3 install awscli
# pip3 install awscliCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロファイルを設定します。ターミナルで、認証情報、リージョン、および出力形式を指定するように求められます。
aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:Copy to Clipboard Copied! Toggle word wrap Toggle overflow バケットの名前を定義し、バケットを作成します。
BUCKET=bucketname aws s3 mb s3://$BUCKET
$ BUCKET=bucketname $ aws s3 mb s3://$BUCKETCopy to Clipboard Copied! Toggle word wrap Toggle overflow bucketnameは、実際のバケット名に置き換えます。この名前は、グローバルで一意となるように指定する必要があります。上記で、バケットが作成されます。S3 バケットへのアクセス許可を付与するには、AWS Identity and Access Management (IAM) で
vmimportS3 ロールを作成します (まだ作成していない場合)。信頼ポリシーの設定で、JSON 形式で
trust-policy.jsonファイルを作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ロールポリシーの設定を含む
role-policy.jsonファイルを JSON 形式で作成します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow trust-policy.jsonファイルを使用して、Amazon Web Services アカウントのロールを作成します。aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
$ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow role-policy.jsonファイルを使用して、インラインポリシードキュメントを埋め込みます。aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json
$ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2. CLI を使用して AMI イメージを AWS に手動でアップロードする リンクのコピーリンクがクリップボードにコピーされました!
RHEL Image Builder を使用して ami イメージをビルドし、CLI を使用して Amazon AWS Cloud サービスプロバイダーに直接手動でアップロードすることができます。
前提条件
-
AWS IAM アカウントマネージャーに
Access Key IDを設定している。 - 書き込み可能な S3 bucket を準備する必要があります。Creating S3 bucket を参照してください。
- 定義済みの青写真がある。
手順
テキストエディターを使用して、次の内容の設定ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow フィールドの値を
accessKeyID、secretAccessKey、bucket、およびregionの認証情報に置き換えます。IMAGE_KEY値は、EC2 にアップロードする仮想マシンイメージの名前です。- ファイルを CONFIGURATION-FILE.toml として保存し、テキストエディターを閉じます。
Compose を開始して AWS にアップロードします。
composer-cli compose start blueprint-name image-type image-key configuration-file.toml
# composer-cli compose start blueprint-name image-type image-key configuration-file.tomlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のように置き換えます。
- blueprint-name は、作成したブループリントの名前に置き換えます。
-
image-type は、
amiイメージタイプに置き換えます。 - image-key は、EC2 にアップロードする仮想マシンイメージの名前に置き換えます。
configuration-file.toml は、クラウドプロバイダーの設定ファイルの名前に置き換えます。
注記カスタマイズしたイメージの送信先となるバケットの正しい AWS Identity and Access Management (IAM) 設定が必要です。イメージをアップロードする前にバケットにポリシーを設定しておく必要があります。
イメージビルドのステータスを確認します。
composer-cli compose status
# composer-cli compose statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージのアップロードプロセスが完了すると、"FINISHED" ステータスが表示されます。
検証
イメージのアップロードが成功したことを確認するには、以下を行います。
-
メニューで EC2 にアクセスし、AWS コンソールで正しいリージョンを選択します。イメージが正常にアップロードされたことを示すには、イメージが
availableステータスになっている必要があります。 - ダッシュボードでイメージを選択し、 をクリックします。
2.3. イメージを作成して AWS Cloud AMI に自動的にアップロードする リンクのコピーリンクがクリップボードにコピーされました!
RHEL Image Builder を使用して (.raw) イメージを作成し、Upload to AWS チェックボックスをオンにして、作成した出力イメージを Amazon AWS Cloud AMI サービスプロバイダーに直接自動的にプッシュすることができます。
前提条件
-
rootまたはwheelグループでシステムにアクセスできる。 - ブラウザーで、RHEL Web コンソールの RHEL Image Builder インターフェイスを開いている。
- ブループリントを作成している。Web コンソールインターフェイスでのブループリントの作成 を参照してください。
- AWS IAM アカウントマネージャーにアクセスキー ID を設定している。
- 書き込み可能な S3 バケット を用意している。
手順
- RHEL Image Builder のダッシュボードで、以前に作成した ブループリント名 をクリックします。
- タブを選択します。
をクリックして、カスタマイズしたイメージを作成します。
Create Image ウィンドウが開きます。
-
Type ドロップダウンメニューから、
Amazon Machine Image Disk (.raw)を選択します。 - イメージを AWS Cloud にアップロードするには、Upload to AWS チェックボックスをオンして、 をクリックします。
AWS へのアクセスを認証するには、対応するフィールドに
AWS access key IDおよびAWS secret access keyを入力します。 をクリックします。注記新規アクセスキー ID を作成する場合にのみ、AWS シークレットアクセスキーを表示できます。秘密鍵が分からない場合は、新しいアクセスキー ID を生成します。
-
Image nameフィールドにイメージ名を、Amazon S3 bucket nameフィールドに Amazon バケット名を入力して、カスタマイズイメージを追加するバケットのAWS regionフィールドを入力します。 をクリックします。 情報を確認し、 をクリックします。
必要に応じて、 をクリックして誤った情報を変更します。
注記カスタマイズイメージを送信するバケットの正しい IAM 設定が必要です。この手順では IAM のインポートとエクスポートを使用するため、バケットにイメージをアップロードする前にバケットに ポリシー を設定する必要があります。詳細は、IAM ユーザーの必要なパーミッション を参照してください。
-
Type ドロップダウンメニューから、
右上のポップアップで、保存の進行状況が通知されます。イメージ作成の開始、イメージ作成の進捗、およびその後の AWS Cloud にアップロードに関する情報も通知されます。
プロセスが完了すると、Image build complete のステータスが表示されます。
ブラウザーで、Service→EC2 にアクセスします。
-
AWS コンソールのダッシュボードメニューで、正しいリージョン を選択します。イメージのステータスは、アップロードされていることを示す
Availableでなければなりません。 - AWS ダッシュボードでイメージを選択し、 をクリックします。
-
AWS コンソールのダッシュボードメニューで、正しいリージョン を選択します。イメージのステータスは、アップロードされていることを示す
- 新しいウィンドウが開きます。イメージを開始するために必要なリソースに応じて、インスタンスタイプを選択します。 をクリックします。
- インスタンスの開始の詳細を確認します。変更が必要な場合は、各セクションを編集できます。 をクリックします。
インスタンスを起動する前に、インスタンスにアクセスするための公開鍵を選択します。
既存のキーペアを使用するか、キーペアーを新規作成します。
次の手順に従って、EC2 で新規キーペアを作成し、新規インスタンスにアタッチします。
- ドロップダウンメニューリストから、Create a new key pair を選択します。
- 新しいキーペアに名前を入力します。新しいキーペアが生成されます。
- Download Key Pair をクリックして、新しいキーペアをローカルシステムに保存します。
をクリックしてインスタンスを起動します。
Initializing と表示されるインスタンスのステータスを確認できます。
- インスタンスのステータスが running になると、 ボタンが有効になります。
をクリックします。ウィンドウが表示され、SSH を使用して接続する方法の説明が表示されます。
- 優先する接続方法として スタンドアロン SSH クライアント を選択し、ターミナルを開きます。
秘密鍵を保存する場所で、SSH が機能するために鍵が公開されていることを確認してください。これには、以下のコマンドを実行します。
chmod 400 <_your-instance-name.pem_>
$ chmod 400 <_your-instance-name.pem_>Copy to Clipboard Copied! Toggle word wrap Toggle overflow パブリック DNS を使用してインスタンスに接続します。
ssh -i <_your-instance-name.pem_> ec2-user@<_your-instance-IP-address_>
$ ssh -i <_your-instance-name.pem_> ec2-user@<_your-instance-IP-address_>Copy to Clipboard Copied! Toggle word wrap Toggle overflow yesと入力して、接続の続行を確定します。その結果、SSH 経由でインスタンスに接続されます。
検証
- SSH でインスタンスに接続している間にアクションが実行できるかどうかを確認します。
第3章 Amazon Web Services での EC2 インスタンスとしての Red Hat Enterprise Linux イメージのデプロイメント リンクのコピーリンクがクリップボードにコピーされました!
Amazon Web Services (AWS) 上で RHEL の高可用性 (HA) デプロイメントを設定するには、RHEL の EC2 インスタンスを AWS 上のクラスターにデプロイします。
ISO イメージからカスタム仮想マシンを作成することは可能ですが、Red Hat Image Builder 製品を使用して、特定のクラウドプロバイダーで使用するようにカスタマイズされたイメージを作成することを推奨します。Image Builder を使用すると、AMI (Amazon Machine Image ami 形式) を作成およびアップロードできます。詳細は Composing a Customized RHEL System Image を参照してください。
AWS でセキュアに使用できる Red Hat 製品のリストは、Red Hat on Amazon Web Services を参照してください。
前提条件
- Red Hat カスタマーポータル のアカウントに登録している。
- AWS にサインアップして、AWS リソースを設定します。詳細は Setting Up with Amazon EC2 を参照してください。
3.1. AWS での Red Hat Enterprise Linux イメージオプション リンクのコピーリンクがクリップボードにコピーされました!
以下の表には、イメージの選択肢を記載し、イメージオプションの相違点を示しています。
| イメージオプション | サブスクリプション | サンプルシナリオ | 留意事項 |
|---|---|---|---|
| Red Hat Gold Image をデプロイする | 既存の Red Hat サブスクリプションを使用する | AWS で Red Hat Gold Image を選択します。Gold Image の詳細と、Azure で Gold Image にアクセスする方法は、Red Hat Cloud Access Reference Guide を参照してください。 | このサブスクリプションには、Red Hat のコストが含まれていますが、他のインスタンスのコストは、Amazon 社に支払うことになります。Red Hat は、クラウドアクセスイメージを直接サポートします。 |
| AWS に移動するカスタムイメージをデプロイする | 既存の Red Hat サブスクリプションを使用する | カスタムイメージをアップロードし、サブスクリプションを割り当てます。 | このサブスクリプションには、Red Hat のコストが含まれていますが、他のインスタンスのコストは、Amazon 社に支払うことになります。Red Hat は、カスタム RHEL イメージのサポートを直接提供します。 |
| RHEL を含む既存の Amazon イメージをデプロイする | AWS EC2 イメージには Red Hat 製品が含まれる | AWS マネジメントコンソール でのインスタンスの起動時に RHEL イメージを選択するか、AWS Marketplace からイメージを選択します。 | Amazon 社に、従量課金 モデルで 1 時間ごとに支払います。このようなイメージは "オンデマンド" イメージと呼ばれています。Amazon 社はオンデマンドイメージをサポートします。 Red Hat は、イメージの更新を提供します。AWS により、Red Hat Update Infrastructure (RHUI) から更新を利用できるようにします。 |
Red Hat Image Builder を使用して、AWS 用のカスタムイメージを作成できます。詳細は Composing a Customized RHEL System Image を参照してください。
オンデマンドインスタンスをカスタム RHEL インスタンスに変換することはできません。オンデマンドイメージからカスタム RHEL bring-your-own-subscription (BYOS) イメージに変更するには、次の手順を実行します。
- 新しいカスタム RHEL インスタンスを作成し、オンデマンドインスタンスからデータを移行します。
- データを移行した後に、オンデマンドのインスタンスをキャンセルして二重請求を回避します。
3.2. ベースイメージの理解 リンクのコピーリンクがクリップボードにコピーされました!
ISO イメージからベース仮想マシンを作成するには、事前設定されたベースイメージとその設定を使用できます。
3.2.1. カスタムベースイメージの使用 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシン (VM) を手動で設定するには、まずベース (スターター) となる仮想マシンイメージを作成します。続いて、設定を変更して、仮想マシンがクラウドで動作するために必要なパッケージを追加できます。イメージのアップロード後に、特定のアプリケーションに追加の設定変更を行うことができます。
3.2.2. 仮想マシン設定 リンクのコピーリンクがクリップボードにコピーされました!
クラウド仮想マシンには、以下の設定が必要です。
| 設定 | 推奨事項 |
|---|---|
| ssh | 仮想マシンへのリモートアクセスを確立するには、SSH を有効にする必要があります。 |
| dhcp | プライマリー仮想アダプターは、dhcp 用に設定する必要があります。 |
3.3. ISO イメージからのベース仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
ISO イメージから RHEL 9 ベースイメージを作成するには、ホストマシンの仮想化を有効にし、RHEL 仮想マシン (VM) を作成します。
前提条件
- ホストマシンで 仮想化が有効 になっている。
-
Red Hat カスタマーポータル から最新の Red Hat Enterprise Linux ISO イメージをダウンロードし、イメージを
/var/lib/libvirt/imagesに移動しました。
3.3.1. RHEL ISO イメージからの仮想マシンの作成 リンクのコピーリンクがクリップボードにコピーされました!
手順
- 仮想化用のホストマシンを有効にしていることを確認します。設定および手順は、RHEL 9 で仮想化を有効にする を参照してください。
基本的な Red Hat Enterprise Linux 仮想マシンを作成し、起動します。手順は、仮想マシンの作成 を参照してください。
コマンドラインを使用して仮想マシンを作成する場合は、デフォルトのメモリーと CPU を仮想マシンの容量に設定するようにしてください。仮想ネットワークインターフェイスを virtio に設定します。
たとえば、次のコマンドは
/home/username/Downloads/rhel9.isoイメージを使用して仮想マシンkvmtestを作成します。virt-install \ --name kvmtest --memory 2048 --vcpus 2 \ --cdrom /home/username/Downloads/rhel9.iso,bus=virtio \ --os-variant=rhel9.0# virt-install \ --name kvmtest --memory 2048 --vcpus 2 \ --cdrom /home/username/Downloads/rhel9.iso,bus=virtio \ --os-variant=rhel9.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Web コンソールを使用して仮想マシンを作成する場合は、Web コンソールで仮想マシンの作成 の手順を行います。以下の点に注意してください。
- 仮想マシンをすぐに起動 は選択しないでください。
- メモリー を希望のサイズに変更します。
- インストールを開始する前に、仮想ネットワークインターフェイス設定 で モデル を virtio に変更し、vCPUs を仮想マシンの容量設定に変更していることを確認します。
3.3.2. RHEL インストールの完了 リンクのコピーリンクがクリップボードにコピーされました!
Amazon Web Services (AWS) にデプロイする RHEL システムのインストールを完了するには、インストールの概要 ビューをカスタマイズし、インストールを開始し、仮想マシンの起動後にルートアクセスを有効にします。
手順
- インストールプロセス中に使用する言語を選択します。
インストール概要 ビューで、以下を行います。
- ソフトウェアの選択 をクリックし、最小インストール を選択します。
- 完了 をクリックします。
インストール先 をクリックし、ストレージ設定 で カスタム を選択します。
-
/bootで、500 MB 以上であることを確認してください。残りの領域は、root/に使用できます。 - 標準のパーティションが推奨されますが、論理ボリュームマネージャー (LVM) を使用することもできます。
- ファイルシステムには、xfs、ext4、ext3 などを使用できます。
- 変更が完了したら、完了 をクリックします。
-
- インストールの開始 をクリックします。
- Root パスワード を設定します。必要に応じて、他のユーザーを作成します。
-
インストールが完了したら、仮想マシンを再起動して
rootでログインします。 イメージを設定します。
仮想マシンを登録し、Red Hat Enterprise Linux 9 リポジトリーを有効にします。
subscription-manager register --auto-attach
# subscription-manager register --auto-attachCopy to Clipboard Copied! Toggle word wrap Toggle overflow cloud-initパッケージがインストールされ、有効になっていることを確認します。dnf install cloud-init systemctl enable --now cloud-init.service
# dnf install cloud-init # systemctl enable --now cloud-init.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
重要: この手順は、AWS にアップロードする仮想マシンにのみ行います。
AMD64 または Intel 64 (x86_64) 仮想マシンの場合は、
nvmeドライバー、xen-netfrontドライバー、およびxen-blkfront ドライバーをインストールします。dracut -f --add-drivers "nvme xen-netfront xen-blkfront"
# dracut -f --add-drivers "nvme xen-netfront xen-blkfront"Copy to Clipboard Copied! Toggle word wrap Toggle overflow ARM 64 (aarch64) 仮想マシンの場合は、
nvmeドライバーをインストールします。dracut -f --add-drivers "nvme"
# dracut -f --add-drivers "nvme"Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのドライバーを追加すると、dracut タイムアウトの可能性がなくなります。
ここでは、ドライバーを
/etc/dracut.conf.d/に追加し、dracut -fを入力して既存のinitramfsファイルを上書きできます。
- 仮想マシンの電源をオフにします。
3.4. Red Hat Enterprise Linux イメージの AWS へのアップロード リンクのコピーリンクがクリップボードにコピーされました!
Amazon Web Services (AWS) で RHEL インスタンスを実行できるようにするには、まず RHEL イメージを AWS にアップロードする必要があります。
3.4.1. AWS CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
AWS で HA クラスターを管理するために必要な手順の多くには、AWS CLI の使用が含まれます。
前提条件
- AWS アクセスキー ID および AWS シークレットアクセスキーを作成し、それらにアクセスできるようになりました。手順と詳細は、AWS CLI のクイック設定 を参照してください。
手順
dnfコマンドを使用して AWS コマンドラインツール をインストールします。dnf install awscli
# dnf install awscliCopy to Clipboard Copied! Toggle word wrap Toggle overflow aws --versionコマンドを使用して、AWS CLI をインストールしたことを確認します。aws --version aws-cli/1.19.77 Python/3.6.15 Linux/5.14.16-201.fc34.x86_64 botocore/1.20.77
$ aws --version aws-cli/1.19.77 Python/3.6.15 Linux/5.14.16-201.fc34.x86_64 botocore/1.20.77Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS アクセスの詳細に従って、AWS コマンドラインクライアントを設定します。
aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2. S3 バケットの作成 リンクのコピーリンクがクリップボードにコピーされました!
AWS にインポートするには、Amazon S3 バケットが必要です。Amazon S3 バケットは、オブジェクトを格納する Amazon リソースです。イメージのアップロードプロセスの一環として、S3 バケットを作成し、イメージをバケットに移動する必要があります。
手順
- Amazon S3 コンソール を起動します。
- Create Bucket をクリックします。Create Bucket ダイアログが表示されます。
Name and region ビューで、以下を行います。
- Bucket name を入力します。
- Region を入力します。
- Next をクリックします。
- Configure options ビューでは、目的のオプションを選択し、Next をクリックします。
- Set permissions ビューで、デフォルトのオプションを変更または受け入れ、Next をクリックします。
- バケットの設定を確認します。
Create bucket をクリックします。
注記AWS CLI を使用してバケットを作成することもできます。たとえば、
aws s3 mb s3://my-new-bucketコマンドは、my-new-bucketという名前の S3 バケットを作成します。mb コマンドの詳細は、AWS CLI Command Referenceを参照してください。
3.4.3. vmimport ロールの作成 リンクのコピーリンクがクリップボードにコピーされました!
仮想マシンインポートサービスを使用して RHEL 仮想マシン (VM) を Amazon Web Services (AWS) にインポートするには、vmimport ロールを作成する必要があります。
詳細は、Amazon ドキュメントの Importing a VM as an image using VM Import/Export を参照してください。
手順
trust-policy.jsonという名前のファイルを作成し、以下のポリシーを追加します。システムの任意の場所にファイルを保存し、その場所を書き留めます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow create roleコマンドを実行してvmimportロールを作成します。trust-policy.jsonファイルの場所への完全なパスを指定します。file://の接頭辞をパスに設定します。以下に例を示します。aws iam create-role --role-name vmimport --assume-role-policy-document file:///home/sample/ImportService/trust-policy.json
$ aws iam create-role --role-name vmimport --assume-role-policy-document file:///home/sample/ImportService/trust-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow role-policy.jsonという名前のファイルを作成し、以下のポリシーを追加します。s3-bucket-nameを、S3 バケットの名前に置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow put-role-policyコマンドを使用して、作成したロールにポリシーを割り当てます。role-policy.jsonファイルの完全パスを指定します。以下に例を示します。aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file:///home/sample/ImportService/role-policy.json
$ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file:///home/sample/ImportService/role-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.4. イメージの S3 への変換およびプッシュ リンクのコピーリンクがクリップボードにコピーされました!
qemu-img コマンドを使用すると、イメージを変換して S3 にプッシュできるようになります。サンプルは典型的なもので、qcow2 ファイル形式でフォーマットされたイメージを raw 形式に変換します。Amazon では、OVA、VHD、VHDX、VMDK、および raw の形式のイメージを利用できます。Amazon で利用できるイメージ形式の詳細は、How VM Import/Export works を参照してください。
手順
qemu-imgコマンドを実行してイメージを変換します。以下に例を示します。qemu-img convert -f qcow2 -O raw rhel-9.0-sample.qcow2 rhel-9.0-sample.raw
# qemu-img convert -f qcow2 -O raw rhel-9.0-sample.qcow2 rhel-9.0-sample.rawCopy to Clipboard Copied! Toggle word wrap Toggle overflow イメージを S3 にプッシュします。
aws s3 cp rhel-9.0-sample.raw s3://s3-bucket-name
$ aws s3 cp rhel-9.0-sample.raw s3://s3-bucket-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この手順では数分かかる場合があります。完了したら、AWS S3 コンソール を使用して、イメージが S3 バケットに正常にアップロードされたことを確認できます。
3.4.5. イメージのスナップショットとしてのインポート リンクのコピーリンクがクリップボードにコピーされました!
Amazon Elastic Cloud Compute (EC2) サービスで RHEL インスタンスを起動するには、Amazon Machine Image (AMI) が必要です。システムの AMI を作成するには、まず RHEL システムイメージのスナップショットを EC2 にアップロードする必要があります。
手順
イメージのバケットとパスを指定するファイルを作成します。
container.jsonファイルに名前を付けます。以下の例では、s3-bucket-nameをバケット名に置き換え、s3-keyを鍵に置き換えます。Amazon S3 コンソールを使用して、イメージの鍵を取得できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow イメージをスナップショットとしてインポートします。この例では、パブリックの Amazon S3 ファイルを使用しています。Amazon S3 コンソール を使用して、バケットのパーミッション設定を変更できます。
aws ec2 import-snapshot --disk-container file://containers.json
$ aws ec2 import-snapshot --disk-container file://containers.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 端末は以下のようなメッセージを表示します。メッセージ内の
ImportTaskIDを書き留めます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow describe-import-snapshot-tasksコマンドを使用して、インポートの進行状況を追跡します。ImportTaskIDを含めます。aws ec2 describe-import-snapshot-tasks --import-task-ids import-snap-06cea01fa0f1166a8
$ aws ec2 describe-import-snapshot-tasks --import-task-ids import-snap-06cea01fa0f1166a8Copy to Clipboard Copied! Toggle word wrap Toggle overflow 返されるメッセージには、タスクの現在の状態が表示されます。完了したら、
Statusはcompletedになります。ステータスに記載されているスナップショット ID を書き留めます。
3.4.6. アップロードしたスナップショットからの AMI の作成 リンクのコピーリンクがクリップボードにコピーされました!
Amazon Elastic Cloud Compute (EC2) サービスで RHEL インスタンスを起動するには、Amazon Machine Image (AMI) が必要です。システムの AMI を作成するには、以前にアップロードした RHEL システムスナップショットを使用できます。
手順
- AWS EC2 Dashboard に移動します。
- Elastic Block Store で スナップショット を選択します。
-
スナップショット ID (例:
snap-0e718930bd72bcda0) を検索します。 - スナップショットを右クリックして、イメージの作成 を選択します。
- イメージに名前を付けます。
- 仮想化のタイプ で、ハードウェア仮想化支援機能 を選択します。
- 作成 をクリックします。イメージ作成に関する注意事項に、イメージへのリンクがあります。
イメージリンクをクリックします。Images>AMI の下にイメージが表示されます。
注記また、AWS CLI の
register-imageコマンドを使用して、スナップショットから AMI を作成できます。詳細は、register-image を参照してください。以下に例を示します。aws ec2 register-image \ --name "myimagename" --description "myimagedescription" --architecture x86_64 \ --virtualization-type hvm --root-device-name "/dev/sda1" --ena-support \ --block-device-mappings "{\"DeviceName\": \"/dev/sda1\",\"Ebs\": {\"SnapshotId\": \"snap-0ce7f009b69ab274d\"}}"$ aws ec2 register-image \ --name "myimagename" --description "myimagedescription" --architecture x86_64 \ --virtualization-type hvm --root-device-name "/dev/sda1" --ena-support \ --block-device-mappings "{\"DeviceName\": \"/dev/sda1\",\"Ebs\": {\"SnapshotId\": \"snap-0ce7f009b69ab274d\"}}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow root デバイスボリューム
/dev/sda1をroot-device-nameとして指定する必要があります。AWS のデバイスマッピングの概念情報は、Example block device mapping を参照してください。
3.4.7. AMI からのインスタンスの起動 リンクのコピーリンクがクリップボードにコピーされました!
Amazon Elastic Compute Cloud (EC2) インスタンスを起動して設定するには、Amazon Machine Image (AMI) を使用します。
手順
- AWS EC2 Dashboard から、Images を選択して、AMI を選択します。
- イメージを右クリックして、Launch を選択します。
ワークロードの要件を満たす、もしくは超過する Instance Type を選択します。
インスタンスタイプの詳細は、Amazon EC2 Instance Types を参照してください。
Next:Configure Instance Details をクリックします。
- 作成する インスタンス数 を入力します。
- Network で、AWS 環境でのセットアップ の際に作成した VPC を選択します。インスタンスのサブネットを選択するか、新しいサブネットを作成します。
自動割り当てパブリック IP では、Enable を選択します。
注記これらは、基本インスタンスの作成に必要な最小限の設定オプションです。アプリケーション要件に応じて追加オプションを確認します。
- Next: Add Storage をクリックします。デフォルトのストレージが十分であることを確認してください。
Next: Add Tags をクリックします。
注記タグを使用すると、AWS リソースの管理に役立ちます。タグ付けの詳細は、Tagging Your Amazon EC2 Resources を参照してください。
- Next:Configure Security Group をクリックします。AWS 環境でのセットアップ の際に作成したセキュリティーグループを選択します。
- Review and Launch をクリックします。選択内容を確認します。
Launch をクリックします。既存の鍵のペアの選択、または新しい鍵のペアの作成に関するダイアログが表示されます。AWS 環境でのセットアップ 時に作成した鍵のペアを選択します。
注記秘密鍵のパーミッションが正しいことを確認します。必要に応じて
chmod 400 <keyname>.pemコマンドオプションを使用してパーミッションを変更します。- Launch Instances をクリックします。
View Instances をクリックします。インスタンスに名前を付けることができます。
インスタンスを選択して Connect をクリックすると、インスタンスへの SSH セッションを開始できます。A standalone SSH client に記載されている例を使用してください。
注記または、AWS CLI を使用してインスタンスを起動することもできます。詳細は、Amazon 社のドキュメントの Launching, Listing, and Terminating Amazon EC2 Instances を参照してください。
3.4.8. Red Hat サブスクリプションの割り当て リンクのコピーリンクがクリップボードにコピーされました!
subscription-manager コマンドを使用すると、Red Hat サブスクリプションを登録して RHEL インスタンスに割り当てることができます。
前提条件
- サブスクリプションが有効になっている。
手順
システムを登録します。
subscription-manager register --auto-attach
# subscription-manager register --auto-attachCopy to Clipboard Copied! Toggle word wrap Toggle overflow サブスクリプションを割り当てます。
- アクティベーションキーを使用して、サブスクリプションを割り当てることができます。詳細は、カスタマーポータルのアクティベーションキーを作成する を参照してください。
- または、サブスクリプションプール (Pool ID) の ID を使用してサブスクリプションを手動で割り当てることができます。ホストベースのサブスクリプションのハイパーバイザーへの割り当て を参照してください。
オプション: Red Hat Hybrid Cloud Console のインスタンスに関するさまざまなシステムメトリックを収集するには、インスタンスを Red Hat Insights に登録できます。
insights-client register --display-name <display-name-value>
# insights-client register --display-name <display-name-value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Insights の詳細な設定については、Red Hat Insights のクライアント設定ガイド を参照してください。
3.4.9. AWS Gold Image の自動登録の設定 リンクのコピーリンクがクリップボードにコピーされました!
Amazon Web Services (AWS) 上に RHEL 9 の仮想マシンをより早く、より快適にデプロイするために、RHEL 9 の Gold Image を Red Hat Subscription Manager(RHSM) に自動的に登録するように設定することができます。
前提条件
最新の AWS 用 RHEL 9 Gold Image をダウンロードしている。手順については、AWS でのゴールドイメージの使用 を参照してください。
注記AWS アカウントは、一度に 1 つの Red Hat アカウントにしか割り当てできません。そのため、Red Hat アカウントにアタッチする前に、他のユーザーが AWS アカウントへのアクセスを必要としていないことを確認してください。
手順
- Gold Image を AWS にアップロードします。手順については、Uploading the Red Hat Enterprise Linux image to AWS を参照してください。
- アップロードされたイメージを使用して仮想マシンを作成します。自動的に RHSM に登録されます。
検証
上記の手順で作成した RHEL 9 仮想マシンで、
subscription-manager identityコマンドを実行して、システムが RHSM に登録されていることを確認します。登録に成功したシステムでは、システムの UUID が表示されます。以下に例を示します。subscription-manager identity system identity: fdc46662-c536-43fb-a18a-bbcb283102b7 name: 192.168.122.222 org name: 6340056 org ID: 6340056
# subscription-manager identity system identity: fdc46662-c536-43fb-a18a-bbcb283102b7 name: 192.168.122.222 org name: 6340056 org ID: 6340056Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 AWS での Red Hat High Availability クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
ノード障害が発生した場合に RHEL ノードがワークロードを自動的に再分配するクラスターを作成するには、Red Hat High Availability Add-On を使用します。このような高可用性 (HA) クラスターは、AWS などのパブリッククラウドプラットフォームでもホストできます。AWS 上で RHEL HA クラスターを作成することは、非クラウド環境で HA クラスターを作成するのと似ています。
EC2 インスタンスをクラスターノードとして使用して Amazon Web Services (AWS) 上に Red Hat HA クラスターを設定するには、次のセクションを参照してください。クラスターに使用する Red Hat Enterprise Linux (RHEL) イメージを取得するオプションは複数あることに注意してください。AWS のイメージオプションの詳細は、AWS での Red Hat Enterprise Linux Image オプション を参照してください。
前提条件
- Red Hat カスタマーポータル のアカウントに登録している。
- AWS にサインアップして、AWS リソースを設定します。詳細は Setting Up with Amazon EC2 を参照してください。
4.1. パブリッククラウドプラットフォームで高可用性クラスターを使用する利点 リンクのコピーリンクがクリップボードにコピーされました!
高可用性 (HA) クラスターは、特定のワークロードを実行するためにリンクされた一連のコンピューター (ノード と呼ばれます) です。HA クラスターの目的は、ハードウェアまたはソフトウェア障害が発生した場合に備えて、冗長性を提供することです。HA クラスター内のノードに障害が発生しても、Pacemaker クラスターリソースマネージャーがワークロードを他のノードに分散するため、クラスター上で実行されているサービスに顕著なダウンタイムが発生することはありません。
HA クラスターはパブリッククラウドプラットフォームで実行することもできます。この場合、クラウド内の仮想マシン (VM) インスタンスを個々のクラスターノードとして使用します。パブリッククラウドプラットフォームで HA クラスターを使用すると、次の利点があります。
- 可用性の向上: VM に障害が発生した場合、ワークロードがすぐに他のノードに再分散されるため、実行中のサービスが中断されません。
- スケーラビリティー: 需要が高いときに追加のノードを起動し、需要が低いときにノードを停止することができます。
- 費用対効果: 従量課金制の料金設定では、実行中のノードに対して料金を支払うだけで済みます。
- 管理の簡素化: 一部のパブリッククラウドプラットフォームでは、HA クラスターの設定を容易にする管理インターフェイスが提供されています。
Red Hat Enterprise Linux (RHEL) システムで HA を有効にするために、Red Hat は High Availability Add-On を提供しています。High Availability Add-On は、RHEL システム上で HA クラスターを作成するために必要なすべてのコンポーネントを提供します。コンポーネントには、高可用性サービス管理ツールとクラスター管理ツールが含まれます。
4.2. AWS アクセスキーおよび AWS シークレットアクセスキーの作成 リンクのコピーリンクがクリップボードにコピーされました!
AWS CLI をインストールする前に、AWS アクセスキーおよび AWS シークレットアクセスキーを作成する必要があります。フェンシングおよびリソースエージェントの API は AWS アクセスキーおよびシークレットアクセスキーを使用してクラスター内の各ノードに接続します。
前提条件
- IAM ユーザーアカウントに Programmatic アクセスがある。詳細は、Setting up the AWS Environment を参照してください。
手順
- AWS コンソール を起動します。
- AWS アカウント ID をクリックしてドロップダウンメニューを表示し、My Security Credentials を選択します。
- Users をクリックします。
- ユーザーを選択し、Summary 画面を開きます。
- Security credentials タブをクリックします。
- Create access key をクリックします。
-
.csvファイルをダウンロード (または両方の鍵を保存) します。フェンスデバイスの作成時に、この鍵を入力する必要があります。
4.3. AWS CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
AWS で HA クラスターを管理するために必要な手順の多くには、AWS CLI の使用が含まれます。
前提条件
- AWS アクセスキー ID および AWS シークレットアクセスキーを作成し、それらにアクセスできるようになりました。手順と詳細は、AWS CLI のクイック設定 を参照してください。
手順
dnfコマンドを使用して AWS コマンドラインツール をインストールします。dnf install awscli
# dnf install awscliCopy to Clipboard Copied! Toggle word wrap Toggle overflow aws --versionコマンドを使用して、AWS CLI をインストールしたことを確認します。aws --version aws-cli/1.19.77 Python/3.6.15 Linux/5.14.16-201.fc34.x86_64 botocore/1.20.77
$ aws --version aws-cli/1.19.77 Python/3.6.15 Linux/5.14.16-201.fc34.x86_64 botocore/1.20.77Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS アクセスの詳細に従って、AWS コマンドラインクライアントを設定します。
aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4. HA EC2 インスタンスの作成 リンクのコピーリンクがクリップボードにコピーされました!
HA クラスターノードとして使用するインスタンスを作成するには、以下の手順を実施します。クラスターに使用する RHEL イメージを取得するオプションは複数あることに注意してください。AWS のイメージオプションに関する詳細は、AWS の Red Hat Enterprise Linux Image オプション を参照してください。
クラスターノードに使用するカスタムイメージを作成してアップロードすることも、Gold Image やオンデマンドイメージを使用することもできます。
前提条件
- AWS 環境をセットアップしている。詳細は、Setting Up with Amazon EC2 を参照してください。
手順
- AWS EC2 Dashboard から、Images を選択して、AMI を選択します。
- イメージを右クリックして、Launch を選択します。
ワークロードの要件を満たす、もしくは超過する Instance Type を選択します。HA アプリケーションによっては、各インスタンスの容量を増やす必要がある場合があります。
インスタンスタイプの詳細は、Amazon EC2 Instance Types を参照してください。
Next:Configure Instance Details をクリックします。
クラスターを作成する インスタンス数 を入力します。この例の手順では、3 つのクラスターノードを使用します。
注記自動スケーリンググループでは起動しないでください。
- ネットワーク の場合は、Set up the AWS environment で作成した VPC を選択します。新規サブネットを作成するインスタンスのサブネットを選択します。
自動割り当てパブリック IP では、Enable を選択します。Configure Instance Details に必要な最小限の選択です。特定の HA アプリケーションによっては、追加の選択が必要になる場合があります。
注記これらは、基本インスタンスの作成に必要な最小限の設定オプションです。HA アプリケーション要件に応じて追加オプションを確認します。
- Next: Add Storage をクリックし、デフォルトのストレージが十分であることを確認します。HA アプリケーションに他のストレージオプションが必要でない限り、これらの設定を変更する必要はありません。
Next: Add Tags をクリックします。
注記タグを使用すると、AWS リソースの管理に役立ちます。タグ付けの詳細は、Tagging Your Amazon EC2 Resources を参照してください。
- Next:Configure Security Group をクリックします。Setting up the AWS environment で作成した既存のセキュリティーグループを選択します。
- Review and Launch をクリックし、選択を確認します。
- Launch をクリックします。既存の鍵のペアの選択、または新しい鍵のペアの作成に関するダイアログが表示されます。AWS 環境でのセットアップ 時に作成した鍵のペアを選択します。
- Launch Instances をクリックします。
View Instances をクリックします。インスタンスに名前を付けることができます。
注記または、AWS CLI を使用してインスタンスを起動することもできます。詳細は、Amazon 社のドキュメントの Launching, Listing, and Terminating Amazon EC2 Instances を参照してください。
4.5. 秘密鍵の設定 リンクのコピーリンクがクリップボードにコピーされました!
プライベート SSH キーファイル (.pem) を使用するための以下の設定タスクを完了してからではない、SSH セッションで使用できません。
手順
-
キーファイルを
Downloadsディレクトリーからホームディレクトリーまたは~/.ssh ディレクトリーに移動します。 root ユーザーのみが読み取れるように、キーファイルのアクセス許可を変更します。
chmod 400 KeyName.pem
# chmod 400 KeyName.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.6. EC2 インスタンスへの接続 リンクのコピーリンクがクリップボードにコピーされました!
すべてのノードで AWS コンソール を使用して、EC2 インスタンスに接続できます。
手順
- AWS コンソール を起動し、EC2 インスタンスを選択します。
- Connect をクリックし、A standalone SSH client を選択します。
-
SSH 端末セッションから、ポップアップウィンドウで提供される AWS の例を使用してインスタンスに接続します。パスが例に表示されていない場合は、正しいパスを
KeyName.pemファイルに追加します。
4.7. 高可用性パッケージおよびエージェントのインストール リンクのコピーリンクがクリップボードにコピーされました!
AWS 上で Red Hat High Availability クラスターを設定できるようにするには、各ノードに高可用性パッケージとエージェントをインストールする必要があります。
手順
AWS Red Hat Update Infrastructure (RHUI) クライアントを削除します。
sudo -i dnf -y remove rh-amazon-rhui-client*
$ sudo -i # dnf -y remove rh-amazon-rhui-client*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想マシンを Red Hat に登録します。
subscription-manager register --auto-attach
# subscription-manager register --auto-attachCopy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのリポジトリーを無効にします。
subscription-manager repos --disable=*
# subscription-manager repos --disable=*Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL9 サーバーの HA リポジトリーを有効にします。
subscription-manager repos --enable=rhel-9-for-x86_64-highavailability-rpms
# subscription-manager repos --enable=rhel-9-for-x86_64-highavailability-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL AWS インスタンスを更新します。
dnf update -y
# dnf update -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow High Availability チャネルから、Red Hat High Availability Add-On ソフトウェアパッケージと AWS フェンスエージェントをインストールします。
dnf install pcs pacemaker fence-agents-aws
# dnf install pcs pacemaker fence-agents-awsCopy to Clipboard Copied! Toggle word wrap Toggle overflow haclusterユーザーは、前の手順でpcsおよびpacemakerのインストール時に作成されました。すべてのクラスターノードにhaclusterのパスワードを作成します。すべてのノードに同じパスワードを使用します。passwd hacluster
# passwd haclusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow firewalld.serviceがインストールされている場合は、RHEL ファイアウォールに高可用性サービスを追加します。firewall-cmd --permanent --add-service=high-availability firewall-cmd --reload
# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow pcsサービスを起動し、システムの起動時に開始できるようにします。systemctl start pcsd.service systemctl enable pcsd.service
# systemctl start pcsd.service # systemctl enable pcsd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
/etc/hostsを編集し、RHEL ホスト名と内部 IP アドレスを追加します。詳細は、Red Hat ナレッジベースソリューション How should the /etc/hosts file be set up on RHEL cluster nodes? を参照してください。
検証
pcsサービスが実行していることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.8. クラスターの作成 リンクのコピーリンクがクリップボードにコピーされました!
ノードのクラスターを作成するには、以下の手順を実施します。
手順
ノードのいずれかで以下のコマンドを実行し、pcs ユーザー
haclusterを認証します。コマンドで、クラスター内の各ノードの名前を指定します。pcs host auth <hostname1> <hostname2> <hostname3>
# pcs host auth <hostname1> <hostname2> <hostname3>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターを作成します。
pcs cluster setup <cluster_name> <hostname1> <hostname2> <hostname3>
# pcs cluster setup <cluster_name> <hostname1> <hostname2> <hostname3>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
クラスターを有効にします。
pcs cluster enable --all node02: Cluster Enabled node03: Cluster Enabled node01: Cluster Enabled
[root@node01 clouduser]# pcs cluster enable --all node02: Cluster Enabled node03: Cluster Enabled node01: Cluster EnabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターを起動します。
pcs cluster start --all node02: Starting Cluster... node03: Starting Cluster... node01: Starting Cluster...
[root@node01 clouduser]# pcs cluster start --all node02: Starting Cluster... node03: Starting Cluster... node01: Starting Cluster...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.9. フェンシングの設定 リンクのコピーリンクがクリップボードにコピーされました!
フェンシング設定により、AWS クラスター上の誤動作しているノードが自動的に分離され、ノードがクラスターのリソースを消費したり、クラスターの機能が損なわれたりするのを防ぎます。
AWS クラスターでフェンシングを設定するには、複数の方法を使用できます。
- デフォルト設定の標準手順。
- 自動化に焦点を当てた、より高度な設定のための代替設定手順。
前提条件
-
fence_awsフェンスエージェントを使用している。fence_awsを取得するには、クラスターにresource-agentsパッケージをインストールします。
標準手順
以下の AWS メタデータクエリーを入力し、各ノードのインスタンス ID を取得します。フェンスデバイスを設定するには、これらの ID が必要です。詳細は Instance Metadata and User Data を参照してください。
echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id)
# echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id) i-07f1ac63af0ec0ac6
[root@ip-10-0-0-48 ~]# echo $(curl -s http://169.254.169.254/latest/meta-data/instance-id) i-07f1ac63af0ec0ac6Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行して、フェンスデバイスを設定します。
pcmk_host_mapコマンドを使用して、RHEL ホスト名をインスタンス ID にマッピングします。以前に設定した AWS アクセスキーおよび AWS シークレットアクセスキーを使用します。pcs stonith \ create <name> fence_aws access_key=access-key secret_key=<secret-access-key> \ region=<region> pcmk_host_map="rhel-hostname-1:Instance-ID-1;rhel-hostname-2:Instance-ID-2;rhel-hostname-3:Instance-ID-3" \ power_timeout=240 pcmk_reboot_timeout=480 pcmk_reboot_retries=4# pcs stonith \ create <name> fence_aws access_key=access-key secret_key=<secret-access-key> \ region=<region> pcmk_host_map="rhel-hostname-1:Instance-ID-1;rhel-hostname-2:Instance-ID-2;rhel-hostname-3:Instance-ID-3" \ power_timeout=240 pcmk_reboot_timeout=480 pcmk_reboot_retries=4Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
pcs stonith \ create clusterfence fence_aws access_key=AKIAI123456MRMJA secret_key=a75EYIG4RVL3hdsdAslK7koQ8dzaDyn5yoIZ/ \ region=us-east-1 pcmk_host_map="ip-10-0-0-48:i-07f1ac63af0ec0ac6;ip-10-0-0-46:i-063fc5fe93b4167b2;ip-10-0-0-58:i-08bd39eb03a6fd2c7" \ power_timeout=240 pcmk_reboot_timeout=480 pcmk_reboot_retries=4
[root@ip-10-0-0-48 ~]# pcs stonith \ create clusterfence fence_aws access_key=AKIAI123456MRMJA secret_key=a75EYIG4RVL3hdsdAslK7koQ8dzaDyn5yoIZ/ \ region=us-east-1 pcmk_host_map="ip-10-0-0-48:i-07f1ac63af0ec0ac6;ip-10-0-0-46:i-063fc5fe93b4167b2;ip-10-0-0-58:i-08bd39eb03a6fd2c7" \ power_timeout=240 pcmk_reboot_timeout=480 pcmk_reboot_retries=4Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 即時かつ完全なフェンシングを確実に行うために、すべてのクラスターノードで ACPI Soft-Off を無効にします。ACPI Soft-Off を無効にする方法については、統合フェンスデバイスで使用する ACPI の無効化 を参照してください。
別の手順
クラスターの VPC ID を取得します。
aws ec2 describe-vpcs --output text --filters "Name=tag:Name,Values=<clustername>-vpc" --query 'Vpcs[*].VpcId' vpc-06bc10ac8f6006664
# aws ec2 describe-vpcs --output text --filters "Name=tag:Name,Values=<clustername>-vpc" --query 'Vpcs[*].VpcId' vpc-06bc10ac8f6006664Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターの VPC ID を使用して、VPC インスタンスを取得します。
aws ec2 describe-instances --output text --filters "Name=vpc-id,Values=vpc-06bc10ac8f6006664" --query 'Reservations[*].Instances[*].{Name:Tags[? Key==Name]|[0].Value,Instance:InstanceId}' | grep "\-node[a-c]" i-0b02af8927a895137 <clustername>-nodea-vm i-0cceb4ba8ab743b69 <clustername>-nodeb-vm i-0502291ab38c762a5 <clustername>-nodec-vm$ aws ec2 describe-instances --output text --filters "Name=vpc-id,Values=vpc-06bc10ac8f6006664" --query 'Reservations[*].Instances[*].{Name:Tags[? Key==Name]|[0].Value,Instance:InstanceId}' | grep "\-node[a-c]" i-0b02af8927a895137 <clustername>-nodea-vm i-0cceb4ba8ab743b69 <clustername>-nodeb-vm i-0502291ab38c762a5 <clustername>-nodec-vmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 取得したインスタンス ID を使用して、クラスター上の各ノードでフェンシングを設定します。たとえば、クラスター内のすべてのノードでフェンスデバイスを設定するには、次のようにします。
CLUSTER=<clustername> && pcs stonith create fence${CLUSTER} fence_aws access_key=XXXXXXXXXXXXXXXXXXXX pcmk_host_map=$(for NODE \ in node{a..c}; do ssh ${NODE} "echo -n \${HOSTNAME}:\$(curl -s http://169.254.169.254/latest/meta-data/instance-id)\;"; done) \ pcmk_reboot_retries=4 pcmk_reboot_timeout=480 power_timeout=240 region=xx-xxxx-x secret_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX[root@nodea ~]# CLUSTER=<clustername> && pcs stonith create fence${CLUSTER} fence_aws access_key=XXXXXXXXXXXXXXXXXXXX pcmk_host_map=$(for NODE \ in node{a..c}; do ssh ${NODE} "echo -n \${HOSTNAME}:\$(curl -s http://169.254.169.254/latest/meta-data/instance-id)\;"; done) \ pcmk_reboot_retries=4 pcmk_reboot_timeout=480 power_timeout=240 region=xx-xxxx-x secret_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXCopy to Clipboard Copied! Toggle word wrap Toggle overflow フェンスデバイスを作成するための特定のパラメーターは、
fence_awsの man ページまたは 高可用性クラスターの設定と管理 ガイドを参照してください。- 即時かつ完全なフェンシングを確実に行うために、すべてのクラスターノードで ACPI Soft-Off を無効にします。ACPI Soft-Off を無効にする方法については、統合フェンスデバイスで使用する ACPI の無効化 を参照してください。
検証
ノードに設定されているフェンスデバイスとそのパラメーターを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターノードのいずれかに対してフェンスエージェントをテストします。
pcs stonith fence <awsnodename>
# pcs stonith fence <awsnodename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記コマンドの応答が表示されるまで数分かかる場合があります。フェンシングしているノードのアクティブな端末セッションを確認する場合は、fence コマンドを入力すると、端末の接続がすぐに終了するようになります。
以下に例を示します。
pcs stonith fence ip-10-0-0-58 Node: ip-10-0-0-58 fenced
[root@ip-10-0-0-48 ~]# pcs stonith fence ip-10-0-0-58 Node: ip-10-0-0-58 fencedCopy to Clipboard Copied! Toggle word wrap Toggle overflow ステータスを確認して、ノードがフェンスされていることを確認します。
pcs status
# pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前の手順でフェンシングされたノードを起動します。
pcs cluster start <awshostname>
# pcs cluster start <awshostname>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ステータスを確認して、ノードが起動したことを確認します。
pcs status
# pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.10. クラスターノードへの AWS CLI のインストール リンクのコピーリンクがクリップボードにコピーされました!
以前のバージョンでは、AWS CLI をホストシステムにインストールしていました。ネットワークリソースエージェントを設定する前に、クラスターノードに AWS CLI をインストールする必要があります。
各クラスターノードで以下の手順を実行します。
前提条件
- AWS アクセスキーおよび AWS シークレットアクセスキーを作成している。詳細は、AWS アクセスキーおよび AWS シークレットアクセスキーの作成 を参照してください。
手順
- AWS CLI をインストールしている。手順については、Installing the AWS CLI を参照してください。
AWS CLI が正しく設定されていることを確認します。インスタンス ID およびインスタンス名が表示されます。
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.11. AWS での IP アドレスリソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
フェイルオーバーが発生した場合でも、ネットワーク経由でクラスターに管理されるリソースに IP アドレスを使用してアクセスするクライアントがリソースにアクセスできるようにするには、特定のネットワークリソースエージェントを使用する IP アドレスリソース をクラスターに含める必要があります。
RHEL HA アドオンは、AWS 上のさまざまな種類の IP アドレスを管理するための IP アドレスリソースを作成するリソースエージェントのセットを提供します。どのリソースエージェントを設定するかを決定するには、HA クラスターで管理する AWS IP アドレスのタイプを考慮してください。
-
インターネットに公開されている IP アドレスを管理する必要がある場合は、
awseipネットワークリソースを使用 します。 -
単一の AWS アベイラビリティーゾーン (AZ) に制限されたプライベート IP アドレスを管理する必要がある場合は、
awsvipおよびIPaddr2ネットワークリソースを使用します。 -
同じ AWS リージョン内の複数の AWS AZ 間で移動できる IP アドレスを管理する必要がある場合は、
aws-vpc-move-ipネットワークリソースを使用 します。
HA クラスターが IP アドレスを管理しない場合は、AWS 上の仮想 IP アドレスを管理するためのリソースエージェントは必要ありません。特定のデプロイメントに関する詳細なガイダンスが必要な場合は、AWS プロバイダーにご相談ください。
4.11.1. インターネットに公開されている IP アドレスを管理するための IP アドレスリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
高可用性 (HA) クライアントがパブリックインターネット接続を使用する RHEL 9 ノードにアクセスできるようにするには、Elastic IP アドレスを使用するように AWS セカンダリー Elastic IP アドレス (awseip) リソースを設定します。
前提条件
- 以前に設定されたクラスターがある。
- クラスターノードが RHEL HA リポジトリーにアクセスできる。詳細は、高可用性パッケージとエージェントのインストール を参照してください。
- AWS CLI を設定している。手順については、Installing the AWS CLI を参照してください。
手順
resource-agents-cloudパッケージをインストールします。dnf install resource-agents-cloud
# dnf install resource-agents-cloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow AWS コマンドラインインターフェイス (CLI) を使用して、Elastic IP アドレスを作成します。
aws ec2 allocate-address --domain vpc --output text eipalloc-4c4a2c45 vpc 35.169.153.122
[root@ip-10-0-0-48 ~]# aws ec2 allocate-address --domain vpc --output text eipalloc-4c4a2c45 vpc 35.169.153.122Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
awseipの詳細を表示します。これは、このエージェントのオプションとデフォルトの操作を示しています。pcs resource describe awseip
# pcs resource describe awseipCopy to Clipboard Copied! Toggle word wrap Toggle overflow AWS CLI を使用して以前に指定した割り当て済み IP アドレスを使用するセカンダリー Elastic IP アドレスリソースを作成します。さらに、セカンダリー Elastic IP アドレスが属するリソースグループを作成します。
pcs resource create <resource-id> awseip elastic_ip=<Elastic-IP-Address> allocation_id=<Elastic-IP-Association-ID> --group networking-group
# pcs resource create <resource-id> awseip elastic_ip=<Elastic-IP-Address> allocation_id=<Elastic-IP-Association-ID> --group networking-groupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
pcs resource create elastic awseip elastic_ip=35.169.153.122 allocation_id=eipalloc-4c4a2c45 --group networking-group
# pcs resource create elastic awseip elastic_ip=35.169.153.122 allocation_id=eipalloc-4c4a2c45 --group networking-groupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
クラスターのステータスを表示して、必要なリソースが実行していることを確認します。
pcs status
# pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の出力は、
vipリソースおよびelasticリソースがnetworking-groupリソースグループの一部として起動されている実行中のクラスターの例を示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ローカルワークステーションから、上で作成した Elastic IP アドレスへの SSH セッションを開始します。
ssh -l <user-name> -i ~/.ssh/<KeyName>.pem <elastic-IP>
$ ssh -l <user-name> -i ~/.ssh/<KeyName>.pem <elastic-IP>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
ssh -l ec2-user -i ~/.ssh/cluster-admin.pem 35.169.153.122
$ ssh -l ec2-user -i ~/.ssh/cluster-admin.pem 35.169.153.122Copy to Clipboard Copied! Toggle word wrap Toggle overflow - SSH 経由で接続したホストが、作成された elastic リソースに関連付けられているホストであることを確認します。
4.11.2. 単一の AWS アベイラビリティーゾーンに限定されたプライベート IP アドレスを管理するための IP アドレスリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
AWS 上の高可用性 (HA) クライアントが、単一の AWS アベイラビリティーゾーン (AZ) 内でのみ移動できるプライベート IP アドレスを使用する RHEL 9 ノードにアクセスできるようにするには、仮想 IP アドレスを使用するように AWS セカンダリープライベート IP アドレス (awsvip) リソースを設定します。
クラスター内の任意のノードで次の手順を実行できます。
前提条件
- 以前に設定されたクラスターがある。
- クラスターノードが RHEL HA リポジトリーにアクセスできる。詳細は、高可用性パッケージとエージェントのインストール を参照してください。
- AWS CLI を設定している。手順については、Installing the AWS CLI を参照してください。
手順
resource-agents-cloudパッケージをインストールします。dnf install resource-agents-cloud
# dnf install resource-agents-cloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
awsvipの説明を表示します。これは、このエージェントのオプションとデフォルトの操作を示しています。pcs resource describe awsvip
# pcs resource describe awsvipCopy to Clipboard Copied! Toggle word wrap Toggle overflow VPC CIDRブロック内の未使用のプライベート IP アドレスを使用して、セカンダリープライベート IP アドレスを作成します。さらに、セカンダリープライベート IP アドレスが属するリソースグループを作成します。pcs resource create <resource-id> awsvip secondary_private_ip=<Unused-IP-Address> --group <group-name>
# pcs resource create <resource-id> awsvip secondary_private_ip=<Unused-IP-Address> --group <group-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
pcs resource create privip awsvip secondary_private_ip=10.0.0.68 --group networking-group
[root@ip-10-0-0-48 ~]# pcs resource create privip awsvip secondary_private_ip=10.0.0.68 --group networking-groupCopy to Clipboard Copied! Toggle word wrap Toggle overflow 仮想 IP リソースを作成します。これは、フェンシングされたノードからフェイルオーバーノードに即時に再マッピングできる VPC IP アドレスで、サブネット内のフェンスされたノードの失敗をマスクします。仮想 IP が、前の手順で作成したセカンダリープライベート IP アドレスと同じリソースグループに属していることを確認します。
pcs resource create <resource-id> IPaddr2 ip=<secondary-private-IP> --group <group-name>
# pcs resource create <resource-id> IPaddr2 ip=<secondary-private-IP> --group <group-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に例を示します。
root@ip-10-0-0-48 ~]# pcs resource create vip IPaddr2 ip=10.0.0.68 --group networking-group
root@ip-10-0-0-48 ~]# pcs resource create vip IPaddr2 ip=10.0.0.68 --group networking-groupCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
クラスターのステータスを表示して、必要なリソースが実行していることを確認します。
pcs status
# pcs statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の出力は、
vipおよびprivipリソースがnetworking-groupリソースグループの一部として起動している実行中のクラスターの例を示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.11.3. 複数の AWS アベイラビリティーゾーン間で移動できる IP アドレスを管理するための IP アドレスリソースの作成 リンクのコピーリンクがクリップボードにコピーされました!
AWS 上の高可用性 (HA) クライアントが、同じ AWS リージョン内の複数の AWS アベイラビリティーゾーン間で移動できる RHEL 9 ノードにアクセスできるようにするには、aws-vpc-move-ip リソースを設定して、Elastic IP アドレスを使用します。
前提条件
- 以前に設定されたクラスターがある。
- クラスターノードが RHEL HA リポジトリーにアクセスできる。詳細は、高可用性パッケージとエージェントのインストール を参照してください。
- AWS CLI を設定している。手順については、Installing the AWS CLI を参照してください。
アイデンティティーおよびアクセス管理 (IAM) ユーザーがクラスターに設定されており、次の権限を持ちます。
- ルーティングテーブルを変更する
- セキュリティーグループを作成する
- IAM ポリシーとロールを作成する
手順
resource-agents-cloudパッケージをインストールします。dnf install resource-agents-cloud
# dnf install resource-agents-cloudCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション:
aws-vpc-move-ipの説明を表示します。これは、このエージェントのオプションとデフォルトの操作を示しています。pcs resource describe aws-vpc-move-ip
# pcs resource describe aws-vpc-move-ipCopy to Clipboard Copied! Toggle word wrap Toggle overflow IAM ユーザーに対して
OverlayIPAgentIAM ポリシーを設定します。-
AWS コンソールで、Services → IAM → Policies → Create
OverlayIPAgentPolicy に移動します。 次の設定を入力し、<region>、<account-id>、および <ClusterRouteTableID> の値をクラスターに合わせて変更します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
AWS コンソールで、Services → IAM → Policies → Create
AWS コンソールで、クラスター内のすべてのノードの
Source/Destination Check機能を無効にします。これを行うには、各ノードを右クリックして、Networking → Change Source/Destination Checks を選択します。表示されるポップアップメッセージで、Yes, Disable をクリックします。
クラスターのルートテーブルを作成します。これを行うには、クラスター内の 1 つのノードで次のコマンドを使用します。
aws ec2 create-route --route-table-id <ClusterRouteTableID> --destination-cidr-block <NewCIDRblockIP/NetMask> --instance-id <ClusterNodeID>
# aws ec2 create-route --route-table-id <ClusterRouteTableID> --destination-cidr-block <NewCIDRblockIP/NetMask> --instance-id <ClusterNodeID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドでは、値を次のように置き換えます。
-
ClusterRouteTableID: 既存のクラスター VPC ルートテーブルのルートテーブル ID。 -
NewCIDRblockIP/NetMask: VPC Classless Inter-Domain Routing (CIDR) ブロック外の新しい IP アドレスとネットマスク。たとえば、VPC CIDR ブロックが172.31.0.0/16の場合、新しい IP アドレス/ネットマスクは192.168.0.15/32になります。 -
ClusterNodeID: クラスター内の別のノードのインスタンス ID。
-
クラスター内のノードの 1 つで、クライアントがアクセスできる空き IP アドレスを使用する
aws-vpc-move-ipリソースを作成します。次の例では、IP192.168.0.15を使用するvpcipという名前のリソースを作成します。pcs resource create vpcip aws-vpc-move-ip ip=192.168.0.15 interface=eth0 routing_table=<ClusterRouteTableID>
# pcs resource create vpcip aws-vpc-move-ip ip=192.168.0.15 interface=eth0 routing_table=<ClusterRouteTableID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター内のすべてのノードで、
/etc/hosts/ファイルを編集し、新しく作成されたリソースの IP アドレスを含む行を追加します。以下に例を示します。192.168.0.15 vpcip
192.168.0.15 vpcipCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
新しい
aws-vpc-move-ipリソースのフェイルオーバー機能をテストします。pcs resource move vpcip
# pcs resource move vpcipCopy to Clipboard Copied! Toggle word wrap Toggle overflow フェイルオーバーが成功した場合は、
vpcipリソースの移動後に自動的に作成された制約を削除します。pcs resource clear vpcip
# pcs resource clear vpcipCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 パブリッククラウドプラットフォーム上の RHEL 用 OpenTelemetry Collector の設定 リンクのコピーリンクがクリップボードにコピーされました!
Amazon Web Services (AWS) で RHEL を実行する場合、OpenTelemetry (OTel) フレームワークを使用して RHEL インスタンスを保守およびデバッグできます。
RHEL には、ログの管理に使用できる OTel Collector サービスが含まれています。OTel Collector は、さまざまな形式および外部バックエンド間でログを収集、処理、変換、エクスポートします。OTel Collector を使用して収集したデータを集約し、分析サービスに役立つメトリクスを生成することもできます。
5.1. OpenTelemetry Collector の仕組み リンクのコピーリンクがクリップボードにコピーされました!
AWS 上の RHEL の場合、RHEL インスタンスと AWS テレメトリー分析サービス間でログを受信、処理、エクスポートするように OTel Collector サービスを設定し、RHEL インスタンス上のテレメトリーデータを自動的に管理できます。OTel Collector は OTel エコシステムのコンポーネントです。OTel Collector のワークフローには、レシーバー、プロセッサー、エクスポーターの 3 つの段階があります。
お客様のユースケースに基づいて、YAML ファイルでこれらの要素のワークフローを設定できます。通常、OTel Collector は次のように動作します。
- レシーバー が、アプリケーションやサービスなどのデータソースからテレメトリーデータを収集します。
- レシーバーがデータを取り込んだ後、データは処理フェーズに渡されます。そのフェーズで、データを変換するための プロセッサー のチェーンが定義される場合があります。
- エクスポーター がテレメトリーデータを必要な宛先に送信します。
5.2. OpenTelemetry と AWS CloudWatch Logs の統合 リンクのコピーリンクがクリップボードにコピーされました!
ログ管理のために OTel を Amazon Web Services (AWS) と統合するには、ログのエクスポーターとして AWS 上の RHEL を使用するように OTel Collector を設定する必要があります。設定の手順は次のとおりです。
- OTel Collector のエクスポーターを設定する
- ログ接続を有効にする
- RHEL インスタンスから AWS CloudWatch Logs にデータをエクスポートする
その結果、さまざまなソースからのログデータを 1 カ所に集めて、ログ分析を効率的に管理できるようになります。
現在、RHEL インスタンスは、AWS CloudWatch の利用可能な機能のうちロギングのみをサポートしています。詳細は、AWS Cloudwatch Logs エクスポーター を参照してください。
5.3. journald ロギング用の OpenTelemetry Collector の設定 リンクのコピーリンクがクリップボードにコピーされました!
OpenTelemetry (OTel) Collector を設定するには、journald サービスログを収集するための filelog レシーバーのデフォルト設定を変更する必要があります。この設定には、ファイルパス、ログ形式、および解析ルールの定義が含まれています。この設定により、コレクターでログを処理して AWS CloudWatch Logs などのサービスにエクスポートすることで、システムコンポーネントの可観測性とメトリクス分析が向上します。
手順
RHEL インスタンスに
opentelemetry-collectorパッケージをインストールします。dnf install -y opentelemetry-collector
# dnf install -y opentelemetry-collectorCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL インスタンスから AWS CloudWatch Logs にログを転送するサービスを有効にして起動します。
systemctl enable --now opentelemetry-collector.service
# systemctl enable --now opentelemetry-collector.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL インスタンスから
journaldログを転送するように OTel Collector を設定するために、/etc/opentelemetry-collector/configs/10-cloudwatch-exporter.yamlファイルを作成して編集します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow OTel Collector サービスを再起動します。
systemctl restart opentelemetry-collector.service
# systemctl restart opentelemetry-collector.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - AWS コンソールから AWS CloudWatch エージェント用の IAM ロールを作成します。手順については、Create IAM roles and users for use with the CloudWatch agent を参照してください。
- AWS コンソールから RHEL インスタンスにロールを割り当てます。手順については、Attach an IAM role to an instance を参照してください。
- AWS コンソールから RHEL インスタンスを再起動して、ログのエクスポートを自動的に有効にします。
オプション: ログをエクスポートする必要がなくなった場合は、RHEL インスタンスからのログ転送を停止します。
systemctl stop opentelemetry-collector.service
# systemctl stop opentelemetry-collector.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: このサービスが不要になった場合は、ログ転送を永続的に無効にします。
systemctl disable opentelemetry-collector.service
# systemctl disable opentelemetry-collector.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. OTel Collector のレシーバー リンクのコピーリンクがクリップボードにコピーされました!
レシーバーは、可観測性を高めるために、ログやソフトウェアの使用パターンなどのテレメトリーベースのデータを、さまざまなデバイスやサービスから設定に応じて 1 カ所で収集します。
journald レシーバー
OTel Collector の journald レシーバーは、journald サービスからログをキャプチャーします。このレシーバーは、可観測性を高めるために、カーネル、ユーザー、アプリケーションからのログなど、システムおよびアプリケーションサービスからのログを受け取ります。バイナリーストレージなどの属性に journald ロギングを使用すると、インデックス作成の高速化、ユーザーベースの権限付与、ログサイズ管理が可能になります。
詳細は、Journald レシーバー の config オプションを参照してください。
5.5. OTel Collector のプロセッサー リンクのコピーリンクがクリップボードにコピーされました!
プロセッサーは、receiver と exporter の間の仲介役として機能し、フィールドの追加、フィルタリング、削除、変換などによってデータを操作します。プロセッサーの選択と順序はシグナルのタイプによって異なります。
AWS 環境のリソース検出
リソース検出プロセッサーは、プロセッサーのリストを収集し、管理対象環境に関する情報を検出します。エクスポート前にテレメトリーデータの詳細を管理します。
スニペットについては、AWS EC2 の設定 参照してください。
5.6. OTel Collector のエクスポーター リンクのコピーリンクがクリップボードにコピーされました!
エクスポーターは、設定とシグナルのタイプに基づいて、処理されたデータを AWS CloudWatch Logs やデバッグエクスポーターなどの指定デバイスまたはサービスに送信します。エクスポーターは、対象サービスとの互換性を確保し、さまざまなシステムとの統合を容易にします。
AWS CloudWatch Logs エクスポーター
記載されている設定は、現在ログタイプのシグナルのみをサポートしていることに注意してください。通常、次のように動作します。
- レシーバーがログを OTel Collector に送信します。
- プロセッサーが、エクスポートに向けた変更または拡張の観点からログを処理します。
-
awscloudwatchlogs設定が、処理されたテレメトリーを AWS CloudWatch Logs に送信します。
詳細は、以下を参照してください。
さらに、コレクターは、機密データをフィルタリングし、メモリー使用量を制限し、接続が失われた場合に備えてテレメトリーデータを一定期間ディスク上に保持するための拡張機能とプロセッサーを提供します。
デバッグエクスポーター
デバッグエクスポーターは、トレースとメトリクスを標準出力に出力します。このエクスポーターはすべてのシグナルタイプをサポートしていることに注意してください。OTel Collector YAML 設定を変更すると、コンソールエクスポーターを追加できます。これにより、テレメトリーデータがコンソールに出力されます。また、journald で出力を収集するために、必要に応じてレシーバーサービスを設定することもできます。
詳細は、デバッグエクスポーター を参照してください。
第6章 セキュアブートを使用した AWS での RHEL の設定 リンクのコピーリンクがクリップボードにコピーされました!
Secure Boot は、システムの起動時にプログラムの実行を制御する UEFI (Unified Extensible Firmware Interface)仕様のメカニズムです。Secure Boot は、起動時にブートローダーとそのコンポーネントのデジタル署名を検証し、信頼され承認されたプログラムのみが実行されるようにし、権限のないプログラムが読み込まれないようにします。この機能は、AWS Marketplace の Red Hat Enterprise Linux Amazon Machine Images (AMI)とカスタム RHEL AMI の両方に使用できます。
6.1. AWS の RHEL AMI の種類 リンクのコピーリンクがクリップボードにコピーされました!
AWS Marketplace RHEL AMI
AWS Marketplace は、データ処理、システム管理、Web 開発などの特定のユースケースに合わせて調整された、事前設定された Red Hat Enterprise Linux (RHEL) Amazon Machine Image (AMI)を提供します。このタイプのすぐに使用できるイメージは、オペレーティングシステムおよびソフトウェアパッケージに必要な手動インストールおよび設定時間を最小限にすることでセットアップを削減します。
カスタム RHEL AMI
カスタム RHEL AMI は、特定のアプリケーションとワークフロー要件を満たす調整された環境を構築およびデプロイするための柔軟性を提供します。カスタム RHEL AMI を作成することで、必要なツール、設定、およびセキュリティーポリシーで事前にインストールされている RHEL インスタンスを使用できます。このカスタマイズは、インフラストラクチャーをより詳細に制御できることを目的としています。
6.2. クラウド上の RHEL のセキュアブートについて リンクのコピーリンクがクリップボードにコピーされました!
Secure Boot は、ブートローダーやカーネルなど、信頼されデジタル署名されたプログラムやコンポーネントのみが起動時に実行されるようにする UEFI (Unified Extensible Firmware Interface)の機能です。Secure Boot は、ハードウェアに保存されている信頼できる鍵に対してデジタル署名を検証し、信頼できないエンティティーに改ざんされているコンポーネントや、信頼できないエンティティーによって署名されているコンポーネントを検出すると、ブートプロセスを中止します。これにより、悪意のあるソフトウェアがオペレーティングシステムを危険にさらすのを防ぎます。
Secure Boot は、信頼できるエンティティーのみがブートチェーンに存在することを保証するため、Confidential Virtual Machine (CVM)の設定に不可欠なコンポーネントです。これは、定義されたインターフェイスを介した特定のデバイスパスへの認証済みアクセスを提供します。これにより、最新の設定のみが使用され、以前の設定も永続的に上書きされます。さらに、Red Hat Enterprise Linux カーネルが Secure Boot を有効にして起動すると、ロックダウン モードになり、信頼できるベンダーが署名したカーネルモジュールのみが読み込まれます。したがって、セキュアブートはオペレーティングシステムのブートシーケンスのセキュリティーを強化します。
6.2.1. セキュアブートのコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
セキュアブートメカニズムは、ファームウェア、署名データベース、暗号化キー、ブートローダー、ハードウェアモジュール、およびオペレーティングシステムで設定されています。以下は、UEFI の信頼できる変数のコンポーネントです。
-
Key Exchange Key database (KEK)- RHEL オペレーティングシステムと VM ファームウェアとの間の信頼を確立する公開鍵の交換です。これらのキーを使用して、許可署名データベース (
db) と禁止署名データベース (dbx) を更新することもできます。 - プラットフォームキーデータベース(PK): 仮想マシンファームウェアとクラウドプラットフォーム間の信頼を確立するための自己署名のシングルキーデータベース。PK は KEK データベースも更新します。
-
許可された署名データベース(
db): バイナリーファイルがシステムで起動できるかどうかをチェックする証明書またはバイナリーハッシュのリストを保持するデータベース。さらに、dbのすべての証明書が RHEL カーネルの.platformキーリングにインポートされます。この機能により、署名されたサードパーティーのカーネルモジュールをロックダウンモードで追加およびロードできます。 -
Forbidden Signature database (
dbx): システムで起動が禁止されている証明書またはバイナリーハッシュのリストを維持するデータベース。
バイナリーファイルは、dbx データベースと Secure Boot Advanced Targeting (SBAT)メカニズムに対してチェックします。SBAT を使用すると、署名されたバイナリーが有効なものとして維持することにより、特定のバイナリーの古いバージョンを取り消すことができます。
6.2.2. Cloud 上の RHEL 用のセキュアブートのステージ リンクのコピーリンクがクリップボードにコピーされました!
RHEL インスタンスが Unified Kernel Image (UKI)モードで起動し、Secure Boot が有効になっている場合、RHEL インスタンスは次の順序でクラウドサービスインフラストラクチャーと対話します。
- 初期化: RHEL インスタンスが起動すると、クラウドでホストされるファームウェアが最初に起動し、セキュアブートメカニズムを実装します。
- 変数 ストアの初期 化:ファームウェアは、変数ストアからの UEFI 変数を初期化します。ファームウェアは、ブートプロセスとランタイム操作のためにファームウェアが管理するために必要な情報用の専用のストレージ領域です。RHEL インスタンスの初回起動時に、ストアは VM イメージに関連付けられたデフォルト値から初期化されます。
ブートローダー: ブートすると、ファームウェアは最初のステージブートローダーを読み込みます。x86 UEFI 環境の RHEL インスタンスの場合、最初のステージブートローダーは shim になります。shim ブートローダーは、ブートプロセスの次の段階を認証および読み込み、UEFI と GRUB 間のブリッジとして機能します。
-
現在、RHEL の shim x86 バイナリーは
Microsoft Corporation UEFI CA 2011Microsoft 証明書によって署名されているため、許可された署名データベース(db)にデフォルトの Microsoft 証明書が含まれているさまざまなハードウェアおよび仮想化プラットフォームで、RHEL インスタンスをセキュアブート対応モードで起動することができます。 -
shim バイナリーは、Red Hat Secure Boot CA を使用して信頼できる証明書の一覧を拡張し、必要に応じてマシン所有者キー(
MOK)を使用します。
-
現在、RHEL の shim x86 バイナリーは
-
UKI: shim バイナリーは RHEL UKI (
kernel-uki-virtパッケージ)を読み込みます。UKI は、対応する証明書(x86_64 アーキテクチャー上のRed Hat Secure Boot Signing 504)により署名されています。これは、redhat-sb-certsパッケージにあります。この証明書は Red Hat Secure Boot CA によって署名されているため、チェックが渡されます。 -
UKI アドオン: UKI
cmdline拡張機能を使用するには、RHEL カーネルは署名をdb、MOK、および shim に同梱されている証明書と照合して、拡張機能がオペレーティングシステムのベンダー RHEL またはユーザーのいずれかによって署名されていることを確認します。
セキュアブートモードで RHEL カーネルを起動すると、ロックダウンモードに なり ます。ロックダウンを 入力 すると、RHEL カーネルが db キーを .platform キーリングに追加し、MOK キーを .machine キーリングに追加します。カーネルビルドプロセス中、kernel-modules-core、kernel-modules、kernel-modules-extra などの標準の RHEL カーネルモジュールは、秘密鍵と公開鍵で設定される一時キーで署名されます。各カーネルビルドが完了すると、秘密鍵はサードパーティーモジュールに署名するために廃止されます。この目的のために、db および MOK からの証明書を使用できます。
6.3. AWS Marketplace でのセキュアブートを使用した RHEL インスタンスの設定 リンクのコピーリンクがクリップボードにコピーされました!
AWS の RHEL インスタンスでセキュアな起動シーケンスがあることを確認するには、セキュアブート を使用します。AWS でセキュアブートサポートを使用して Red Hat Enterprise Linux インスタンスを設定するには、uefi-preferred 対応ブートモードで事前に設定されている AWS Marketplace から RHEL Amazon Machine Image (AMI)を起動します。uefi-preferred オプションを使用すると、セキュアブートに必要な Unified Extensible Firmware Interface (UEFI)ブートローダーのサポートが有効になります。UEFI を使用しない場合、セキュアブート機能は機能しません。
セキュリティーの問題を回避するには、現在の RHEL インスタンスとは別に秘密鍵を生成して保持します。セキュアブートのシークレットが使用されるのと同じインスタンスに保存されている場合、侵入者はシークレットにアクセスして権限を昇格できます。AWS EC2 インスタンスの起動に関する詳細は、Get started with Amazon EC2 を参照してください。
前提条件
RHEL AMI では、ブート設定で
uefi-preferredオプションが有効になっています。aws ec2 describe-images --image-id <ami-099f85fc24d27c2a7> --region <us-east-2> | grep -E '"ImageId"|"Name"|"BootMode"' "ImageId": "ami-099f85fc24d27c2a7", "Name": "RHEL-9.6.0_HVM_GA-20250423-x86_64-0-Hourly2-GP3", "BootMode": "uefi-preferred"
$ aws ec2 describe-images --image-id <ami-099f85fc24d27c2a7> --region <us-east-2> | grep -E '"ImageId"|"Name"|"BootMode"' "ImageId": "ami-099f85fc24d27c2a7", "Name": "RHEL-9.6.0_HVM_GA-20250423-x86_64-0-Hourly2-GP3", "BootMode": "uefi-preferred"Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL インスタンスに以下のパッケージがインストールされている。
-
awscli2 -
python3 -
openssl -
efivar -
keyutils -
edk2-ovmf -
python3-virt-firmware
-
手順
RHEL Marketplace AMI インスタンスのプラットフォームステータスを確認します。
mokutil --sb-state SecureBoot disabled Platform is in Setup Mode
$ mokutil --sb-state SecureBoot disabled Platform is in Setup ModeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 設定モードでは、インスタンス内のセキュアブート UEFI 変数を更新できます。新しいランダムなユニバーサル一意識別子(UUID)を作成し、システム生成のテキストファイルに保存します。
uuidgen --random > GUID.txt
$ uuidgen --random > GUID.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow プラットフォーム鍵データベースの新しい
PK.keyRSA 秘密鍵と自己署名PK.cerX.509 証明書を生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow opensslユーティリティーは、出力形式を Distinguished Encoding Rules (DER)に設定することで、証明書の共通名プラットフォームキーを生成します。鍵交換鍵データベース用の新しい
KEK.keyRSA 秘密鍵と自己署名KEK.cerX.509 証明書を生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow custom
_db.cer カスタム証明書を生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Microsoft Corporation UEFI CA 2011証明書をダウンロードします。wget https://go.microsoft.com/fwlink/p/?linkid=321194 --user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" -O MicCorUEFCA2011_2011-06-27.crt
$ wget https://go.microsoft.com/fwlink/p/?linkid=321194 --user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" -O MicCorUEFCA2011_2011-06-27.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow x64 ビットシステムの禁止署名(
dbx)の更新された UEFI 失効リストファイルをダウンロードします。wget https://uefi.org/sites/default/files/resources/x64_DBXUpdate.bin
$ wget https://uefi.org/sites/default/files/resources/x64_DBXUpdate.binCopy to Clipboard Copied! Toggle word wrap Toggle overflow virt-fw-varsユーティリティーを使用して UEFI 変数ファイルを生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow UEFI 変数を Extensible Firmware Interface (EFI) Signature List (ESL)形式に変換します。
python3 /usr/share/doc/python3-virt-firmware/experimental/authfiles.py \ --input VARS \ --outdir . for f in PK KEK db dbx; do tail -c +41 $f.auth > $f.esl; done
$ python3 /usr/share/doc/python3-virt-firmware/experimental/authfiles.py \ --input VARS \ --outdir . $ for f in PK KEK db dbx; do tail -c +41 $f.auth > $f.esl; doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記各 GUID は割り当てられた値であり、EFI パラメーターを表します
-
8be4df61-93ca-11d2-aa0d-00e098032b8c:EFI_GLOBAL_VARIABLE_GUID -
d719b2cb-3d3a-4596-a3bc-dad00e67656f:EFI_IMAGE_SECURITY_DATABASE_GUID
EFI_GLOBAL_VARIABLE_GUIDパラメーターは、起動可能なデバイスおよびブートマネージャーの設定を維持しますが、EFI_IMAGE_SECURITY_DATABASE_GUIDパラメーターはセキュアブート変数db、dbx、および必要なキーと証明書の保存のイメージセキュリティーデータベースを表します。-
データベース証明書をターゲットインスタンスに転送し、
efivarユーティリティーを使用して UEFI 環境変数を管理します。PK.eslを転送するには、次のコマンドを実行します。efivar -w -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-PK -f PK.esl
# efivar -w -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-PK -f PK.eslCopy to Clipboard Copied! Toggle word wrap Toggle overflow KEK.eslを転送するには、次のコマンドを実行します。efivar -w -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-KEK -f KEK.esl
# efivar -w -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-KEK -f KEK.eslCopy to Clipboard Copied! Toggle word wrap Toggle overflow db.eslを転送するには、次のように入力します。efivar -w -n d719b2cb-3d3a-4596-a3bc-dad00e67656f-db -f db.esl
# efivar -w -n d719b2cb-3d3a-4596-a3bc-dad00e67656f-db -f db.eslCopy to Clipboard Copied! Toggle word wrap Toggle overflow x64 アーキテクチャーの
dbx.eslUEFI 失効リストファイルを転送するには、次のように入力します。efivar -w -n d719b2cb-3d3a-4596-a3bc-dad00e67656f-dbx -f dbx.esl
# efivar -w -n d719b2cb-3d3a-4596-a3bc-dad00e67656f-dbx -f dbx.eslCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- AWS コンソールからインスタンスを再起動します。
検証
セキュアブートが有効になっているかどうかを確認します。
mokutil --sb-state SecureBoot enabled
$ mokutil --sb-state SecureBoot enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow keyctlユーティリティーを使用して、カスタム証明書のカーネルキーリングを確認します。sudo keyctl list %:.platform 4 keys in keyring: 907254483: ---lswrv 0 0 asymmetric: Signature Database key: f064979641c24e1b935e402bdbc3d5c4672a1acc ...
$ sudo keyctl list %:.platform 4 keys in keyring: 907254483: ---lswrv 0 0 asymmetric: Signature Database key: f064979641c24e1b935e402bdbc3d5c4672a1acc ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. カスタム RHEL イメージを使用した Secure Boot での RHEL インスタンスの設定 リンクのコピーリンクがクリップボードにコピーされました!
AWS の RHEL インスタンスでセキュアな起動シーケンスがあることを確認するには、セキュアブート を使用します。カスタム RHEL Amazon マシンイメージ(AMI)を登録すると、イメージは、セキュアブート用の事前保存された Unified Extensible Firmware Interface (UEFI)変数で設定されます。これにより、RHEL AMI から起動したすべてのインスタンスが、初回起動時に必要な変数を使用してセキュアブートメカニズムを使用できるようになります。
前提条件
- AWS AMI イメージを作成してアップロードしている。詳細は、AWS AMI の作成とアップロード を 参照してください。
次のパッケージがインストールされている。
-
awscli2 -
python3 -
openssl -
efivar -
keyutils -
python3-virt-firmware
-
手順
新しいランダムなユニバーサル一意識別子(UUID)を作成し、システム生成のテキストファイルに保存します。
uuidgen --random > GUID.txt
$ uuidgen --random > GUID.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow プラットフォーム鍵データベースの新しい RSA 秘密鍵
PK.keyと自己署名 X.509 証明書PK.cerを生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow opensslユーティリティーは、出力形式を Distinguished Encoding Rules (DER)に設定することで、証明書の共通名プラットフォームキーを生成します。Key Exchange Key データベース用に新しい RSA 秘密鍵
KEK.keyと自己署名 X.509 証明書KEK.cerを生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow カスタム証明書
custom_db.cerを生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 64 ビットシステムの禁止署名の更新された UEFI 失効リストファイル(
dbx)をダウンロードします。wget https://uefi.org/sites/default/files/resources/x64_DBXUpdate.bin
$ wget https://uefi.org/sites/default/files/resources/x64_DBXUpdate.binCopy to Clipboard Copied! Toggle word wrap Toggle overflow virt-fw-varsユーティリティーを使用して、鍵、データベース証明書、および UEFI 変数ストアからaws_blob.binバイナリーファイルを生成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow カスタマイズされた BLOB は、以下で構成されます。
-
自己署名の X.509 証明書を使用した
PK.cer -
所有者グループの GUID および Privacy Enhanced Mail (
pem)形式を含むKEK.cerおよびcustom_db.cer -
除外された署名(
dbx)のデータベースからダウンロードされたx64_DBXUpdate.binリスト。 -
77fa9abd-0359-4d32-bd60-28f4e78f784bUUID は、MicCorUEFCA2011_2011-06-27.crtMicrosoft Corporation UEFI Certification Authority 2011 用です。
-
自己署名の X.509 証明書を使用した
awscli2ユーティリティーを使用して、必要なセキュアブート変数を使用してディスクスナップショットから AMI を作成して登録します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - AWS コンソールからインスタンスを再起動します。
検証
セキュアブートが有効になっているかどうかを確認します。
mokutil --sb-state SecureBoot enabled
$ mokutil --sb-state SecureBoot enabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow keyctlユーティリティーを使用して、カスタム証明書のカーネルキーリングを確認します。sudo keyctl list %:.platform 4 keys in keyring: 907254483: ---lswrv 0 0 asymmetric: Signature Database key: f064979641c24e1b935e402bdbc3d5c4672a1acc ...
$ sudo keyctl list %:.platform 4 keys in keyring: 907254483: ---lswrv 0 0 asymmetric: Signature Database key: f064979641c24e1b935e402bdbc3d5c4672a1acc ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow