容器服务kubernetes federation v2实践:多集群流量调度

概述

在federation v2多集群环境中,经过前面几篇文章的介绍,咱们能够很容易的进行服务多集群部署,考虑到业务部署和容灾须要,咱们一般须要调整服务在各个集群的流量分布。本文下面简单介绍如何在阿里云上进行多集群流量调度。服务器

环境准备

参考容器服务kubernetes federation v2实践一:基于External-DNS的多集群Ingress DNS实践 进行两个联邦集群的join,完成External-DNS、FederatedDeployment、FederatedService、FederatedIngress和IngressDNSRecord的部署,域名解析详情以下:架构

kubectl get ingress -n test-namespace --context cluster1
NAME           HOSTS   ADDRESS        PORTS   AGE
test-ingress   *       39.97.196.33   80      107m

kubectl get ingress -n test-namespace --context cluster2
NAME           HOSTS   ADDRESS       PORTS   AGE
test-ingress   *       39.96.244.3   80      107m

dig +short @dns7.hichina.com ingress-example.example-domain.club
39.97.196.33
39.96.244.3

注意【ingress-example.example-domain.club】为测试域名,请注意替换成本身在阿里云上购买的域名。dom

按流量配比分流

一般,咱们但愿根据各个集群的服务状态进行流量调整,当某一个集群服务所有挂掉时能够快速的将流量迁移至其余集群,保证服务的可用性。下图为部署架构图:测试

在阿里云【云解析DNS/域名解析/权重配置】中,经过配置测试域名解析权重进行流量调整,能够经过下面的脚本进行简单的验证dns解析结果:阿里云

DOMAIN=$1
COUNT=$2

for i in `seq 1 ${COUNT}`
do
    dig +short @dns7.hichina.com ${DOMAIN} >> result.txt
done

经过上述脚本验证1000次域名解析,验证结果以下:spa

集群 权重1:1 权重1:3 权重1:99
39.97.196.33(Cluster1) 504 268 5
39.96.244.3(Cluster2) 496 732 995
解析比例 1.02 0.37 0.005

能够看出dns解析结果和配置的权重基本上仍是一致的,说明咱们能够经过在阿里云的云解析上配置各个集群的流量配比。code

按用户所在地分流

为了为用户提供更好更快的服务,咱们但愿用户能够就近访问咱们的服务,以下图所示,咱们但愿华东用户访问咱们Cluster1的服务,华北用户访问Cluster2的服务。blog

在阿里云上,咱们能够经过【云解析DNS/全局流量管理】来进行面向用户来源的流量管理。
第一步:在【云解析DNS/全局流量管理】上建立实例,而后完成相关配置。

第二步:在第一步建立的实例中建立两个地址池。

第三步:配置访问策略,配置华东用户访问华东地址池,华北用户访问华北地址池。

第四步:在【云解析DNS/域名解析】的测试域名中添加记录,类型为CNAME,值为第一步中生成的CNAME值。

第五步:分别在北京和杭州找一台服务器,执行下面脚本:dns

DOMAIN=$1
COUNT=$2

for i in `seq 1 ${COUNT}`
do
    nslookup ${DOMAIN} | grep -v "#" | awk '/Address/{print $2}' >> result.txt
done

其中执行次数为1000次,获得下面结果:部署

集群 杭州 北京
39.97.196.33(Cluster1) 1000 0
39.96.244.3(Cluster2) 0 1000

能够看到,全局流量管理能够根据用户地域解析到不通集群的LB上,固然全局流量管理还有不少其余功能,例如地址池的健康检查等,你们能够亲自测试使用。

总结

本文经过DNS解析权重和全局流量管理相关配置,调整多个集群上面的流量,很好的知足不一样的业务场景。


原文连接 本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索