ページの先頭です。
サイト内の現在位置を表示しています。
  1. ホーム
  2. ソフトウェア
  3. CLUSTERPRO
  4. ブログ
  5. 2017/07/03 記事
ここから本文です。

CLUSTERPRO オフィシャルブログ ~クラブロ~

AWS で CLUSTERPRO を構築するときの注意ポイント ~AWS仮想IPリソース編~

はじめに

CLUSTERPRO X は Amazon Web Services(以降、AWS)での動作をサポートしています。構築する上で注意するポイントがいくつかありますので、今回はそれらについて紹介します。
AWS で CLUSTERPRO X を活用する際の参考にしてください。

この記事の内容

今回は AWS で「VIP 制御による HAクラスター」を構築する場合を例に注意ポイントを紹介します。CLUSTERPRO X のバージョンは 3.3 を前提としています。

クラスタ構成

クラスタ構成は以下のような 2 ノードのミラーディスク型で「VIP 制御による HAクラスター」です。

HAクラスター構成の図

AWS仮想IPリソースを用いることで、AWS 上においても仮想的な IPアドレス(以降、VIP)を利用できます。VPC 内のクライアントは Route Table(VIP)を経由してクラスターノード(現用系)にアクセスすることが可能です。

ポイント1: IAM ロールは正しく設定されているか?

まずは EC2 インスタンスに割り当てられる IAM ロールが正しく設定されているか確認しましょう。
本手順は AWS CLI が実行できる環境で実行してください。CLUSTERPRO がインストールされたノードで実行する必要はありません。CLUSTERPRO がインストールされたノード(EC2 インスタンス)のインスタンス ID は予め確認しておきましょう。

IAM ロールの確認

CLUSTERPRO がインストールされたノード(インスタンスID:i-0123456789abcdef0)にアタッチされている IAM ロール名を確認します。
(下記の例では IAM ロール名を「clusterpro-role」、ポリシー名を「ClusterproPolicy」としています。)

$ aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0123456789abcdef0
{
    "IamInstanceProfileAssociations": [
        {
            "InstanceId": "i-0123456789abcdef0",
            "State": "associating", ← 状態が「associating」もしくは「associated」であることを確認
            "AssociationId": "iip-assoc-0123456789abcdef0",
            "IamInstanceProfile": {
                "Id": "AGJAJVQN4F5WVLGCJABCM",
                "Arn": "arn:aws:iam::123456789012:instance-profile/clusterpro-role" ← アタッチされている IAM ロール名(clusterpro-role)を確認
            }
        }
    ]
}

IAM ポリシーの確認

IAM ロールにアタッチされている IAM ポリシーを確認します。
(例では 1 つの IAM ポリシーが登録されていますが、複数登録されている場合もあります)

$ aws iam list-attached-role-policies --role-name clusterpro-role
{
    "AttachedPolicies": [
        {
            "PolicyName": "ClusterproPolicy", ← アタッチされている IAM ポリシー名(ClusterproPolicy)を確認
            "PolicyArn": "arn:aws:iam::123456789012:policy/ClusterproPolicy"
        }
    ]
}

IAM ポリシーにはバージョンが存在するので、どのバージョンが適用されているのか確認します。

$ aws iam get-policy --policy-arn "arn:aws:iam::123456789012:policy/ClusterproPolicy"
{
    "Policy": {
        "PolicyName": "ClusterproPolicy",
        "CreateDate": "2015-06-17T19:23;32Z",
        "AttachmentCount": "1",
        "IsAttachable": "true",
        "PolicyId": "Z27SI6FQMGNQ2EXAMPLE1",
        "DefaultVersionId": "v1", ← 適用されているバージョンを確認
        "Path": "/",
        "Arn": "arn:aws:iam::123456789012:policy/ClusterproPolicy",
        "UpdateDate": "2015-06-17T19:23:32Z"
    }
}

適用されているバージョンの IAM ポリシーの内容を確認します。

