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

Amazon Elastic File Systemを利用したHAクラスターの構築を試してみました(Linux)

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

はじめに

Amazon Web Services(以降、AWS)において、Amazon Elastic File Systemを利用したHAクラスターの構築を試してみました。Amazon Elastic File Systemとは、Amazon EC2インスタンス(以降、EC2インスタンス)で使用できるファイルストレージです 。

今回は、本サービスをサーバー間の共有ストレージ(データ引き継ぎ場所)として利用したHAクラスターを構築します。

この記事の内容

  • 1.Amazon Elastic File Systemとは
  • 2.HAクラスター構成
  • 3.HAクラスター構築手順
  • 3.1HAクラスター構築の事前準備
  • 3.2VIP制御によるHAクラスターの作成
  • 4.動作確認

1. Amazon Elastic File Systemとは

Amazon Elastic File System(以降、Amazon EFS)はEC2インスタンスで使用できるファイルストレージで、複数のサーバー間でストレージを共有する必要がある際に利用することができます。また、必要に応じてストレージ容量を自動伸縮できます。

これまでAWS上のHAクラスターでデータを共有する方法として、CLUSTERPROのミラーリング機能を利用していました。今回Amazon EFSと組み合わせることで、共有ストレージに対応したHAクラスターも構築でき、AWS上でのHAクラスター構成の幅が広がります。

2018年3月20日現在はアメリカや欧州のリージョンでサービス提供されていますが、東京リージョンではまだサービス提供されていません。本検証では、バージニアリージョンを利用しています。
Amazon EFSの動作対象OSはLinuxのみで、Windowsは含まれていません。

2. HAクラスター構成

今回はVIP制御によるHAクラスターを構築し、HAクラスター対象のアプリケーションにはpopupMinioを使用します。Amazon EFSは現用系サーバーから接続できるようにCLUSTERPROから制御します。

HAクラスターの構成

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

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

3.1.1 VPCの設定

事前にVPCを作成します。VPCの構成は以下の通りです。
なお、HAクラスターを構築するVPCの名前解決の設定は、無効から有効にしてください。設定が無効の場合、次に作成するAmazon EFSへの接続に失敗しますので注意してください。

  • VPC(VPC ID:vpc-1234abcd)
  • CIDR:10.0.0.0/16
  • Subnets

  • Subnet-1a (サブネット ID:sub-1111aaaa):10.0.10.0/24
  • Subnet-2a (サブネット ID:sub-2222aaaa):10.0.100.0/24
  • Subnet-1c (サブネット ID:sub-1111cccc):10.0.20.0/24
  • Subnet-2c (サブネット ID:sub-2222cccc):10.0.200.0/24

  • RouteTables

  • Main (ルートテーブル ID:rtb-00000001)

  • >10.0.0.0/16 → local
  • >0.0.0.0/0 → igw-1234abcd (Internet Gateway)
  • >20.0.0.100/32 → eni-1234abcd (ENI ID)

  • Route-A (ルートテーブル ID:rtb-0000000a)

  • >10.0.0.0/16 → local
  • >0.0.0.0/0 → eni-1234abcd(NAT1のENI ID)
  • >20.0.0.100/32 → eni-1234abcd (ENI ID)

  • Route-C (ルートテーブル ID:rtb-0000000c)

  • >10.0.0.0/16 → local
  • >0.0.0.0/0 → eni-1234abcd(NAT2のENI ID)
  • >20.0.0.100/32 → eni-1234abcd (ENI ID)

VPC

3.1.2 Amazon EFSの設定

Amazon EFSを作成します。Amazon EFSの作成とEC2インスタンスへのマウント手順は、popupAmazon Elastic File System の開始方法を参照ください。
作成したAmazon EFSのDNS名はEC2インスタンスへのマウント時に使用しますので、控えておきます。

マウントポイント(例.efs)を作成します。HAクラスターを構成する各サーバーで作成してください。

# mkdir /mnt/efs

