クラスタノードのインスタンスに指定するAMIについて、作成する手順を説明します。
クラスタノードとなるインスタンスを作成し、以下を実施してください。
“A.1.3.5.1 インスタンスに適用するルール”で設計したセキュリティグループを設定します。
“A.1.5 ポリシーの設計”に従って、IAMロールを作成し、クラスタノードとなるインスタンスに対してIAMロールをアタッチします。
“A.1.4 ディスクの設計”でEFSのファイルシステムを作成しているため、以下のファイルシステムをマウントする必要があります。
RMSのログ
ユーザが共用するデータ(ユーザが作成する場合)
クラスタノード上でEFSのファイルシステムをマウントする手順を以下に示します。
Amazon EFSユーザーガイドの“Amazon EFS クライアントの手動インストール”を参照して、amazon-efs-utilsをインストールします。
PRIMECLUSTERのインストール前にマウントポイントを作成します。
# mkdir -p /var/opt/SMAWRrms/log
# chmod -R 755 /var/opt/SMAWRrms
# mkdir -p <任意のディレクトリ>
起動時に自動でマウントするための設定をします。
fstabの設定内容(IAM認証によるマウントの場合)
# RMSのログのfile-system-idを/etc/fstabに追記する場合
file-system-id:/ /var/opt/SMAWRrms/log efs _netdev,noresvport,tls,iam 0 0
# ユーザが共用するデータのfile-system-idを/etc/fstabに追記する場合
file-system-id:/ <任意のディレクトリ> efs _netdev,noresvport,tls,iam 0 0
注意
_netdevオプションを付け忘れると、自動マウントの失敗時にインスタンスが応答しなくなる(ハングする)ため注意してください。
RHEL8ではデフォルトでSELinuxが有効化されています。SELinuxが有効化されている場合、ユーザが共用するデータへのアクセスが制限されるため、必要に応じてマウントオプションでコンテキストを指定してください。
自動マウントの設定後、再起動して起動時にRMSのログ領域および共用データが正常にマウントされていることを確認します。
クラスタノード上で以下の手順を実施し、Firewallを無効化してください。PRIMECLUSTERのインストール前に、クラスタノードのFirewallを無効化します。手順を以下に示します。
firewalldが無効になっていることを確認してください。
# systemctl is-enabled firewalld
有効になっている場合、無効にしてください。
# systemctl stop firewalld # systemctl disable firewalld
クラスタノード上でのPRIMECLUSTERのインストールには、インストールスクリプト(CLI Installer)を使用します。
Linux(R)ソフトウェアと関連ソフトウェアが、すでにインストールされているインスタンスに対し、インストールスクリプトを使用してPRIMECLUSTERをインストールします。
注意
インスタンス作成後、一度もOSを再起動していない場合、再起動してからPRIMECLUSTERをインストールしてください。
参照
インストール/アンインストール方法の詳細については、“PRIMECLUSTER Cloud Editionインストールガイド”を参照してください。
クラスタノードの環境に応じて、RMSで必要なカーネルパラメタを変更する必要があります。
PRIMECLUSTERデザインシートを確認し、カーネルパラメタの変更が必要な場合は設定し直してください。
参照
カーネルパラメタについては、“PRIMECLUSTER 導入運用手引書”の“3.1.7 カーネルパラメタの確認/設定”の“RMS 構成の場合”を参照してください。
注意
変更したカーネルパラメタを有効にするため、OSを再起動してください。
PRIMECLUSTERアンインストール後、カーネルパラメタ設定は、必要に応じてPRIMECLUSTERインストール前の状態に戻してください。
クラスタノード上で動作させるアプリケーションのインストール、および設定を必要に応じて行ってください。
参照
環境設定の方法については、各アプリケーションのマニュアルを参照してください。
PRIMECLUSTER関連製品のAWSの対応については、各製品のマニュアルを参照してください。
クラスタノード上の/etc/hostsファイルに、ホスト名(hostnameコマンドで出力されるノード名)に文字列“RMS”を連結した名前を設定します。
設定する名前は、ループバックアドレスまたは実際に構築するノードに割り当てられているアドレスのどちらか1つだけに追加してください。
hostnameコマンド実行結果
# /bin/hostname
hostname
[追加前]
# /bin/cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
[追加後]
# /bin/cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 hostnameRMS
hostnameコマンドの出力結果が「node1」の場合の追加例
# /bin/cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 node1RMS
クラスタノード上でのクラスタアプリケーションの構築方法の詳細については、“PRIMECLUSTER 導入運用手引書”の“第6章クラスタアプリケーションの構築”を参照し、1:1運用待機のクラスタアプリケーションを作成し、シングルノードクラスタ運用と同様の設定を実施してください。
なお、“PRIMECLUSTER 導入運用手引書”の“6.7.2 userApplicationの設定”においてFaultScriptの登録が必要です。登録するスクリプトの作成方法については、“A.2.2.8.1 FaultScriptの作成”を参照してください。“PRIMECLUSTER 導入運用手引書”の“6.2 GLSの初期設定”、“6.3 GDSの構成設定”、“6.4 GFSの初期設定”は設定不要です。
また、clchkclusterコマンドは使用できないため、“PRIMECLUSTER 導入運用手引書”の“6.9 クラスタ環境のチェック”の実施は不要です。
注意
“PRIMECLUSTER 導入運用手引書”の“6.1 RMSの初期設定”では、「自動起動しない」を選択しないでください。
“PRIMECLUSTER 導入運用手引書”の“6.7.2 userApplicationの設定”で設定するuserApplicationの属性のAutoStartUp属性はyesに設定します。
yesに設定しなかった場合は、異常発生によるインスタンス切替え時にRMSが自動で起動しません。
“PRIMECLUSTER 導入運用手引書”の“6.7.2.1 スタンバイ運用のクラスタアプリケーション作成”の手順4におけるuserApplicationを構成するノードの設定は不要です。
“PRIMECLUSTER 導入運用手引書”の“6.7.2 userApplicationの設定”の前に以下の手順を実施して、“A.2.2.7 OSの設定”で設定した「hostnameRMS」を登録します。
hvwコマンドを実行します。
configurationファイル名(testconf)としてRMS Wizardを起動する例:
# /opt/SMAW/SMAWRrms/bin/hvw -n testconf
"Main configuration menu"の"RMS-CreateMachine"を選択します。
node1: Main configuration menu, current configuration: testconf No RMS active in the cluster 1) HELP 10) Configuration-Remove 2) QUIT 11) Configuration-Freeze 3) Application-Create 12) Configuration-Thaw 4) Application-Edit 13) Configuration-Edit-Global-Settings 5) Application-Remove 14) Configuration-Consistency-Report 6) Application-Clone 15) Configuration-ScriptExecution 7) Configuration-Generate 16) RMS-CreateMachine 8) Configuration-Activate 17) RMS-RemoveMachine 9) Configuration-Copy Choose an action: 16
"FREECHOICE"を選択し、「hostnameRMS」を入力します。
「hostnameRMS」は“A.2.2.7 OSの設定”で設定した「hostnameRMS」です。
以下は「node1RMS」を設定する場合の例です。
Creation: Add hosts to a cluster: Current set: 1) HELP 2) QUIT 3) RETURN 4) FREECHOICE Choose the host to add: 4 >> node1RMS
"QUIT"を選択し、設定を終了します。
Creation: Add hosts to a cluster: Current set: node1RMS 1) HELP 2) QUIT 3) RETURN 4) FREECHOICE Choose the host to add: 2
注意
“PRIMECLUSTER 導入運用手引書”の“第6章 クラスタアプリケーションの構築”では、「hostnameRMS」の登録で使用したconfigurationファイルを指定してRMS Wizardを起動してください。
利用者アプリケーションに対応したuserApplicationの設定方法については、“PRIMECLUSTER 導入運用手引書”の“6.6 Online/Offlineスクリプトの設定”を参照してください。
userApplicationに登録するFaultScriptを作成します。本スクリプトによりアプリケーションに障害(Fault)が発生した場合にインスタンスを停止し、業務を切り替えることができます。
スクリプト用のファイルを作成します。スクリプトのファイル名には、任意の名前を指定します。
# touch スクリプト # chmod 700 スクリプト
ファイルに以下の内容を追加します。
#!/bin/sh LOG_TRANSFER_SECONDS=10 NODE=${HV_NODENAME:-unknown} STATE=${HV_SCRIPT_TYPE:-unknown} function Msg { echo ${NODE}: ${STATE}: $(date "+%Y-%m-%d %H:%M:%S"): $* } Msg NOTICE: Waiting ${LOG_TRANSFER_SECONDS} seconds for log transfer. /usr/bin/sleep ${LOG_TRANSFER_SECONDS} /usr/bin/systemctl -f poweroff Ret=$? if [ ${Ret} != 0 ]; then # systemctlコマンドが失敗する場合のメッセージ Msg ERROR: systemctl failed. Return code ${Ret}. exit 1 fi exit 0
スクリプトでは、環境に合わせて調整する値を以下に示す変数で指定します。
変数 | 説明 |
---|---|
LOG_TRANSFER_SECONDS | CloudWatchエージェントの設定値の内、Logsセクションのforce_flush_intervalの倍の値を設定します。単位は秒です。force_flush_intervalの確認方法、デフォルト値などの仕様についてはAWSの公式ドキュメントを参照してください。 |
注意
userApplication にFault が通知される場合にOfflineScriptは実行されません。もしインスタンスの停止前に行うべき処理がある場合は以下のようにして下さい。
登録するスクリプトの3行目に処理を追加します。
FaultScriptの登録手順において複数のコマンドを指定します。
なお、FaultScript用のスクリプトは末尾に記載する必要があります。
(下の例では/var/tmp/FaultScript.shがFaultScript用のスクリプトです。)
/var/tmp/command ; /var/tmp/FaultScript.sh
systemctlコマンドの延長でファイルシステムのアンマウントが行われます。ファイルシステムの異常などでアンマウントに時間がかかる場合、切替えに時間がかかることがあります。また、systemctlコマンドが失敗する場合はAWSマネジメントコンソールを利用してマシンを停止します。
RMSのログ領域がマウントされた後にRMSが起動するように設定します。
起動順序の設定
起動順序を設定するために、RMSサービスのドロップインのユニットファイルを作成します。
/etc/systemd/system/smawrrms.service.dディレクトリを作成します。
# mkdir /etc/systemd/system/smawrrms.service.d # chmod 755 /etc/systemd/system/smawrrms.service.d
作成したディレクトリ内に設定ファイルを作成します。
# touch /etc/systemd/system/smawrrms.service.d/pclswr-efs.conf # chmod 644 /etc/systemd/system/smawrrms.service.d/pclswr-efs.conf
ユニットファイルの設定内容
[Unit] Wants=var-opt-SMAWRrms-log.mount
ユニットファイルの作成後、以下のコマンドを実行します。
# systemctl daemon-reload
起動順序の確認
以下のコマンドを実行して、RMSサービスの依存関係の中に“var-opt-SMAWRrms-log.mount”(マウントに関したユニットファイル)が含まれていることを確認します。
# systemctl list-dependencies smawrrms.service
出力例(RMSサービスの依存関係)
# systemctl list-dependencies smawrrms.service
smawrrms.service ● ├─system.slice ● ├─var-opt-SMAWRrms-log.mount ● └─sysinit.target ● ├─dev-hugepages.mount (略)
CloudWatchエージェントをインスタンスにインストールし、収集対象の情報を設定することで、それらの情報が収集できます。収集した情報を使用して、CloudWatchサービスでRMSサービスを監視し、異常検知時にインスタンスを切り替えることが可能です。スマートワークロードリカバリ機能では、RMSのプロセス生存の監視およびログ収集を行うためにCloudWatchエージェントを使用します。
図A.7 CloudWatchエージェントによるRMSの監視およびログ収集
CloudWatchエージェントは、コマンドライン、AWS Systems Manager、またはAWS CloudFormationの方法でインストールしてください。詳細は“Amazon CloudWatch ユーザーガイド”の“CloudWatch エージェントのインストール”を参照してください。
CloudWatchエージェントの設定手順を説明します。
CloudWatchエージェントの設定
CloudWatch エージェント設定ファイルを作成します。作成した設定ファイルを指定して、CloudWatchエージェントを起動します。詳細は“Amazon CloudWatch ユーザーガイド”の“CloudWatch エージェント設定ファイルを作成する”を参照してください。以下を設定ファイルに記載してください。
{ "agent": { "metrics_collection_interval": 60, "logfile": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log", "debug": false }, "metrics": { "namespace": "RMS", "append_dimensions": { "InstanceId":"${aws:InstanceId}", "InstanceType":"${aws:InstanceType}" }, "metrics_collected": { "procstat": [ { "pattern": "/opt/SMAW/SMAWRrms/bin/bm", "measurement": [ "pid_count" ], "metrics_collection_interval": 60 } ] }, "force_flush_interval": 60 }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/var/log/messages*", "log_group_name": "system1_messages", "log_stream_name": "{instance_id}" }, { "file_path": "/opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log", "log_group_name": "system1_cwa_messages", "log_stream_name": "{instance_id}" } ] } }, "force_flush_interval":5 } }
CloudWatchのメニューから「すべてのメトリクス」を選択時、metricsセクションの"namespace"に指定した "RMS"がカスタム名前空間に表示されます。ログは、CloudWatchのメニューからロググループを選択後、logsセクションの"log_group_name"に指定した"system1_messages"配下にインスタンスIDごとに表示されます。
参考
メトリクスやログの収集頻度を設定する以下のパラメタの値は変更可能です。
metrics_collection_interval
force_flush_interval
監視ログを追加、削除する場合は、logsセクションの"collect_list"のエントリを追加、削除してください。
注意
metricsセクションの"namespace"に指定した "RMS"は、本構成以外で使わないでください。
CloudWatchエージェント起動後、CloudWatchエージェント設定ファイルは、ファイル名変更後以下のディレクトリに移動されます。
/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d
例)CloudWatchエージェント設定ファイルが、
/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.jsonの場合
CloudWatchエージェント設定ファイルは以下となります。
/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.d/file_amazon-cloudwatch-agent.json
CloudWatchサービス起動順番の設定
RMS起動後にCloudWatchサービスが起動するように設定します。
注意
/etc/systemd/system/smawrrms.service.dディレクトリが存在しない場合、“A.2.2.9 RMS起動順序の設定”を実施していない可能性があります。実施しているか確認をしてください。
CloudWatchエージェントサービスの起動/停止順序を設定します。
/etc/systemd/system/smawrrms.service.dディレクトリ内に設定ファイルを作成します。
# touch /etc/systemd/system/smawrrms.service.d/pclswr-cwa.conf # chmod 644 /etc/systemd/system/smawrrms.service.d/pclswr-cwa.conf
設定ファイルに以下の内容を記載します。
[Unit] Before=amazon-cloudwatch-agent.service
CloudWatchエージェントサービスの起動/停止順序の設定を反映します。
# systemctl daemon-reload
CloudWatchエージェントサービスの起動/停止順序の設定を確認します。
amazon-cloudwatch-agent.serviceが含まれていることを確認してください。
# systemctl show smawrrms.service | grep "Before="
Before=shutdown.target amazon-cloudwatch-agent.service multi-user.target
インスタンスの切替え時にAMIを使用します。
AWSマネジメントコンソールから以下の手順でAMIを作成してください。
クラスタノードとなるインスタンスを停止します
クラスタノードとなるインスタンスのAMIを作成します。
クラスタノードとなるインスタンスを終了します。
参照
AMIの詳細およびAMIの作成手順は、AWSの公式ドキュメントを参照してください。
注意
AMIの作成は必ず実施してください。作成しなかった場合、PRIMECLUSTERはインスタンスの切替え時に、“A.2 導入”が未実施のAMIからインスタンスを起動します。この場合、インスタンスの動作は保証されません。
インスタンスの運用中に、OSの設定変更(ネットワーク設定など)を実施した場合、AMIを再作成してください。
運用中のインスタンスにおけるAMIの作成手順については、“A.5.8 運用中のAMIの取得手順”を参照してください。
新たなインスタンスの起動後、以前のインスタンスに関連づいたAMI、スナップショットおよびCloudWatchのログが残っているため、課金を防ぐために不要であれば削除してください。削除手順に関してはAWSの公式ドキュメントを参照してください。