使用Linode LKE和Akamai EdgeDNS和GTM来构建多地区架构

使用Linode LKE和Akamai GTM来构建多区域架构。

本文介绍了使用Terraform构建基于Linode Kubernetes Engine(LKE)和Akamai GTM/Edge DNS的负载平衡配置的步骤。

在这个例子中,将在东京和新加坡两个地区分别部署LKE,并使用GTM来实现基于DNS的负载均衡,如下图所示。

image.png

Linode容器服务(LKE)是什么?

Linode Kubernetes Engine(LKE)是一个完全托管的Kubernetes(k8s)容器编排引擎,用于部署和管理容器化应用程序和工作负载。

特征

    • LKEはコンソールから数クリックでプロビジョニング、管理できる。

 

    • Rancher、Helm、オペレーターなど、人気のあるK8s関連ツールとの統合をサポートしている。

 

    • コントロールプレーンは無料で利用することができ、オプションで冗長構成(HA)にもすることができる。

 

    LKEが動作するインスタンスやネットワーク転送料はハイパースケーラーと比べて断然安く、低コストで構築することができる。

参考:LKE

Akamai Edge DNS 是什么?

Edge DNS是由Akamai提供的可扩展的权威DNS服务。
它具备抵御最大规模DDoS攻击的鲁棒性,并附带100%的服务可用性协议(SLA),这使得它能够稳定地随时提供网站和应用服务器等的名称解析。

参考: Akamai 边缘 DNS

阿卡迈全球流量管理(GTM)是什么?

全球流量管理(GTM)是Akamai提供的基于DNS的负载均衡解决方案。

我们提供了多种分类功能。

    • Mirror Failover (サイトダウン時にバックアップへ)

 

    • Map by geographic location etc. (地理的振り分け)

 

    • Weighted Random Load Balancing etc. (比率指定で負荷分散)

 

    Performance-Based Load Balancing (応答時間が短くなるように負荷分散)
image.png

参考:阿卡迈全球流量管理(Akamai GTM)

构建LKE集群

我们将使用此存储库来构建环境。

 

下载存储库。

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

开始使用Linode API,加载API Token。

export TF_VAR_token=

执行用于构建LKE的Terraform代码,分别针对新加坡区域和东京区域。

terraform apply

为了使用 kubectl,我们将配置保存到文件中。

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 发行证书。

我们将使用Terraform来构建Edge DNS并使用Let’s Encrypt证书来进行NodeBalancer的配置。请事先注册好凭证信息。

 

将Edge DNS的Terraform配置文件移至指定的目录。

cd ../edgedns

在Terraform中,我们创建一个新的区域以供Edge DNS使用,并注册用于GTM的DNS记录。此外,我们使用Let’s Encrypt来发行通配符证书,验证过程中使用DNS。

输入适当的值到变量中。

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设置的负载均衡器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

转述:请提供https://test.example.com的网址。

总结

通过结合Akamai和Linode的功能,可以构建多地区的冗余架构。
同时,通过使用Terraform可以实现自动化构建。

相关文章

在 Akamai Technologies 合作社的 Qiita 上,我们发布了一些面向开发者的文章,其中包括与 Linode 相关的内容。

 

广告
将在 10 秒后关闭
bannerAds