Amazon EFS上のファイルに対して不特定のサーバーから同時アクセスが発生した場合、ファイルが破損する恐れがあります。アクセス元を制限するため、HAクラスターを構築するサーバーからのみAmazon EFSへアクセスできるようセキュリティグループの設定をしてください。
HAクラスターを構成するサーバーのAmazon EFSに対するアクセスは、CLUSTERPROがAmazon EFSをマウント/アンマウントすることにより制御します。

【参考】

3.1.3 Minioの設定

次に、HAクラスターを構成するサーバーにMinioをインストールします。インストール手順については、popupMinio Quickstart Guideを参照してください。Minioのインストール先は任意の場所を指定してください。今回はルートディレクトリの配下に作成した/workにインストールします。インストール後、各サーバーでMinioの動作確認をします。マウントしたAmazon EFSを参照するようにMinioのサービスを起動します。

# /work/minio server /mnt/efs

動作確認後、Minioのサービスを各サーバーで停止します。

# pgrep minio | xargs kill

3.2 VIP制御によるHAクラスターの構築

3.2.1 グループリソースの登録

CLUSTERPROのフェールオーバーグループには「AWS仮想IPリソース」「NASリソース」「execリソース」を登録します。

AWS仮想IPリソースは、ルートテーブルの書き換えにより接続先の切り替えを実現します。AWS仮想IPアドレスには「20.0.0.100」を設定します。設定手順については、popupCLUSTERPRO X 3.3 Amazon Web Services 向け HAクラスタ構築ガイド(Linux 版)を参照ください。

NASリソースは、NFSサーバーのマウント/アンマウントを制御し、現用系サーバーのAmazon EFSへの接続を可能にします。グループリソースのタイプは「nas resource」を選択します。Amazon EFS作成時に控えておいたDNS名をサーバ名に入力し、共有名には「/」、マウントポイントには「/mnt/efs」を指定します。

「調整」ボタンを押して、「NAS」タブのPingタイムアウトを0秒に変更してください。

execリソースは、HAクラスター対象のMinioの起動と停止を制御するリソースです。スクリプトによって、起動と停止を実行します。起動スクリプト(start.sh)、停止スクリプト(stop.sh)にそれぞれMinioを起動/停止するスクリプトを記載します。

起動スクリプト

/work/minio server /mnt/efs

停止スクリプト

pgrep minio
if [ $? -eq 0 ];
then
     pgrep minio | xargs kill
     exit $?
else
     exit 0
fi

「調整」ボタンを押して、開始スクリプトを同期モードから非同期モードへ変更してください。

3.2.2 モニタリソースの登録

次にAmazon EFSにアクセスできるか否かを監視するリソースを登録します。モニタリソースのタイプは「disk monitor」を選択します。監視タイミングは「活性時」を選択し、対象リソースにはAmazon EFSの制御を行うNASリソースを指定します。

監視方法は「WRITE(FILE)」を選択します。監視先には任意のファイル(例.monitor.txt)を指定し、I/Oサイズには1バイトに設定します。

次にMinioのサービスを監視するリソースを登録します。モニタリソースのタイプは「pid monitor」を選択します。監視タイミングは「活性時」を選択し、対象リソースにはMinioの制御を行うexecリソースを指定します。

4. 動作確認

WebManagerより、フェールオーバーグループが正常に起動したことを確認します。

仮想IPアドレスを使用してMinioに接続し、バケット(例.test)を作成します。

テキストファイル(例.test.txt)をバケットにアップロードします。

フェールオーバーの動作確認のために、WebManagerから手動フェールオーバーを実行します。

仮想IPアドレスを使用して、再度Minioに接続します。手動フェールオーバー前に作成したテキストファイルが参照できれば成功です。

さいごに

今回はAmazon EFSを使用したHAクラスター構成について、ご紹介しました。HAクラスターを構成するサーバーの共有ストレージとしてAmazon EFSを使用できることを確認しました。

お問い合わせ

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