0
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?

More than 1 year has passed since last update.

Linode LKEとAkamai EdgeDNSとGTMを利用してマルチリージョン構成を組む

Posted at

Linode LKEとAkamai GTMを利用してマルチリージョン構成を組む

Linode Kubernetes Engine (LKE)とAkamai GTM/Edge DNSを使った負荷分散構成をTerraformを利用して構築する手順を紹介します。

今回の構成例では、TokyoとSingapore、それぞれのRegionにLKEを展開し、下図のようにGTMにてDNSによる負荷分散を実施します。

image.png

Linode Kubernetes Engine (LKE)とは

Linode Kubernetes Engine (LKE) は コンテナ化されたアプリケーションやワークロードを展開・管理するための、フルマネージドのKubernetes(k8s)コンテナオーケストレーションエンジンです。

特徴

  • LKEはコンソールから数クリックでプロビジョニング、管理できる。
  • Rancher、Helm、オペレーターなど、人気のあるK8s関連ツールとの統合をサポートしている。
  • コントロールプレーンは無料で利用することができ、オプションで冗長構成(HA)にもすることができる。
  • LKEが動作するインスタンスやネットワーク転送料はハイパースケーラーと比べて断然安く、低コストで構築することができる。

参考:LKE

Akamai Edge DNS とは

Edge DNS はAkamai が提供するスケーラブルな権威 DNS サービスです。
DNSに対する最大規模の DDoS 攻撃から防御するための耐障害性を備え、 100% アップタイムのサービスレベル契約(SLA)が付属しているため、 Web サイトやアプリケーションサーバーなどの名前解決をいつでも安定して提供できるようになります。

参考:Akamai Edge DNS

Akamai Global Traffic Management (GTM) とは

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

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

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

image.png

参考:Akamai GTM

LKE Clusterの構築

本環境の構築にはこちらのレポジトリを利用して行っていきます。

レポジトリをダウンロードします。

git clone git@github.com:isss802/lke-gtm-demo.git
cd lke-gtm-demo/lke

LinodeのAPI Tokenを読み込ませます。
Getting Started with the Linode API

export TF_VAR_token=

シンガポールリージョンと東京リージョンにLKEを構成するTerraformを実行します。

terraform apply

kubectlを利用するため、configをファイルに保存します。

export KUBE_VAR=`terraform output -raw kubeconfig_1` && echo $KUBE_VAR | base64 -d > ../kubectl/lke-cluster-config-1.yaml
export KUBE_VAR=`terraform output -raw kubeconfig_2` && echo $KUBE_VAR | base64 -d > ../kubectl/lke-cluster-config-2.yaml

Edge DNSの構築とLet's Encryptで証明書の発行

Edge DNSの構築とNodeBalancerに利用するLet's Encryptの証明書の発行をTerraformで行います。
事前にクレデンシャル情報は登録しておきます。

Edge DNSのTerraformの構成ファイルがあるディレクトリに移動します。

cd ../edgedns

Terraformでは、Edge DNSに新しいゾーンを作成し、GTMに利用するDNSレコードを登録します。
また、Let's Encryptでワイルドカード証明書を発行、認証はDNSを利用します。

Variableに適切な値を入力します。

vim variables.tf

Terraformを実行します。

terraform apply

Let's Encryptで発行した証明書をファイルに保存します。

terraform output -raw full_cert > ../kubectl/cert.pem
terraform output -raw prikey > ../kubectl/key.pem

Kubectlを利用して、コンテナとNodeBalancerを構築

NginxのデプロイとNodeBalancerの作成を行います。

Kubernetesの設定ファイルがあるディレクトリに移動します。

cd ../kubectl

kubectlを利用するため、configを設定します。

export KUBECONFIG=lke-cluster-config-1.yaml:lke-cluster-config-2.yaml

どちらのクラスターに接続しているか確認します。

kubectl config get-contexts

証明書をアップロードします。

kubectl create secret tls lb --cert cert.pem --key key.pem

Nginxをデプロイします。

kubectl create -f deployment.yaml

NodeBalancerの作成をします。

kubectl create -f service.yaml

GTMの設定に利用するLBのIPを確認します。

kubectl get service

もう一つのクラスターに接続し、同様の手順を実施します。

kubectl config get-contexts
kubectl config use-context [cluster2]
kubectl create secret tls lb --cert cert.pem --key key.pem
kubectl create -f deployment.yaml
kubectl create -f service.yaml
kubectl get service

GTMの構築

GTMのTerraformの構成ファイルがあるディレクトリに移動します。

cd ../gtm

Variableに適切な値を入力します。

vim variables.tf

本構成では東京リージョンとシンガポールリージョンに1:1でDNSの振り分けを行います。
設定を確認し、Terraformを実行します。

terraform apply

アクセスを確認

Edge DNSに登録したDNSレコードにて、ブラウザから接続確認を行い画面が表示されれば問題ありません。

https://test.example.com

まとめ

AkamaiとLinodeの機能を組み合わせることによって、マルチリージョンでの冗長構成を構築することが可能となります。
また、Terraformを利用することにより構築の自動化も図ることができます。

関連記事

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

0
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
0
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?