サイト内の現在位置を表示しています。

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

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

はじめに

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クラスターに関する疑問や気になる検証構成などご要望等ございましたら後述の窓口までお知らせ下さい。

お問い合わせ

本記事に関するお問い合わせは、popupお問い合わせ窓口までお問い合わせください。