ここでは、“20.2.1 ネットワークの引継ぎ”で選択したアーキテクチャパターンを使用するための定義ファイルの作成、クラスタアプリケーションの構築について説明します。
注意
シングルノードクラスタの場合、複数のノード間でIPアドレスを引き継ぐ必要が無いため、本章の設定は不要です。
ネットワーク引継ぎでは、全ノードで、AWSのネットワークデバイスを制御するための以下の定義ファイルを作成する必要があります。
/usr/opt/reliant/etc/hvawsconfig
参考
/usr/opt/reliant/etc/hvawsconfigファイルを作成する場合、/usr/opt/reliant/etc/hvawsconfig.templateファイルをひな形として使用することができます。
# cp -p /usr/opt/reliant/etc/hvawsconfig.template /usr/opt/reliant/etc/hvawsconfig
注意
hvawsconfigファイルはrootユーザで作成し、パーミッションを600にしてください。
hvawsconfigファイルはクラスタを構成する各ノードで同じ内容を記載してください。
定義ファイルに記載する内容は、選択したアーキテクチャパターンにより異なります。
仮想ルータのルーティング経路を更新するために、AWSが管理するデバイスのID情報が必要になります。
定義ファイル(/usr/opt/reliant/etc/hvawsconfig)に記載する、AWSの各IDは、AWS マネジメントコンソールより確認してください。
KeyName Mode CFNameX InstanceID RouteTableID 引継ぎIPアドレス ENIID [ProfileName]
項目 | 内容 | 備考 |
---|---|---|
KeyName | アルファベット(大文字小文字)と数字で構成された16文字以内のIDを記載します。大文字小文字は別のKeyNameとして取り扱います。 このキー名は、Cmdlineリソースの設定時に登録するスクリプト単位で定義します。ペアとなる運用系と待機系は同じKeyNameを指定し、その他は重複しないようにKeyNameを定義してください。後述のCmdlineリソースの設定でスクリプトを登録する際に引数として指定します。 | ― |
Mode | ネットワーク引継ぎのアーキテクチャパターンを指定します。 仮想ルータによるネットワーク引継ぎでは、ROUTE 、または、routeの文字列を指定します。 | ― |
CFNameX | CFノード名を指定します。 | ― |
InstanceID | クラスタホストが動作しているAWSのインスタンスIDを指定します。 | AWSマネジメントコンソールで確認 |
RouteTableID | ルートテーブルのIDを指定します。 | AWSマネジメントコンソールで確認 |
引継ぎIPアドレス | 引継ぎIPアドレス(IPv4アドレスで指定します。) | ― |
ENIID | IPを引継ぐネットワークインタフェースのENIIDを指定します。 | AWSマネジメントコンソールで確認 |
ProfileName | “21.3 事前設定”で設定したAWS Command Line Interfaceで使用する認証情報のプロファイル名を指定します。 省略時は、デフォルトプロファイルで動作します。 | ― |
例
引継ぎIPアドレスが172.31.0.10、AWS Command Line Interfaceで使用する認証情報のプロファイル名が userprofile1 の場合
CmdR01 ROUTE node1 i-xxxxxxxx rtb-xxxxxxxx 172.31.0.10 eni-xxxxxxxx userprofile1 CmdR01 ROUTE node2 i-yyyyyyyy rtb-xxxxxxxx 172.31.0.10 eni-yyyyyyyy userprofile1
相互待機構成など、複数の制御をする場合は、KeyNameを分け、同様の内容で追記します。
以下は、引継ぎIPアドレスとして、172.31.0.10と172.32.0.20の2つを制御する場合の記載例です。
CmdR01 ROUTE node1 i-xxxxxxxx rtb-xxxxxxxx 172.31.0.10 eni-xxxxxxxx userprofile1 CmdR01 ROUTE node2 i-yyyyyyyy rtb-xxxxxxxx 172.31.0.10 eni-yyyyyyyy userprofile1 CmdR02 ROUTE node1 i-xxxxxxxx rtb-xxxxxxxx 172.32.0.20 eni-aaaaaaaa userprofile1 CmdR02 ROUTE node2 i-yyyyyyyy rtb-xxxxxxxx 172.32.0.20 eni-bbbbbbbb userprofile1
注意
空白区切りで、ノードごとに1行で記載してください。
InstanceID、ENIIDは、運用系と待機系のそれぞれのID情報を記載してください。
引継ぎIPアドレスは、ホスト名ではなく、IPv4アドレスで指定してください。
設定に誤りがある場合、ルーティングの経路情報を正しく更新することができず、リソース故障になります。
Elastic IP アドレスをENIIDに関連付けるため、AWSが管理するデバイスのID情報が必要になります。
定義ファイル(/usr/opt/reliant/etc/hvawsconfig) に記載する、AWSの各IDは、AWS マネジメントコンソールより確認してください。
KeyName Mode CFNameX InstanceID AllocationID ENIID [ProfileName]
項目 | 内容 | 備考 |
---|---|---|
KeyName | アルファベット(大文字小文字)と数字で構成された16文字以内のIDを記載します。大文字小文字は別のKeyNameとして取り扱います。 このキー名は、Cmdlineリソースの設定時に登録するスクリプト単位で定義します。ペアとなる運用系と待機系は同じKeyNameを指定し、その他は重複しないようにKeyNameを定義してください。後述のCmdlineリソースの設定でスクリプトを登録する際に引数として指定します。 | ― |
Mode | ネットワーク引継ぎのアーキテクチャパターンを指定します。 Elastic IPアドレス付替えによるネットワーク引継ぎでは、ELASTIC、または、elasticの文字列を指定します。 | ― |
CFNameX | CFノード名を指定します。 | ― |
InstanceID | クラスタホストが動作しているAWSのインスタンスIDを指定します。 | AWSマネジメントコンソールで確認 |
AllocationID | Elastic IP アドレスの割り当てID | AWSマネジメントコンソールで確認 |
ENIID | Elastic IPアドレスに割り当てるネットワークインタフェースのENIIDを指定します。 | AWSマネジメントコンソールで確認 |
ProfileName | “21.3 事前設定”で設定したAWS Command Line Interfaceで使用する認証情報のプロファイル名を指定します。 省略時は、デフォルトプロファイルで動作します。 | ― |
例
AWS Command Line Interfaceで使用する認証情報のプロファイル名が userprofile1 の場合
CmdE01 ELASTIC node1 i-xxxxxxxx eipalloc-xxxxxxxx eni-xxxxxxxx userprofile1 CmdE01 ELASTIC node2 i-yyyyyyyy eipalloc-xxxxxxxx eni-yyyyyyyy userprofile1
相互待機構成など、複数の制御をする場合は、KeyNameを分け、同様の内容で追記します。
CmdE01 ELASTIC node1 i-xxxxxxxx eipalloc-xxxxxxxx eni-xxxxxxxx userprofile1 CmdE01 ELASTIC node2 i-yyyyyyyy eipalloc-xxxxxxxx eni-yyyyyyyy userprofile1 CmdE02 ELASTIC node1 i-xxxxxxxx eipalloc-xxxxxxxx eni-aaaaaaaa userprofile1 CmdE02 ELASTIC node2 i-yyyyyyyy eipalloc-xxxxxxxx eni-bbbbbbbb userprofile1
注意
空白区切りで、ノードごとに1行で記載してください。
InstanceID、ENIIDは、運用系と待機系のそれぞれのID情報を記載してください。
設定に誤りがある場合、Elastic IPを正しく関連付けすることができず、リソース故障になります。
DNSレコードを更新する場合、AWSが管理するデバイスのID情報とレコードを更新する情報が必要になります。
DNSレコード書き換えによるネットワーク引継ぎを使用する場合は、定義ファイルと、DNSレコードを更新するためのファイル(JSON形式)を作成する必要があります。
定義ファイル、DNSレコードを更新するためのファイルについて順に説明します。
定義ファイル(/usr/opt/reliant/etc/hvawsconfig) に記載する、AWSの各IDは、AWS マネジメントコンソールより確認してください。
KeyName Mode CFNameX InstanceID HostZoneID change-batch [ProfileName]
項目 | 内容 | 備考 |
---|---|---|
KeyName | アルファベット(大文字小文字)と数字で構成された16文字以内のIDを記載します。大文字小文字は別のKeyNameとして取り扱います。 このキー名は、Cmdlineリソースの設定時に登録するスクリプト単位で定義します。ペアとなる運用系と待機系は同じKeyNameを指定し、その他は重複しないようにKeyNameを定義してください。後述のCmdlineリソースの設定でスクリプトを登録する際に引数として指定します。 | ― |
Mode | ネットワーク引継ぎのアーキテクチャパターンを指定します。 DNSレコード書換えによるネットワーク引継ぎでは、DNS 、または、dns の文字列を指定します。 | ― |
CFNameX | CFノード名を指定します。 | ― |
InstanceID | クラスタホストが動作しているAWSのインスタンスIDを指定します。 | AWSマネジメントコンソールで確認 |
HostZoneID | ホストゾーンIDを指定します。 | AWSマネジメントコンソールで確認 |
change-batch | DNSを更新するためのレコード情報ファイル(絶対パスで指定します。) レコード情報ファイルの作成については“◆DNSを更新するためのレコード情報”を参照してください。 | ― |
ProfileName | “21.3 事前設定”で設定したAWS Command Line Interfaceで使用する認証情報のプロファイル名を指定します。 省略時は、デフォルトプロファイル動作します。 | ― |
例
DNSを更新するためのレコード情報ファイルが/home/node1.json_sample、AWS Command Line Interfaceで使用する認証情報のプロファイル名が userprofile1 の場合
CmdD01 DNS node1 i-xxxxxxxx xxxxxxxx /home/node1.json_sample userprofile1 CmdD01 DNS node2 i-yyyyyyyy xxxxxxxx /home/node2.json_sample userprofile1
相互待機構成など、複数の制御をする場合は、KeyNameを分け、同様の内容で追記します。
CmdD01 DNS node1 i-xxxxxxxx xxxxxxxx /home/node1.json_sample userprofile1 CmdD01 DNS node2 i-yyyyyyyy xxxxxxxx /home/node2.json_sample userprofile1 CmdD02 DNS node1 i-xxxxxxxx xxxxxxxx /home/node1.json_sample2 userprofile1 CmdD02 DNS node2 i-yyyyyyyy xxxxxxxx /home/node2.json_sample2 userprofile1
注意
空白区切りで、ノードごとに1行で記載してください。
InstanceID は、運用系と待機系のそれぞれのID情報を記載してください。
設定に誤りがある場合、DNSのレコード情報を正しく更新することができず、リソース故障になります。
以下のサンプルを使用し、運用系と待機系のノードごとに、DNSレコードを更新するためのファイル(JSON形式)を作成します。rootユーザで作成し、パーミッションは600にしてください。JSONファイルは、任意の配置先に任意のファイル名で作成してください。本ファイルの詳細については、AWSの公式ドキュメントであるAmazon Route 53 のドキュメントを参照してください。
例
項目 | 値 | 設定値 | 説明 |
---|---|---|---|
Action | UPSERT | 固定 | リソースレコードを更新するため、UPSERTを指定します。 |
Name | ドメイン名 | 指定 | レコードにセットする引き継ぐドメイン名を記載します。 ドメイン名の合計の長さは、最大255 文字です。(AWS規約) |
Type | A | 固定 | IPv4 アドレスを紐づけるため A を指定します。 |
TTL | 時間(秒) | 指定 | レコードに関する情報をキャッシュしておく生存時間(秒)を指定します。 TTL(Time to Leave)の初期値は300秒です。 |
Value | 運用系/待機系のIPアドレス | 指定 | 運用系と待機系でOnline処理時にドメインと紐づけるプライベートIPアドレスをそれぞれのファイルに指定します。 この値のみ、運用系と待機系で異なることに注意してください。 |
運用系の記載例:/home/node1.json_sample
{ "Comment": "CREATE/DELETE/UPSERT a record ", "Changes": [{ "Action": "UPSERT", "ResourceRecordSet": { "Name": "sub.fujitsu.com", "Type": "A", "TTL": 300, "ResourceRecords": [{ "Value": "172.30.10.10" }] }}] }
待機系の記載例:/home/node2.json_sample
{ "Comment": "CREATE/DELETE/UPSERT a record ", "Changes": [{ "Action": "UPSERT", "ResourceRecordSet": { "Name": "sub.fujitsu.com", "Type": "A", "TTL": 300, "ResourceRecords": [{ "Value": "172.30.20.20" }] }}] }
全ノードで以下のコマンドを実行し、定義ファイル(/usr/opt/reliant/etc/hvawsconfig)に記載された情報がAWSのデバイスを制御するうえで、正しく記載されているかを確認してください。
# /opt/SMAW/bin/hvawschkconf
hvawschkconf (8) コマンドで実施するチェック内容については、“PRIMECLUSTER 活用ガイド<コマンドリファレンス編>”を参照してください。
定義ファイルの記載内容に問題がない場合は、下記のように表示されます。
例)定義ファイルが/usr/opt/reliant/etc/hvawsconfigの場合
# /opt/SMAW/bin/hvawschkconf
NOTICE: Check completed successfully. file=/usr/opt/reliant/etc/hvawsconfig
定義ファイルの記載内容に問題がある場合は、確認を必要とする設定値が出力されます。表示されたメッセージに従い対処してください。
hvawschkconf (8) コマンドのメッセージの詳細については“PRIMECLUSTER 活用ガイド<メッセージ集>”を参照してください。
ネットワーク引継ぎをクラスタアプリケーションに登録する方法について説明します。
アーキテクチャパターン | 登録するリソース | 用途 |
---|---|---|
仮想ルータによるネットワーク引継ぎ | Cmdlineリソース 引継ぎネットワークリソース | 運用系で仮想ルータのルーティング経路を更新します。 運用系で引継ぎIPアドレスを活性化します。 |
DNSレコード書換えによるネットワーク引継ぎ | Cmdlineリソース | 運用系でDNSのレコード情報を更新します。 |
Elastic IP の付替えによるネットワーク引継ぎ | Cmdlineリソース | 運用系でElastic IPアドレスをネットワークインタフェース(ENIID)に関連付けます。 |
Cmdlineリソースへの登録方法は、全てのネットワーク引継ぎのアーキテクチャパターンで共通です。
Cmdlineリソースの設定方法についての詳細は、“PRIMECLUSTER 導入運用手引書”の“6.7.3 リソースの設定”のCmdlineリソースの設定方法を参照し、“表21.1 Cmdlineリソースの作成とOnline/Offline/Checkスクリプトの設定”の設定値を設定してください。
パラメタ名 | 設定値 |
---|---|
StartCommands[0] | 以下を設定します。 /opt/SMAW/bin/hvawsipalias -c KeyName KeyName 定義ファイル(/usr/opt/reliant/etc/hvawsconfig)に事前に定義したKeyName を指定します。 |
StopCommands[0] | 以下を設定します。 /opt/SMAW/bin/hvawsipalias -u KeyName KeyName StartCommands に指定したKeyName と同じ引数を指定してください。 |
CheckCommands[0] | 以下を設定します。 /opt/SMAW/bin/hvawsipalias -m KeyName KeyName StartCommands に指定したKeyName と同じ引数を指定してください。 |
CheckCommandTimeouts[0] | CheckCommands[X]に指定したコマンドがハングアップした場合にPRIMECLUSTERが異常と判断するまでの時間を指定します。 TIMEOUT属性(初期値300秒)と同じ値を設定してください。 |
Flags[0] | AUTORECOVER属性(初期値は有効)とTIMEOUT属性の設定は任意です。 その他の属性は、デフォルトの設定としてください。 設定例: Flags[0]=XAT300 (AUTORECOVER属性 有効) Flags[0]=XT300 (AUTORECOVER属性 無効) |
注意
ネットワーク引継ぎ用Cmdlineリソースの監視処理では、AWS Command Line Interface を使用します。
NATインスタンスや、NATゲートウェイなどの異常により、APIエンドポイントまでの経路が阻害された場合、AWS Command Line Interface がエラー終了することで、ネットワーク引継ぎの監視処理に失敗し、クラスタアプリケーションの切替えが発生します。APIエンドポイントまでの経路が阻害されたことで、クラスタアプリケーションの切替えを発生させたくない場合は、“表21.1 Cmdlineリソースの作成とOnline/Offline/Checkスクリプトの設定”のパラメタを以下の値に設定し、ネットワーク引継ぎの監視を無効にしてください。
パラメタ名 | 設定値 |
---|---|
StartCommands[0] | |
StopCommands[0] | |
CheckCommands[0] | noneを設定します。 |
CheckCommandTimeouts[0] | noneを設定します。 |
Flags[0] | TIMEOUT属性の設定は任意です。 設定例: Flags[0]=DT300 |
すべてのノードで以下の手順を実施し、引継ぎIPアドレスを設定するすべてのネットワークインタフェースの物理IPアドレスを固定化してください。
以下のコマンドを実行し、引継ぎIPアドレスを設定するネットワークインタフェース(DEVICE)の、接続プロファイル名(NAME)を確認します。
# nmcli connection show
例)コマンドを実行した場合の表示結果
# nmcli connection show
NAME UUID TYPE DEVICE
ens256 9f45e94f-1726-dd68-8a33-8022f72b550f ethernet ens256
ens192 03da7500-2101-c722-2438-d0d006c28c73 ethernet ens192
cip0 c24ca981-b8d6-487f-89ba-e73c58da349d ethernet cip0
:
以下のコマンドを実行し、1.で確認した接続プロファイル名のipv4.methodの値を確認してください。
# nmcli connection show <接続プロファイル名>
ipv4.methodの値がmanual以外の場合、以下の値を記録し、3.以降の手順を実施してください。
IP4.ADDRESS,IP4.GATEWAY,IP4.DNS
ipv4.methodの値がmanualの場合は、3.以降の手順は実施不要です。
例)接続プロファイル名がens192の場合
# nmcli connection show ens192
connection.id: ens192
connection.uuid: 03da7500-2101-c722-2438-d0d006c28c73
:
ipv4.method: auto
:
GENERAL.MASTER-PATH: --
IP4.ADDRESS[1]: 172.31.0.10/24
IP4.GATEWAY: 172.31.0.1
IP4.ROUTE[1]: dst = 172.31.0.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 172.31.0.2
以下のコマンドを実行し、2.で確認したIP4.ADDRESSの値を固定値として設定してください。
# nmcli connection modify <接続プロファイル名> ipv4.addresses <IP4.ADDRESS> # nmcli connection modify <接続プロファイル名> ipv4.method manual
例)接続プロファイル名がens192、IP4.ADDRESSの値が172.31.0.10/24の場合
# nmcli connection modify ens192 ipv4.addresses 172.31.0.10/24
# nmcli connection modify ens192 ipv4.method manual
以下のコマンドを実行し、2.で確認したIP4.GATEWAY、IP4.DNSの値を設定し、接続プロファイル名をアクティベートしてください。
# nmcli connection modify <接続プロファイル名> ipv4.gateway <IP4.GATEWAY> # nmcli connection modify <接続プロファイル名> ipv4.dns <IP4.DNS> # nmcli connection up <接続プロファイル名>
例)接続プロファイル名がens192、IP4.GATEWAYの値が172.31.0.1、IP4.DNSの値が172.31.0.2の場合
# nmcli connection modify ens192 ipv4.gateway 172.31.0.1 # nmcli connection modify ens192 ipv4.dns 172.31.0.2 # nmcli connection up ens192
以下のコマンドを実行し、ipv4.addresses,ipv4.method,ipv4.gateway,ipv4.dnsの値が、3.4.で設定した通りに表示されることを確認してください。
# nmcli connection show <接続プロファイル名>
例)接続プロファイル名がens192の場合
# nmcli connection show ens192
connection.id: ens192
connection.uuid: 03da7500-2101-c722-2438-d0d006c28c73
:
ipv4.method: manual
ipv4.dns: 172.31.0.2
ipv4.dns-search: --
:
ipv4.addresses: 172.31.0.10/24
ipv4.gateway: 172.31.0.1
引継ぎネットワークリソースの設定については、“PRIMECLUSTER 導入運用手引書”の“6.7.3.6 引継ぎネットワークリソースの設定”を参照してください。
本設定の事前設定のクラスタの設定ファイル /usr/opt/reliant/etc/hvipalias は、以下の規則で記述してください。
CFNameX takeover interface netmask
CFNameX :引継ぎIPアドレスを使用するノードのCFノード名
takeover :引継ぎIPアドレスのホスト名
interface :引継ぎIPアドレスを活性化するネットワークインタフェース名
netmask :引継ぎIPアドレスのネットマスク(0xffffffff)
注意
仮想ルータによるネットワーク引継ぎを使用する場合の引継ぎネットワークリソースの設定において以下が必要です。
仮想ルータによるネットワーク引継ぎで引き継ぐIPアドレスは、VPCのCIDR範囲と異なるネットワークかつ、CIPサブネットのCIDR範囲とは異なるネットワークにする。
クラスタの設定ファイルに記述するネットマスクは32bit(16 進数 8 桁で指定) 0xffffffff を指定する。
引継ぎネットワークリソースのBASE、VIRTUAL属性は、VIRTUAL(初期値)を設定する。
監視先ホスト(PingHosts)の定義について
監視先ホスト(PingHosts)の設定は必須ではありません。業務上監視が必要なIPアドレスが存在する場合に限り、そのIPアドレスを監視先ホストに設定してください。
なお、マルチAZ環境の場合、業務LAN上のルートテーブルを監視先ホストに指定することはできません。
例
VPCのCIDR範囲が172.30.0.0/17の場合
/etc/hosts
172.31.0.10 takeoverip # 引継ぎIP
/usr/opt/reliant/etc/hvipalias
node1 takeoverip eth1 0xffffffff node2 takeoverip eth1 0xffffffff