概述

在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】为测试域名,请注意替换成自己在阿里云上购买的域名。

按流量配比分流

通常,我们希望根据各个集群的服务状态进行流量调整,当某一个集群服务全部挂掉时可以快速的将流量迁移至其他集群,保证服务的可用性。下图为部署架构图:

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

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

通过上述脚本验证1000次域名解析,验证结果如下:

集群 权重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解析结果和配置的权重基本上还是一致的,说明我们可以通过在阿里云的云解析上配置各个集群的流量配比。

按用户所在地分流

为了为用户提供更好更快的服务,我们希望用户可以就近访问我们的服务,如下图所示,我们希望华东用户访问我们Cluster1的服务,华北用户访问Cluster2的服务。

在阿里云上,我们可以通过【云解析DNS/全局流量管理】来进行面向用户来源的流量管理。
第一步:在【云解析DNS/全局流量管理】上创建实例,然后完成相关配置。

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

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

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

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

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解析权重和全局流量管理相关配置,调整多个集群上面的流量,很好的满足不同的业务场景。

本文作者:钧博

原文链接

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

最新文章

  1. Azure底层架构的初步分析
  2. POJ 2976 Dropping tests(最大化平均值 or 01整数规划)
  3. 使用dynatrace+showslow进行前端性能测试
  4. [CareerCup] 10.4 Find All Duplicates Elements 寻找所有的重复项
  5. 评价正在使用输入法软件产品----QQ拼音输入法
  6. SDUT1061Binomial Showdown(组合数)
  7. JS模块化编程
  8. ecsmart的开发经历
  9. DAY23、面向对象特性
  10. JS盒模型
  11. 以太坊客户端Geth命令用法-参数详解【转载】
  12. 配置python开发环境(Eclipse + pyDev)
  13. Java:大文件拆分工具
  14. html回顾随笔JS(*^__^*)
  15. python 正则表达提取方法 (提取不来的信息print不出来 加个输出type 再print信息即可)
  16. oracle clob blob dblink
  17. google vue开发调试插件,简便安装,亲测可用
  18. 响应式布局和BootStrap 全局CSS样式
  19. 微信小程序实战--开发一个简单的快递单号查询
  20. DIY简单功能的torrentkitty种子爬虫

热门文章

  1. windows 环境下搭建docker私有仓库
  2. 转:解决Onethink上传视频的问题 超棒的解决方案
  3. gcd(辗转相除法)
  4. svn基本命令使用
  5. 【JZOJ4710】【NOIP2016提高A组模拟8.17】Value
  6. Eclipse Jobs 和后台进程
  7. vagrant up 时提示错误 cound not open file
  8. Sum Root to Leaf Numbers深度优先计算路径和
  9. day5 from 金角大王
  10. Person Re-identification 系列论文笔记(二):A Discriminatively Learned CNN Embedding for Person Re-identification