C:\Users\Administrator>aws iam get-policy-version --policy-arn "arn:aws:iam::123456789012:policy/ClusterproPolicy" --version-id "v1" --query
PolicyVersion.Document
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:Describe*", ← AWS仮想IPリソースの動作に必要な許可
                "ec2:ReplaceRoute" ← AWS仮想IPリソースの動作に必要な許可
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

補足: IAM ロールに複数の IAM ポリシーが登録されている場合は、各ポリシーの内容を確認し、必要なアクセス許可が揃っていること確認してください。

ポイント2: Python が正しくインストールされているか?

AWS仮想IPリソースは Python を利用します。Python が正しく実行できる状態か確認していきましょう。
必ず CLUSTERPRO がインストールされた全ノードで実行してください。

バージョンの確認

Windows の場合、Administrator で実行します。

C:\Users\Administrator>python --version
Python 2.7.13 ← 「Python 2.7.xx」が表示されることを確認

Linux の場合、root ユーザで実行します。

# python --version
Python 2.7.13 ← 「Python 2.7.xx」が表示されることを確認

環境変数(パス)の確認

Windows の場合、AWS仮想IPリソースは SYSTEM 権限で動作するため、システム環境変数の PATH に python.exe の格納フォルダが含まれている必要があります。

C:\Users\Administrator>where python
C:\Python27\python.exe ← python.exe の格納フォルダを確認

C:\Users\Administrator>wmic environment where (name='PATH' and SystemVariable='TRUE') get VariableValue ← システム環境変数の PATH を表示
VariableValue

C:\Program Files\EXPRESSCLUSTER\bin;C:\Python27\;C:\Python27\Scripts;%SystemRoot%\system32;%SystemRoot%; ← python.exe の格納フォルダ(C:\Python27)が含まれていることを確認
%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Amazon\cfn-bootstrap\;
C:\Program Files\Amazon\AWSCLI

Linux の場合、既定の PATH(/sbin, /bin, /usr/sbin, /usr/bin)配下に python が含まれている必要があります。

# which python
/usr/bin/python ← python が /sbin, /bin, /usr/sbin, /usr/bin のいずれかに存在することを確認

ポイント3: AWS CLI は正しく動作するか?

AWS仮想IPリソースは活性処理に AWS CLI を実行します。
これより、AWS CLI が正しくインストールされているか確認していきましょう。
必ず CLUSTERPRO がインストールされた全ノードで実行してください。

インストールパッケージの確認

Windows の場合、MSI パッケージでインストールされていることを確認します。

C:\Users\Administrator>wmic product list instance
 (省略)
AWS Command Line Interface ← 「AWS Command Line Interface」が表示されることを確認

Linux の場合、pip 経由でインストールされていることを確認します。

# pip show awscli
Name: awscli ← 「Name: awscli」が表示されることを確認

バージョンの確認

Windows の場合

C:\Users\Administrator>aws --version
aws-cli/1.11.90 Python/2.7.13 Windows/2012ServerR2 botocore/1.5.53 ← aws-cli のバージョンが 1.6.0 以降であることを確認

Linux の場合

# aws --version
aws-cli/1.11.90 Python/2.7.13 Windows/2012ServerR2 botocore/1.5.53 ← aws-cli のバージョンが 1.6.0 以降であることを確認

パスの確認

Windows の場合、AWS仮想IPリソースは SYSTEM 権限で動作するため、システム環境変数の PATH に aws.exe の格納フォルダが含まれている必要があります。

C:\Users\Administrator>where aws
C:\Program Files\Amazon\AWSCLI\aws.exe ← aws.exe の格納フォルダを確認

C:\Users\Administrator>wmic environment where (name='PATH' and SystemVariable='TRUE') get VariableValue ← システム環境変数の PATH を表示
VariableValue

