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

CloudFormationでVIP制御によるHAクラスター環境の自動構築を試してみました(Windows/Linux)

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

はじめに

AWS CloudFormation(以降、CloudFormation)は、AWSリソースの構築を自動化するためのサービスです。
CloudFormationを使用することで、VPCやEC2などの各種AWSリソースを一括で作成、更新、削除することが可能です。

本記事ではCloudFormationを用いて、AWS上におけるHAクラスター構築を一部自動化してみました。


また、Ainsibleと連携してCLUSTERPROのインストールやHAクラスターの設定を自動化することが可能です。
詳しくは、以前ご紹介したpopup記事を参照ください。

この記事の内容

1. CloudFormationとは

CloudFormationはAWSリソース(VPCやEC2)の構築を自動化するためのサービスです。

AWSにおける構築作業では、マネジメントコンソール上で多数の画面や入力フォームを操作することでリソースを作成できますが、毎回手作業が発生するため、作業時間の増加や設定ミスといった問題があります。

CloudFormationでは、テンプレートと呼ばれるAWSリソースを作成する設計図をアップロードするだけで、AWSリソースの構築ができるようになります。
テンプレートの作成やメンテナンスこそ必要ですが、手作業よりも素早くかつミスなく、様々な環境をプログラマブルに構築できるようになり、作業コストや作業ミスを抑えることができます。

このようなプログラマブルなアプローチは IaC(Infrastructure as Code)と呼ばれ、近年インフラの分野で注目・活用され始めています。

ここでは、CloudFormationを利用する際に登場する用語について、簡単に押さえておきます。

テンプレート

テンプレートはJSONまたは、YAML形式のテキストファイルです。
CloudFormationはこれらのテンプレートをAWSリソースを作成する際の設計図として使用します。
テンプレートにAWSリソースの情報(インスタンスタイプやAMI IDなど)を記述しておけば、CloudFormationがテンプレートの記述内容に従ってAWSリソースを作成します。

スタック

CloudFormationで作成したAWSリソースは、スタックと呼ばれる単一のユニットとして管理されます。
スタックを作成、更新、削除することで、リソースの集合を作成、更新、削除することができます。
スタックの操作は、マネジメントコンソールやAWS CLIなどから行うことができます。

パラメータ

テンプレートの記述にパラメータを使用することで、スタックを作成または更新する際に任意の値を入力することができます。

また、プロパティとして、「データ型」「デフォルト値」「最大値」「最小値」などをあらかじめテンプレートに記載し、設定することも可能です。

【参考】

2. HAクラスター構成

本記事では、東京リージョンのAWS環境に「VIP制御によるHAクラスター」を構築します。
HAクラスターの構成図は以下の通りです。

上記の構成図のうち、今回CloudFormationで自動構築するリソースは以下の通りです。

また、構成図に記載はありませんが、本記事では以下についても自動構築しています。

ルートテーブル

  • 各種インスタンス(操作用クライアント、現用系サーバー、待機系サーバー)間で相互通信するためのルート
  • 現用系サーバー、待機系サーバーがインターネットに出るために必要なNATインスタンスへのルート
  • AWS仮想IPリソースで設定する仮想IPアドレスへのルート

セキュリティグループ

  • 操作用クライアント
  • インターネットからリモートデスクトップでアクセスするための許可設定
  • 現用系サーバー、待機系サーバー
  • 操作用クライアントからアクセスするための許可設定
  • 現用系サーバー、待機系サーバー間でCLUSTERPROが通信するための許可設定

上記の設定は、「Amazon Web Services 向け HA クラスタ 構築ガイド」における「VIP 制御による HA クラスタの設定」の「VPC 環境の設定」に相当します。
なお、セキュリティグループにつきましては一例となりますので、適宜社内ポリシーなどにしたがって修正してください。

【参考】
  • Windows > クラウド > Amazon Web Services > HAクラスタ構築ガイド
  • Linux > クラウド > Amazon Web Services > HAクラスタ構築ガイド

3. HAクラスターの構築手順

CloudFormationテンプレートを用いて、上述した「VIP制御によるHAクラスター」を構築するまでの手順をご紹介します。

3.1 テンプレートの入手

以下のリンクよりテンプレートファイル(clusterpro_2node_vip.yaml)をダウンロードします。

  • 本テンプレートファイルは東京リージョンでの利用を前提としているため、以降の手順は東京リージョンで実施することを推奨します。
  • 本テンプレートファイルで構築できる環境は、Windows/Linuxの各OSに対応しています。指定したOSで構築したい場合は、スタック作成時に指定するAMIのパラメータを適宜変更してください。

3.2 スタックの作成

