Amazon Web Services ブログ

新発表 – すべてのアプリケーションに可用性とパフォーマンスの向上を提供するAWS Global Accelerator

以前、法規制等によりユーザデータを地理的に分離してデータ主権法を遵守する必要がある分野で働いていた経験から、私は複数の国に展開されたインフラストラクチャを必要とするグローバルワークロードを実行することの複雑さを証明することができます。可用性、パフォーマンス、そしてフェイルオーバーなどすべての要素はヤクの毛をかる(モグラ叩きのように次から次に問題が発生して切りがないという意味)ような果てしない作業になります(まるであなたが過去にデータセンターを拡張したように)。お客様は我々に複数のリージョンでオペレーションを行う必要があると言います。それは可用性のためである場合もあれば性能のためでもあり、規制に対応するためである場合もあります。ワークロードをAWS CloudFormationでテンプレート化し、Amazon DynamoDB Global Tableを使うことでデータベースをレプリケーションできること。そして、AWS SAMを使ってサーバレスのワークロードをデプロイできることについてはとても満足いただいています。これらの作業の実施は短時間で実行することができるとともに、グローバルな体験を顧客に対して提供することができます。また、お客様には地理的な隔離により、AWSがblast radiusすなわち問題の地理的連鎖の排除が実現でき、その結果として可用性が向上することについても満足を頂いています。しかし一方で、お客様はアプリケーションの部分においてもう少し有効な機能を提供することを望まれています。

AWS Global Acceleratorの紹介

これが、私がAWS Global Acceleratorの発表について喜ばしく思う理由です。ネットワークサービスとしてシームレスに複数のリージョンにトラフィックをルーティングすることを可能とし、エンドユーザに対して可用性とパフォーマンスの向上を実現します。AWS Global AcceleratorはAWSが持つ大規模で可用性が高く、混雑が発生しにくいグローバルネットワークを利用することにより、あなたのエンドユーザをインターネットのトラフィックをから直接あなたのアプリケーションが動くAWSリージョンに誘導します。AWS Global Acceleratorを利用することであなたのユーザーはあなたのワークロードに対して、地理的条件やアプリケーションの稼働状況、そしてあなたが設定したウエイトに基づいて接続します。AWS Global Acceleratorはまた固定されたエニーーキャストのIPアドレスに関連付けられます。これは全世界でユニークな値としてあなたのアプリケーションの値になり変更されることはありませんので、クライアントがあなたのアプリケーションのスケールに合わせてIPの更新を行う必要性がなくなります。あなたはAcceleratorをプロビジョニングし、Network Load Balancer、Application Load BalancerまたはElastic IP adressesと関連付けることから開始することができます。AWS Global Acceleratorは2つの固定されたエニーキャストIPアドレスをAWS ネットワークから割当を行います。これがあなたのワークロードのエントリーポイントとして提供されます。AWS Global AcceleratorはまたTCPとUDPのプロトコルをサポートし、ターゲットとなるエンドポイントをヘルスチエックすることによりアンヘルシーなアプリケーションへのルートを回避することもできます。メディア、金融機関またはゲーム業界により利用されるようなLow Latency(低レイテンシ)が求められるアプリケーションは特にAcceleratorが利用するAWSのグルーバルネットワークの利用とユーザとエッジロケーションの間の最適化機能が有効です。


Image 1 – How it works

覚えておくべきこと

固定されたエニーキャストIP – Global Acceleratorは固定されたIPを利用します。これはどのAWSリージョンにおいてホストされるアプリケーションに対しても、その数にかかわらず固定されたエントリーポイントを提供します。これらのIPアドレスはAWSのエッジロケーションからエニーキャストされます。つまりこれらのIPが複数のAWSエッジロケーションから広報されることにより、あなたのユーザから最も近い場所からAWSのグローバルネットワークに入ることを可能にします。これらのアドレスをリージョンにあるNetwork Load Balancer、Application Load BalancerまたはElastic IP adressesのようなAWSのリソースまたはエンドポイントと関連付けることができます。クライアントに対応するためのDNSレコードの変更などの作業は必要ありません。

AWS Global Network – Acceleratorによって誘導されたトラフィックはパブリックインターネットの代わりにモニタリングされ、混雑が起こりにくく、冗長化されたAWSのグローバルネットワークを横断します。クライアントはその地理上の位置やヘルスチェック、設定されたウェイトに基づいて適切なリージョンにルーティングされます。トラフィックはAccelerator のエニーキャストIPを広報しているAWSのエッジロケーションから入り、アプリケーションに対して最適化されたパスに対してルーティングされます。

Client State – AWS Global Acceleratorはステータスの保持を必須要件とするアプリケーションに対しても有効です。ステートフルアプリケーションに対しては初回接続後は以降のリクエストを同じエンドポイントに送ります。Global AcceleratorはこれをクライアントリクエストのソースIPをポートやプロトコルに関わらず、ステータスを維持するための識別子として利用することで実現します。

AWS Global Accelerator in Action

AWS Global Acceleratorの機能により慣れ親しむために、私はWordPressをホストする2つのEC2インスタンスを用意し、これらをApplication Load Balancerの後ろに配置しました。AWS Global Acceleratorのグローバル機能をテストするために、アプリケーションをシンガポールと東京リージョンにデプロイします。Image3でどちらから配信されたかを確認することができるようにします。クライアントから贈られたトラフィックはエッジロケーションから広報された2つのエニーキャストIPアドレスによりクライアントに最寄りのエッジロケーションに送られます。リクエストはAWSのグローバルネットワークを経由しAcceleratorにより選択された正常稼働している最寄りのエンドポイントにルーティングされます。Application Load Balancerはリクエストを終端し、コンテンツを提供するWordPressインスタンスへ渡します。


