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

AWS上でProxyサーバーを利用したHAクラスターを構築してみました(Windows/Linux)

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

はじめに

Amazon Web Services(以降、AWS)上で、Proxyサーバーを利用したHAクラスターを構築してみました。

popup以前のブログではVPC エンドポイントを利用した、HAクラスターからインターネットへのアクセスが不要な構成をご紹介させていただきました。しかし、AWSのサービスの中にはVPC エンドポイント経由では利用できないものがあるため、インターネットへのアクセス経路が必要になる場合もあります。
インターネットへのアクセス経路を用意する場合、NATやNATゲートウェイを利用する方法もありますが、Proxyサーバーを利用することで、よりセキュアなインターネットへのアクセス経路を実現できます。

ただし、Proxyサーバーを利用する構成の場合、事前に環境変数へ設定を追加するなどの注意事項があります。
今回はProxyサーバーを使用して、DNS名制御によるHAクラスターを構築する方法を注意事項を含めてご紹介します。

この記事の内容

1. Proxyサーバーを利用するメリット

CLUSTERPRO XのAWS関連のグループリソースおよびモニタリソースを使用する場合は、AWS CLIが実行できる環境を用意する必要があります。AWS CLIの実行時は、各インスタンスがリージョンのエンドポイントと通信する必要があり、基本的にHAクラスターがインターネットへアクセスする必要があります。HAクラスターがリージョンのエンドポイントと通信するには、Proxyサーバー/NAT/Public IP/EIP/VPC エンドポイントなどを利用する方法があります。

popup以前のブログでご紹介したVPC エンドポイントを利用した構成では、HAクラスターからAWS CLIを利用してインターネットへアクセスせずに、リージョンのエンドポイントにアクセスすることが可能となります。
  • VPC エンドポイントとはインターネットゲートウェイやNATゲートウェイ、NATインスタンスなどを経由することなく、VPCと他のAWSのサービスとをプライベートに接続できるAWSのサービスです。

ただし、一部のサービス(例:Amazon Route53など)はVPC エンドポイント経由では利用できないため、別途インターネット(Amazon Route53用のエンドポイント)へのアクセス経路を用意する必要があります。このような場合にProxyサーバーを利用することで、NATやNATゲートウェイを利用する方法に比べて、よりセキュアなインターネットへのアクセス経路を実現できます。

なお、オンプレミス環境と同等のセキュリティ設定を持つProxyサーバーをAWS上に作成することが難しい場合は、AWSからオンプレミス環境にあるProxyサーバーを利用するケースがあります。AWSとオンプレミス環境がAWS Direct Connectなどで接続されている場合は、オンプレミス環境のProxyサーバーを使用することで、オンプレミス環境と同等に接続先を制限することが可能です。

2. HAクラスター構成

東京リージョンのAmazon Virtual Private Cloud(以降、VPC)環境に、「DNS名制御によるHAクラスター」を構築します。今回は、オンプレミス環境にProxyサーバーを用意するパターンで試します。

オンプレミス環境の疑似環境として、シンガポールリージョンにクライアントマシン、Proxyサーバーを配置し、シンガポールリージョンと東京リージョンのVPC間をVPNで接続します。
  • 実際にオンプレミス環境から接続する場合は、以降のシンガポールリージョンをオンプレミス環境に読み替えてご参照ください。

構成は以下の通りです。

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

「DNS名制御によるHAクラスター」を構築します。

3.1 HAクラスター構築の事前準備

事前にVPCやEC2インスタンスを作成します。VPCの構成は以下の通りです。

Proxyサーバーはシンガポールリージョンに作成します。今回はAmazon Linux 2を利用し、Squidをインストールしました。

  • 東京リージョン
  • VPC(VPC ID:vpc-1234abcd)
  • CIDR:10.0.0.0/16
  • Subnets
  • Subnet-A2 (サブネット ID:sub-2222aaaa):10.0.110.0/24
  • Subnet-C2 (サブネット ID:sub-2222cccc):10.0.120.0/24
  • Instance
  • 現用系EC2 (インスタンス ID:i-2222aaaa):10.0.110.100
  • 待機系EC2 (インスタンス ID:i-2222cccc):10.0.120.100
  • シンガポールリージョン
  • VPC(VPC ID:vpc-5678cdef)
  • CIDR:11.0.0.0/16
  • Subnets
  • Subnet-A1 (サブネット ID:sub-1111aaaa):11.0.10.0/24
  • Instance
  • 操作用EC2 (インスタンス ID:i-1111aaaa):11.0.10.100
  • vyos (インスタンス ID:i-1111bbbb):11.0.10.150
  • proxy (インスタンス ID:i-1111cccc):11.0.10.200

Squidをインストール後、「squid.conf」に設定を追加します。ACL名を追加し、追加したACL名に対してアクセス許可を設定します。設定後、Squidを再起動します。
また、Squidで利用するポートにあわせて、セキュリティグループも設定してください。
  • 検証目的のため簡易な設定としていますので、お試しの際は適切に設定してください。

以下の設定を追加します。★部分の値は実際の環境に合わせて設定してください。
# vi /etc/squid/squid.conf
 acl myacl src 10.0.0.0/16 ★
 http_access allow myacl
 ※ http_access deny allの記述より手前の位置に追加します。

