03 リージョン・AZ・負荷分散方式

~この記事の中身~

AWSのサービス内容について纏めてみるよ

前置き

勉強・作業をしていく上で、抑えておくべきAWSの基礎知識。

その初歩のリージョン・AZといったデータセンターの単位や、負荷分散のやり方について纏めてみます。

AWSにおけるAZ

AZ(アベイラビリティーゾーン)は複数のデータセンターをまとめたもの。

 

それぞれ、地理的にも電力的にも独立しているため、落雷や、大雨でAZの一つに避けようのない障害が起こったとしても、他のAZのサービス等に影響は及ばないようです。

リージョン

リージョンは先程のAZを更に国などの大きな括りで纏めたもの。

 

同じリージョン内にあるサーバ間は専用のラインが繋がれているので、とっても遅延が少ない状態で相互に通信できる状態になっています。

 

先程説明したAZの独立性や、専用のラインによる低遅延通信に併せて、サーバやデータを各リージョン内のAZ間で冗長的に(予備を追加して二重三重に)配置することで、利用者はほとんど障害の発生に関係なく、サービスを利用できるようになる感じです。

 

あるAmazon内のDNSサービスを使い、複数のリージョンに渡ってサーバやデータを配置すれば、更に安定して使えるシステムを使えるらしいですね。

AWSで提供されるサービスの種類

AWSではサーバ、負荷管理、セキュリティなどのサービスがありますが、これらのサービスはリージョンごとに、AZごとに、どこからでも自由に、利用できるものに分かれていますね。

 

それぞれ、リージョンごとに作成でき、管理も行うリージョンサービス、AZごとに作成・管理を行うことになるAZサービス、どこのリージョンからでも利用できるグローバルサービスとなっています。

 

リージョンサービスを利用する場合、プライベートIPアドレスではなくグローバルIPアドレスで接続しなければならなくなる、サービスによってサーバの可用性が上がる配置方法が異なるなど、組み合わせて使う場合には、注意が必要になるようです。

AWS内のサーバ負荷分散

AWSのサービスとして配置することのできるインスタンスのサーバですが、もしこれをまともに他の人にも利用できるサービスを提供する場として使うのであれば、当然アクセスの負荷に耐えられる状態を作る必要がありますよね。

 

そうした時に一番負荷になるのはトラフィック(要するにインターネットやLANといったネットワーク上に流れているデータの量)です。

 

それを解決できるサービスの例が、ELBです。

HTTP用のALB(以下Application Load Balancer)、

高パフォーマンスのNLB(以下Network Load Balancer)、

EC2用のCLB(以下Classic Load Balancer)の3種類があるのですが、

自分はEC2を使っているのでCLBを利用。

 

所謂、負荷分散サービス(ロードバランサー)ですね。

 

この負荷分散の手法にはいくつか種類があるのですが、今回は、そのうち静的なもの(いつどこでアクセスされても同じ条件で働くもの)を紹介します。

 

ラウンドロビン方式

均等にアクセスを振り分けるやり方。

例えば奇数回目のアクセスなら、1つ目のサーバ(インスタンス)に、偶数回目のアクセスなら2つ目のサーバ(インスタンス)に振り分けるといった動きをするイメージです。

 

②スティッキーセッション

ユーザをIDなどで識別し、Cookieなどで記録。

 

以後、リクエストがある度に決まったサーバ(インスタンス)に振り分けるルーティンを使う手法です。Classic Load Balancer のスティッキーセッションの設定 - Elastic Load Balancingによれば、Cookieによる固定以外に予め定めた期間ユーザのリクエストを固定する方法もあるみたいですね。

 

ここまで情報を纏めたところで、次回はAWSのセキュリティ面(IAM)について、書いていこうと思います。

 

以上!