マルチAZイメージ
同一リージョン内の複数のAZを使った構成のことをマルチAZといいます。マルチAZ構成にすることで、障害によるサービス停止の確率を低減することが可能です。可用性や耐障害性以外にも、「スケールアウトしやすいインフラ環境になる」というメリットもあります。
以下に、ディーネットにてマルチAZ構成を組む場合の考慮ポイントやメリットについてご紹介します。
参考事例はこちら:https://denet.ad.jp/case/takarush/
マルチAZ構成にする場合の考慮ポイント
マルチAZ構成例
マルチAZ構成では、同等の機能を持ったサーバーを複数リージョンへ分散配置させることになります。サーバーが複数あることで、1台構成のときには問題にならなかったことが課題になってきます。
マルチAZ構成を組む時の最も大きな課題は「データの整合性」です。システムの特性にもよりますが、WEBサーバーなど同等の機能を持ったサービス間では同じデータを保持する必要があります。
データの整合性を確保しつつ、最適なコストで環境構築するためには、次のようなデータの整合性について考慮する必要があります。
・データベース
・セッション情報
・画像等の静的ファイル
・プログラムファイル
・ログ
以降で、各データの整合性についての考慮点を説明していきます。
セッション情報
セッション情報の保存場所
ユーザーのログイン情報など、一時的な情報をセッション情報といいます。セッション情報は、読み書き頻度が高いため、WEBサーバー内のメモリに保存されることが多くあります。
セッション情報をメモリ上に保存している場合、WEBサーバーが1台の時は問題無く動作しますが、複数台になると都合が悪い自体が発生します。ログイン時に作成されたセッション情報はログアウトまで参照され続けなければなりません。しかしながら、ログイン時と次の遷移で別のサーバー上で処理が行われた場合、セッション情報が存在せずにログイン状態が維持されない事態が発生します。
それを回避するためには大きく分けて二つの方法があります。
・ELBで振り分けサーバーの固定を行う(StickySession)
・ElastiCacheなどインメモリのデータベースを使う
画像等の静的ファイル
EFSで静的コンテンツを共有
画像などの静的コンテンツの共有方法も検討する必要があります。静的コンテンツが増えるタイミングは2つ考えられます。
・WEBサービスの利用者がアップロード
・管理者がアップロード
複数のWEBサーバー間で同じコンテンツを参照する必要があります。しかも、サービス利用者がアップロードする可能性があるので、参照だけでなく更新も同時に行えることが重要です。
AWSでは、ファイル共有サービスとして「Amazon Elastic File System(EFS)」が用意されています。EFSはEC2とNFSマウントが可能です。EFSを利用することで、WEBサーバー間で同一ファイルの参照・更新を行うことが可能です。
ただし、NFSマウントは、あまり性能が良くない。という課題があります。そのため、頻繁に読み書きが発生するファイルを保存する場合は注意が必要です。特に、プログラムファイルやログファイルはトラブルになることが多くあります。
プログラムファイル
lsyncdでプログラムを同期
プログラムをEFS上に置いた場合、アクセスが増えてくると性能の問題を引き起こすケースがあります。そのため、EFS以外の方法でファイル共有を検討する必要があります。
通常、プログラムを更新するのは管理者のみです。プログラムを更新する場合はマスタとなるサーバーを更新し、他のサーバーには自動同期させる。という運用ルールを決めることで、対応が可能です。マスタとなるサーバーで更新されたプログラムは、「lsyncd」等のミドルウェアを使い、自動的に他のWEBサーバーに反映させます。
他にも手動ですべてのWEBサーバーのコンテンツを更新する方法や、git等を使ってデプロイする方法も考えられるので、自社に合ったやり方を選択しましょう。
プログラムファイル
ログファイルの保存も検討が必要です。通常は、WEBサーバー自体に保存しておいても問題はありません。しかしながら、AutoScaling等を利用する場合は、サーバーの縮退とともにログも削除されてしまいます。それでは都合が悪い場合は、ログの保存場所も検討しましょう。
ログファイルにもよりますが、アクセスログなどは高頻度の読み書きが発生します。EFSなどに出力してしまうと、性能の問題を引き起こします。そのため、CloudWatchLogsやAmazon S3へ保存する方法がおススメです。
マルチAZにした場合のコスト
マルチAZにすることで、シングルAZと比較すると当然コストも上がってきます。ELB等要素が増えていきますが、おおむねシングルAZの2倍程度の費用感と考えておけば問題ありません。
なぜマルチAZ構成にするのか?
アベイラビリティゾーン (Availability Zone) とは、「1つの AWSリージョン内でそれぞれ切り離され、冗長的な電力源、ネットワーク、そして接続機能を備えている 1つ以上のデータセンター」のことです。マルチAZ環境をAWS登場以前に実現しようと思うと、複数のデータセンターを借り、データセンター間の専用線接続を行うなど、非常に手間とコストがかかるものでした。AWSの登場により、劇的に導入しやすくなり、次のようなメリットを享受することができます。
まとめ
ディーネットがサーバ構築する場合の、マルチAZの考慮点をご紹介しました。
マネジメントコンソールから簡単にマルチAZ構成を組むことはできますが、適材適所でサービスの使い分けが必要なことがお分かりいただけたかと思います。
お客様の要件にあった環境構築を提供しますので、お困りの場合はディーネットまでご相談ください。