C:\Program Files\EXPRESSCLUSTER\bin;C:\Python27\;C:\Python27\Scripts;%SystemRoot%\system32;%SystemRoot%;
%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Amazon\cfn-bootstrap\;
C:\Program Files\Amazon\AWSCLI ← aws.exe の格納フォルダ(C:\Program Files\Amazon\AWSCLI)が含まれていることを確認

Linux の場合、既定の PATH(/sbin, /bin, /usr/sbin, /usr/bin)配下に aws が含まれている必要があります。

# which aws
/usr/bin/aws ← aws が /sbin, /bin, /usr/sbin, /usr/bin のいずれかに存在することを確認

AWS CLI のセットアップ

AWS CLI の設定で正しくリージョンが指定されていることを確認します。

Windows の場合(「Administrator」で実行)

C:\Users\Administrator>aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************ABCD         iam-role                         ← access_key の Type が「iam-role」となっていることを確認
secret_key     ****************ABCD         iam-role                         ← secret_key の Type が「iam-role」となっていることを確認
    region           ap-northeast-1      config-file    ~/.aws/config        ← region の Value にリージョンが表示されていることを確認

Linux の場合(「root」で実行)

# aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************ABCD         iam-role                         ← access_key の Type が「iam-role」となっていることを確認
secret_key     ****************ABCD         iam-role                         ← secret_key の Type が「iam-role」となっていることを確認
    region           ap-northeast-1      config-file    ~/.aws/config        ← region の Value にリージョンが表示されていることを確認

AWS CLI の実行確認

下記のコマンドを実行して、VPC の情報が表示されることを確認します。VPC の VPC ID は予め確認しておきましょう。

AWS CLI にて CLUSTERPRO がインストールされたノード(EC2 インスタンス)が所属する VPC(VPC ID:vpc-01234567)の情報が取得できることを確認します。

Windows の場合

C:\Users\Administrator>aws ec2 describe-vpcs --vpc-ids vpc-01234567
{
    "Vpcs": [
        {
            "VpcId": "vpc-01234567",
            "InstanceTenancy": "default",
            "Tags": [
                {
                    "Value": "MyVPC",
                    "Key": "Name"
                }
            ],
            "State": "available",
            "DhcpOptionsId": "dopt-01234567",
            "CidrBlock": "10.0.0.0/16",
            "IsDefault": false
        }
    ]
}

Linux の場合

# aws ec2 describe-vpcs --vpc-ids vpc-01234567
{
    "Vpcs": [
        {
            "VpcId": "vpc-01234567",
            "InstanceTenancy": "default",
            "Tags": [
                {
                    "Value": "MyVPC",
                    "Key": "Name"
                }
            ],
            "State": "available",
            "DhcpOptionsId": "dopt-01234567",
            "CidrBlock": "10.0.0.0/16",
            "IsDefault": false
        }
    ]
}

もし 1 分以上経過してもレスポンスが無い場合は、インターネットへの通信経路が確保されていない可能性がありますので、ネットワークの設定を確認してください。

AWS仮想IPリソースの動作確認

3 つのポイントで確認できたら、AWS仮想IPリソースを起動してみましょう。
「フェイルオーバグループ」または「AWS仮想IPリソース」を起動して、緑色のアイコンが表示されることを確認してください。
また、「フェイルオーバグループ」をサーバ間移動して、別のサーバインスタンスにおいても緑色のアイコンが表示されますと、正常に動作していると判断できます。

さいごに

今回はよくいただく質問を中心に(開発者が構築するときにうっかりしてしまうポイントも含めて)紹介しましたが、いかがでしたでしょうか。

このブログでは皆さまからのリクエストをお待ちしております。
HAクラスターに関する疑問や気になる検証構成などご要望等ございましたら後述の窓口までお知らせ下さい。

お問い合わせ

当ブログに関するお問い合わせは、CLUSTERPRO プリセールスお問い合わせ窓口(info@clusterpro.jp.nec.com)までお問い合わせください。

CLUSTERPRO

ページの先頭へ戻る