2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Akamai Cloud Computing の NodeBalancer を Akamai GTM で負荷分散する

Posted at

はじめに

Akamai Cloud Computing では、インスタンスへのトラフィックの負荷分散のための製品としてNodeBalancerを提供しています。
NodeBalancerは月額10ドルで利用することができる、低コストなTCP/HTTP/HTTPSのロードバランサーです。
今回はそのNodeBalancerの性能を最大限利用するために、Akamai Global Traffic Management (GTM) と組み合わせた構成を紹介します。

NodeBalancer + Akamai GTM

NodeBalancerではNodeBalancer Limitsの制約があり、1台のNodebalancerでトラフィックを補えないケースがあります。

パフォーマンスに関する項目は下記になります。

  • 最大同時接続数:10,000
  • Network In:NodeBalancerあたり最大10Gbpsの帯域幅
  • 1 秒あたりの接続数 : 制限値はないが、TCP(レイヤー4)負荷分散ではより多くの通信が行え、 HTTP および HTTPS (レイヤー 7) の負荷分散ではレイヤー4ほどの性能は出ない

そのため、大規模なアクセスが想定されるユースケースでは、NodeBalancerを冗長化し、さらに高いパフォーマンスを発揮できる構成を組む必要があります。

NodeBalancerは複数インスタンスに付与することができるため、DNSにて負荷分散をすると制限を超えるパフォーマンスを発揮することができます。

そこで、DNS負荷分散ソリューションであるAkamai GTMを組み合わせることで下記の構成が実現します。

image.png

Akamai Global Traffic Management (GTM) とは

Global Traffic Management とはAkamaiが提供する DNS ベースでロードバランシングを提供するソリューションです。

以下の様々な振り分け機能を提供しています。

  • Mirror Failover (サイトダウン時にバックアップへ)
  • Map by geographic location etc. (地理的振り分け)
  • Weighted Random Load Balancing etc. (比率指定で負荷分散)
  • Performance-Based Load Balancing (応答時間が短くなるように負荷分散)

NodeBalancerにて利用する負荷分散では、Weighted Random Load Balancingを利用しました。

image.png

参考:Akamai GTM

構成に対して負荷試験を実施する

NodeBalancerとAkamai GTMの構成が実際に期待通りに動作するのかを確認しました。
Akamai GTM、NodeBalancerはどちらともTerraformに対応しており、検証に利用したIaCはGithubにまとめてあります。

NodeBalancerとInstanceを構築する

検証ではLinode 4 GBを12台起動し、2つのNodeBalancerをアタッチするTerraformを作成し、環境構築を行いました。

すべてのインスタンスにNginxをインストールし、負荷試験に利用するダミーファイルを作成しています。

apt update
apt install nginx
dd if=/dev/zero of=/var/www/html/dummy bs=1M count=1

image.png

Akamai GTMを構築する

作成されたNodeBalancerの2つのエンドポイントに対して、Akamai GTMの設定をTerraformで行います。
今回は重み付けを 50:50 と設定しており、均等に負荷が分散するようにしています。

image.png

作成できたAkamai GTMのDNSエンドポイントに対して複数回Digにて名前解決を行い、異なるNodeBalancerのIPアドレスを返答することを確認します。

➜  dig gtm.xxxxxx.akadns.net +short
172.233.22.2
➜  dig gtm.xxxxx.akadns.net +short
172.233.11.1

Linode Kubenetes Engine (LKE)でLocustから負荷試験を行う

Akamai Cloud Computing では KubernetesサービスであるLKEを利用することができるため、負荷試験のような並列でスケールが必要な負荷試験のユースケースで活用することができます。
また、ネットワーク転送量は0.005ドル/GBとコストが安く、他クラウドへの負荷試験も低コストで実施することができます。

今回の検証では、Linode 64 GBを20台起動して負荷試験を実施しています。

kubectl create configmap my-loadtest-locustfile --from-file ./locustfile.py

helm install locust deliveryhero/locust \
--set loadtest.locust_locustfile=locustfile.py \
--set loadtest.locust_locustfile_configmap=my-loadtest-locustfile

kubectl scale deployment locust-worker --replicas=20

kubectl --namespace default port-forward service/locust 8089:8089

Locustの管理コンソールにアクセスし、1万ユーザーの負荷試験を実施しました。

結果確認

NodeBalancerのSummary画面にて負荷状況を確認し、どちらにも均等に負荷がかかっていることを確認しました。
また、あえて高負荷の試験を行い、制限値である最大同時接続数:10,000をきっちり上限として張り付いていることも確認できました。

まとめ

NodeBalancer と Akamai GTM を利用することで、高負荷なユースケースでもスケールアウトできるロードバランシング構成を組むことができます。また、記載されている制限値いっぱいの性能をNodeBalancerが発揮することも確認できました。
Akamaiの製品を組み合わせることで、様々なユースケースに対してもComputingを活用することが可能ですので、ぜひ利用をご検討していただければと思います。

Akamai はCDN、セキュリティ、クラウドサービスを通じ、オンラインライフの力となり守っています。本稿でご紹介したような課題やご相談があれば、お気軽にお問い合わせください

関連記事

アカマイ・テクノロジーズ合同会社はQiitaでAkamai Cloud Computing Services関連など開発者向けの記事を掲載しております。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?