入手したテンプレートファイルを用いてスタックを作成します。

  • 画面は記事執筆時点のものであり、現在とは異なる場合があります。

  • 1.マネジメントコンソールでCloudFormationを表示します。

  • 2.「スタックの作成」ボタンから「新しいリソースを使用(標準)」を選択します。

  • 3.「ステップ1 テンプレートの指定」画面が表示されます。
    テンプレートの指定でテンプレートソースに「テンプレートファイルのアップロード」を選択した後、「ファイルの選択」ボタンから「3.1 テンプレートの入手」でダウンロードしたテンプレートファイルをアップロードします。

    アップロード後、「次へ」ボタンで先に進みます。

  • 4.「ステップ2 スタックの詳細を指定」画面が表示されます。
    スタックの名前とパラメータを入力します。

設定するパラメータは以下の通りです。必要に応じて変更してください。

パラメータ 説明
AmiIdServer1 現用系サーバーのEC2として起動するAMI ID
  • 構築環境のOSに合わせてAMIを選択してください。
AmiIdServer2 待機系サーバーのEC2として起動するAMI ID
  • 構築環境のOSに合わせてAMIを選択してください。
  • 通常は現用系サーバーと同じAMI IDを設定します。
AmiIdServerClient 操作用クライアントのEC2として起動するAMI ID
  • WindowsのAMIを指定してください。
    (本テンプレートファイルでは Windowsを前提としています)
IPAddressClientComputers 操作用クライアントにRDP接続するマシンのIPアドレス(CIDR表記)
例)10.0.0.10/32、10.0.0.0/24 など
InstanceTypeServer1 現用系サーバーのインスタンスタイプ
InstanceTypeServer2 待機系サーバーのインスタンスタイプ
InstanceTypeServerClient 操作用クライアントのインスタンスタイプ
KeyPairName 各EC2インスタンスへのログインに使用するキーペア名
NameSuffix 各AWSリソースに付与するNameタグ(検索用タグ)に含める接尾辞
OSType 現用系サーバー・待機系サーバーに使用するOS(Windows/Linux)

入力後、「次へ」ボタンで先に進みます。

  • 5.「ステップ3 スタックオプションの設定」画面が表示されます。
    そのまま画面下部の「次へ」ボタンで先に進みます。

  • 6.最後のステップ「ステップ4 レビュー」画面が表示されます。
    各種設定値が正しいことを確認してください。

確認後、IAMリソースに関する承認にチェックを入れてから「スタックの作成」ボタンで先に進みます。

  • 7.これでスタックの作成が開始されます。
    作成状況は以下のようにマネジメントコンソール上から確認できます。

ステータスが以下のようにCREATE_COMPLETEになれば完了です。

3.3 トラブルシューティング

以下のように「Not authorized for images: [ami-XXXXXXXXXXXXXXXXX]」エラーが出ることがあります。

apx_failed_not_authorized

これはAMI IDが存在しないことが原因と考えられます。既存のAMI IDを探して指定してください。

AMIの検索はEC2インスタンスの作成画面から実行できます。

3.4 サーバー設定とHAクラスター設定

スタックの作成が完了しましたら、操作用クライアントにログインしてHAクラスター構築と動作確認を行います。
以降の手順につきましては、以下のガイドを参照してください。

【参考】
  • Windows > クラウド > Amazon Web Services > HAクラスタ構築ガイド
  • Linux > クラウド > Amazon Web Services > HAクラスタ構築ガイド

なお、HAクラスター構築時に使用するIPアドレス、VIPアドレス、VPC IDやENI IDなど一部情報は管理画面の「出力」タブから確認することができます。

4. スタック作成後の操作について

スタックを作成した後の操作に関する注意点をいくつか取り上げます。

スタック作成後のリソース更新について

スタックから作成した環境のAWSリソースに対して何らかの変更(追加・更新・削除)を加えたい場合は、マネジメントコンソール上から直接操作するのではなく、「テンプレートファイルの修正」と「再アップロード」にて行うことを推奨します。

これは、CloudFormationが常にスタックの操作のみで「そのスタックが作成したAWSリソース」を制御するようになっているためです。無闇にマネジメントコンソール上で変更を加えると、この整合が取れなくなり、問題が生じることがあります。

たとえばスタック[Stack-A]を作成した後、マネジメントコンソール上で、[Stack-A]に紐づく新しいリソース[Resource-A]を追加してしまうと、この[Stack-A]を削除する時に失敗します([Resource-A]の削除が行えず、DELETE_FAILEDになります)。

スタックの削除について

スタックの削除はCloudFormationの管理画面から行うことができます。

ステータスがDELETE_COMPLETEになれば削除完了です。
ステータスがDELETE_FAILEDとなった場合は、管理画面から詳細を確認して適宜対処してください。

さいごに

CloudFormationでHAクラスター環境の構築を一部自動化してみました。

今回自動化したのはAWSリソースの作成部分のみでしたが、従来の手作業による作成と比べて、短時間で自動構築できました。
テンプレートの作成やメンテナンスこそ必要ですが、手作業で生じる手間やミスを軽減できる点は魅力的だと思います。

本記事の構成をご検討の際は、CLUSTERPROのpopup試用版を用いて検証した後、ご提案・構築ください。

お問い合わせ

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