Japan
サイト内の現在位置を表示しています。
Amazon Elastic File Systemを利用したHAクラスターの構築を試してみました(Linux)
CLUSTERPRO オフィシャルブログ ~クラブロ~
- ※本記事のCLUSTERPRO X 5.0版を公開しています。
CLUSTERPRO X 5.0版の記事はこちら。
はじめに
Amazon Web Services(以降、AWS)において、Amazon Elastic File Systemを利用したHAクラスターの構築を試してみました。Amazon Elastic File Systemとは、Amazon EC2インスタンス(以降、EC2インスタンス)で使用できるファイルストレージです 。
今回は、本サービスをサーバー間の共有ストレージ(データ引き継ぎ場所)として利用したHAクラスターを構築します。
- ※2023年9月22日追記
ディスクモニタリソースの監視先をマウントポイント直下に作成したディレクトリ配下に修正しました。
この記事の内容
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が東京リージョンで利用可能になりました。(2018/7/13時点)
- ※Amazon EFSの動作対象OSはLinuxのみで、Windowsは含まれていません。
2. HAクラスター構成
今回はVIP制御によるHAクラスターを構築し、HAクラスター対象のアプリケーションにはMinioを使用します。Amazon EFSは現用系サーバーから接続できるようにCLUSTERPROから制御します。
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)
3.1.2 Amazon EFSの設定
Amazon EFSを作成します。Amazon EFSの作成とEC2インスタンスへのマウント手順は、Amazon Elastic File System の開始方法を参照ください。
作成したAmazon EFSのDNS名はEC2インスタンスへのマウント時に使用しますので、控えておきます。
マウントポイント(例.efs)を作成します。HAクラスターを構成する各サーバーで作成してください。
# mkdir /mnt/efs
Amazon EFS上のファイルに対して不特定のサーバーから同時アクセスが発生した場合、ファイルが破損する恐れがあります。アクセス元を制限するため、HAクラスターを構築するサーバーからのみAmazon EFSへアクセスできるようセキュリティグループの設定をしてください。
HAクラスターを構成するサーバーのAmazon EFSに対するアクセスは、CLUSTERPROがAmazon EFSをマウント/アンマウントすることにより制御します。
EFSを一度マウントし、後の「3.2.2 モニタリソースの登録」で追加するディスクモニタリソースの監視対象ファイル用のディレクトリ(例. /mnt/efs/monitor)を作成します。ディレクトリ作成後は、EFSをアンマウントします。
# mkdir /mnt/efs/monitor
3.1.3 Minioの設定
次に、HAクラスターを構成するサーバーにMinioをインストールします。インストール手順については、Minio 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」を設定します。 設定手順については、CLUSTERPRO 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)」を選択します。監視先には任意のファイル(例. /mnt/efs/monitor/diskw.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を使用できることを確認しました。
参考
お問い合わせ