ページの先頭行へ戻る
PRIMECLUSTER 導入運用手引書 4.7<Cloud Services 編>

21.10.1 ネットワーク引継ぎのクラスタアプリケーションの構築

ここでは、“20.2.1 ネットワークの引継ぎ”で選択したアーキテクチャパターンを使用するための定義ファイルの作成、クラスタアプリケーションの構築について説明します。

注意

シングルノードクラスタの場合、複数のノード間でIPアドレスを引き継ぐ必要が無いため、本章の設定は不要です。

21.10.1.1 定義ファイルの作成

ネットワーク引継ぎでは、全ノードで、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行で記載してください。

  • InstanceIDENIIDは、運用系と待機系のそれぞれのID情報を記載してください。

  • 引継ぎIPアドレスは、ホスト名ではなく、IPv4アドレスで指定してください。

  • 設定に誤りがある場合、ルーティングの経路情報を正しく更新することができず、リソース故障になります。

■Elastic IPアドレス付替えによるネットワーク引継ぎ用定義ファイル

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行で記載してください。

  • InstanceIDENIIDは、運用系と待機系のそれぞれのID情報を記載してください。

  • 設定に誤りがある場合、Elastic IPを正しく関連付けすることができず、リソース故障になります。

■DNSレコード書換えによるネットワーク引継ぎ用定義ファイル

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を更新するためのレコード情報

以下のサンプルを使用し、運用系と待機系のノードごとに、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" }]
}}]
}

21.10.1.2 ネットワーク引継ぎ設定のチェック

全ノードで以下のコマンドを実行し、定義ファイル(/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 活用ガイド<メッセージ集>”を参照してください。

21.10.1.3 クラスタアプリケーションの構築

ネットワーク引継ぎをクラスタアプリケーションに登録する方法について説明します。

アーキテクチャパターン

登録するリソース

用途

仮想ルータによるネットワーク引継ぎ

Cmdlineリソース

引継ぎネットワークリソース

運用系で仮想ルータのルーティング経路を更新します。

運用系で引継ぎIPアドレスを活性化します。

DNSレコード書換えによるネットワーク引継ぎ

Cmdlineリソース

運用系でDNSのレコード情報を更新します。

Elastic IP の付替えによるネットワーク引継ぎ

Cmdlineリソース

運用系でElastic IPアドレスをネットワークインタフェース(ENIID)に関連付けます。

21.10.1.3.1 ネットワーク引継ぎ用Cmdlineリソースの設定

Cmdlineリソースへの登録方法は、全てのネットワーク引継ぎのアーキテクチャパターンで共通です。

Cmdlineリソースの設定方法についての詳細は、“PRIMECLUSTER 導入運用手引書”の“6.7.3 リソースの設定”のCmdlineリソースの設定方法を参照し、“表21.1 Cmdlineリソースの作成とOnline/Offline/Checkスクリプトの設定”の設定値を設定してください。

表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]

表21.1 Cmdlineリソースの作成とOnline/Offline/Checkスクリプトの設定”と同じ

StopCommands[0]

表21.1 Cmdlineリソースの作成とOnline/Offline/Checkスクリプトの設定”と同じ

CheckCommands[0]

noneを設定します。

CheckCommandTimeouts[0]

noneを設定します。

Flags[0]

TIMEOUT属性の設定は任意です。

設定例:

Flags[0]=DT300

21.10.1.3.2 仮想ルータによるネットワーク引継ぎで使用する引継ぎネットワークリソースの設定
■物理IPアドレスの固定化

すべてのノードで以下の手順を実施し、引継ぎIPアドレスを設定するすべてのネットワークインタフェースの物理IPアドレスを固定化してください。

  1. 以下のコマンドを実行し、引継ぎ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
    :
  2. 以下のコマンドを実行し、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
  3. 以下のコマンドを実行し、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
  4. 以下のコマンドを実行し、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
  5. 以下のコマンドを実行し、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