Image 2 – User Flow

私はこちらで紹介されているインストラクションに則り、2つのコンテンツサーバを構築しました。そして、ホームバナーをそれぞれのリージョンに合わせて変更し、これを使うことでどちらのパスに私がルーティングされたかを確認しやすくしました。コンテンツサーバ構築後、Application Load Balancerをそれぞれ構築した後しばらくまち、正常稼働している状態になるまでまちます。


Image 3 – Shaun’s Global Website

Global Acceleratorを名前やリスナータイプの設定(80番ポートでWordPressのためにTCP)といった最低限のもののみ指定し、それぞれのリージョンに対してエンドポイントグループを設定したものを作成します。そして、Acceleratorのリスナーを設定し、クライアントがエッジロケーションから入れるようにします。HTTPトラフィックを配信するために、80番ポートを利用するのは標準的な設定です。ソースIPを利用したクライアントアフィニティを有効化し、初回で接続したリージョンとアプリケーションに対して継続して接続するようにします。

エンドポイントグループはAcceleratorのターゲットになります。デフォルトではそれぞれのグループはtraffic dialの値が100に設定されています。この値を下げることによりクライアントを他のエンドポイントグループまたはAWSリージョンへ誘導することができます。メンテナンス時や不意に発生したトラフィックの増大を取り扱うためにも便利な機能です。今回は東京とシンガポールリージョンを選び、デフォルトである100に設定します。


Image 4 – Configure endpoint group

ヘルスチェックはとてもパワフルなツールで、簡単な設定に留める事もできますし、より詳細なアプリケーションの状態に応じた設定も可能です。今回はシンプルなWebサイトを利用しているのでデフォルトのHTTPヘルスチェックを利用し、200 OK のHTTPステータスをもとに判断します。この設定を完了させるためにはエンドポイントグループを事前に設定したApplication Load Balancerとともに展開させる必要があります。


Image 5 – Adding our ALB’s to an Endpoint Group

すべての設定が完了したらAcceleratorによりアサインされた2つのエニーキャストIPを利用しトラフィックをルーティングすることができるようになります。これはあなたのブラウザからでも実行可能です。もしくはcurlのようなHTTPクライアントからでも大丈夫です。私は全世界のユーザからのアクセスをテストしたかったので、アジア、アメリカ・ヨーロッパの様々な場所にあるプロキシを利用してどのようにトラフィックがルーティングされるかを確認しました。


Image 6 – Request being distributed to our global website.

AWS Global Acceleratorの最も有効な機能はリージョン間でのファイルオーバが1分以内に行えることです。私は1秒間に100リクエストを発行するロードテストをセットアップし、シンガポールのサーバを落としました。これによりどれ位の期間で東京のエンドポイントにルーティングされるかを確認しました。

トラフィックはAccelerator経由で3:15に開始し、3:30にシンガポールのインスタンスをシャットダウンしました、3:31には東京では約4000のリクエストを処理しておりこれはすべてのトラフィックを処理していたことになります。3:35にシンガポールのサーバを有効化したところ、ヘルスチェックのウォームアップ(90秒)からだと思いますが、3:38まで回復はしませんでした。もし私がもっとアグレッシブなヘルスチェックを設定したら、5分以内にファイルオーバとリカバリができるでしょう。

可用性と価格

AWS Global Acceleratorでは、デプロイされたAcceleratorの設定とAccelerator経由で流れたデータの量によって課金されます。Acceleratorの設定とはAWSのグローバルネットワークを利用するために設定されたリソースのことになります。お客様は通常、1つのアプリケーションに対して1つのAcceleratorの設定を作成されますが、もし複雑なアプリケーションの場合は複数のAcceleratorの設定を行う可能性があります。稼働しているすべてのAcceleratorに対して固定の時間単位課金費用がかかります。また、通常のデータ転送費用に加えて従量課金の費用がかかります。これは通常のデータ転送の費用と区別するためにプレミアムデータ転送(DT-Premium)と呼びます。DT-Premiumはあなたが利用したトラフィックが毎時間集計されます。その中身はあなたのアプリケーションに対するインバウンドのトラフィックとアプリケーションがユーザに対して返したアウトバウンドのトラフィックの量からなります。

固定費用: アカウント内で動いているAccelerator毎に1時間(1時間未満の場合は繰り上げ)毎に$0.025
Data Transfer Premium fee(DT-Premium):AWSネットワークで転送されたGBあたりの課金。DT-Premiumの料金はリクエストを受け付けたAWS リージョン(Source)とレスポンスを扱ったAWSエッジロケーション(Destination)により異なります。

Destination (AWS edge locations)

Source

(AWS Regions)

 NA EU APAC
NA $ 0.015 /GB $ 0.015 /GB $ 0.035 /GB
EU $ 0.015 /GB $ 0.015 /GB $ 0.043 /GB
APAC $ 0.012 /GB $ 0.043 /GB $ 0.010 /GB

 

AWS Global Acceleratorは米国東部(ノースバージニア)米国東部(オハイオ)、米国西部(オレゴン)、米国西部(カリフォルニア)、ヨーロッパ(アイルランド)、ヨーロッパ(アイルランド)、アジアパシフィック(東京)、アジアパシフィック(シンガポール)で2018/11/27から利用することができます。

翻訳はソリューションアーキテクトの中谷が担当しました。原文はこちら