その他のAWS環境における事前準備の詳細は、以下の構築ガイドを参照ください。

【参考】
  • Amazon Web Services > HAクラスタ 構築ガイド
    → DNS 名制御によるHA クラスタの設定
     → VPC 環境の設定
      → インスタンスの設定
  • Amazon Web Services > HAクラスタ 構築ガイド
    → DNS 名制御によるHA クラスタの設定
     → VPC 環境の設定
      → インスタンスの設定

3.2 HAクラスターの構築

3.2.1 DNS名制御によるHAクラスターの構築

「DNS名制御によるHAクラスター」を構築します。今回は「AWS DNSリソース」、「ミラーディスクリソース」の2つを登録しました。
AWS DNSリソースを使用したHAクラスターの構築手順の詳細は、以下の構築ガイドを参照ください。

【参考】
  • Amazon Web Services > HAクラスタ 構築ガイド
    → DNS 名制御によるHA クラスタの設定
     → CLUSTERPRO の設定
  • Amazon Web Services > HAクラスタ 構築ガイド
    → DNS 名制御によるHA クラスタの設定
     → CLUSTERPRO の設定

3.2.2 Proxyサーバー経由でAWS CLIの実行

Proxyサーバー経由でAWS CLIを実行するには、環境変数にHTTP_PROXYとHTTPS_PROXYの設定を行う必要があります。
また、IAMロールをインスタンスに割り当てて使用する場合は、インスタンスメタデータへのアクセスに使用されるアドレス(169.254.169.254)に対してProxyを使用しないように、あわせて環境変数にNO_PROXYの設定を行います。

CLUSTERPRO Xでは、指定の環境変数設定ファイルに環境変数を設定することで、AWS関連リソースから実行されるAWS CLIに環境変数を反映させることができます。ここで設定した環境変数は、AWS関連リソース(今回はAWS DNSリソース)から実行されるAWS CLIにのみ、反映されます。

環境変数設定ファイルへ以下の環境変数を追記します。
  • ★部分の値は実際の環境に合わせて設定してください。
 HTTP_PROXY = http://11.0.10.200:3128 ★
 HTTPS_PROXY = http://11.0.10.200:3128 ★
 NO_PROXY = 169.254.169.254

詳細は「リファレンスガイド」を参照ください。

【参考】
  • リファレンスガイド
    → グループリソースの詳細
     → AWS DNS リソースを理解する
      → AWS DNS リソースから実行するAWS CLI へ環境変数を反映させるには
  • リファレンスガイド
    → グループリソースの詳細
     → AWS DNS リソースを理解する
      → AWS DNS リソースから実行するAWS CLI へ環境変数を反映させるには

一点、注意事項として、AWS関連リソース以外のスクリプト(例えばスクリプトリソースやEXECリソースから実行されるスクリプト)内で実行されるAWS CLIについては環境変数が反映されません。そのため、スクリプトリソースやEXECリソースなどのスクリプト内でAWS CLIを実行する場合、必要な環境変数は該当するスクリプト内で設定する必要があります。

また、今回の設定では不要ですが、setxコマンドや、exportコマンドを用いることで、OSから実行されるAWS CLIに環境変数を反映することが可能です。CLUSTERPRO Xの指定する環境変数設定ファイルと併用することで、CLUSTERPRO XのAWS関連リソースから実行されるAWS CLIに反映させたい環境変数と、OSから実行されるAWS CLIに反映させたい環境変数を分けて設定することができます。

設定手順は以下のサイトを参考にしてください。

3.2.3 Transit Gatewayの作成

Transit Gatewayを作成し、東京リージョンとシンガポールリージョンをVPNで接続します。設定方法はpopup以前のブログでご紹介した「4.2 Transit Gatewayの作成」を参考にしてください。

4. 動作確認

東京リージョンから、シンガポールリージョンへ通信が行えることを確認します。
次にHAクラスターを起動し、フェールオーバーグループが正常に起動(AWS DNSリソースが活性)することを確認します。
また、待機系にフェールオーバーした際に、フェールオーバーグループが正常に起動(AWS DNSリソースが活性)することを確認します。

  • 1.現用系EC2でフェールオーバーグループを起動します。
    フェールオーバーグループが正常に起動(AWS DNSリソースが活性)することを確認します。
  • 2.操作用EC2からリモートデスクトップを実行(接続先にtest.clusterpro.localを指定)します。
    現用系EC2に接続できることを確認します。
  • 3.Cluster WebUIから、フェールオーバーグループを現用系EC2から待機系EC2に、手動で移動します。
  • 4.待機系EC2でフェールオーバーグループが正常に起動(AWS DNSリソースが活性)することを確認します。
  • 5.操作用EC2からリモートデスクトップを実行(接続先にtest.clusterpro.localを指定)します。
    待機系EC2に接続できることを確認します。

Proxyサーバー経由でAWS CLIが実行できることを確認できました。

まとめ

今回は、Proxyサーバーを利用した、DNS名制御によるHAクラスターの構築手順をご紹介させていただきました。Proxyサーバーを利用することで接続先の制限が可能となり、よりセキュアなアクセス経路を実現することができるようになりますので、是非お試しください。

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

お問い合わせ

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