容器服务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】为测试域名,请注意替换成自己在阿里云上购买的域名。
按流量配比分流
通常,我们希望根据各个集群的服务状态进行流量调整,当某一个集群服务全部挂掉时可以快速的将流量迁移至其他集群,保证服务的可用性。下图为部署架构图:
在阿里云【云解析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解析权重和全局流量管理相关配置,调整多个集群上面的流量,很好的满足不同的业务场景。
本文作者:钧博
本文为云栖社区原创内容,未经允许不得转载。
最新文章
- Azure底层架构的初步分析
- POJ 2976 Dropping tests(最大化平均值 or 01整数规划)
- 使用dynatrace+showslow进行前端性能测试
- [CareerCup] 10.4 Find All Duplicates Elements 寻找所有的重复项
- 评价正在使用输入法软件产品----QQ拼音输入法
- SDUT1061Binomial Showdown(组合数)
- JS模块化编程
- ecsmart的开发经历
- DAY23、面向对象特性
- JS盒模型
- 以太坊客户端Geth命令用法-参数详解【转载】
- 配置python开发环境(Eclipse + pyDev)
- Java:大文件拆分工具
- html回顾随笔JS(*^__^*)
- python 正则表达提取方法 (提取不来的信息print不出来 加个输出type 再print信息即可)
- oracle clob blob dblink
- google vue开发调试插件,简便安装,亲测可用
- 响应式布局和BootStrap 全局CSS样式
- 微信小程序实战--开发一个简单的快递单号查询
- DIY简单功能的torrentkitty种子爬虫
热门文章
- windows 环境下搭建docker私有仓库
- 转:解决Onethink上传视频的问题 超棒的解决方案
- gcd(辗转相除法)
- svn基本命令使用
- 【JZOJ4710】【NOIP2016提高A组模拟8.17】Value
- Eclipse Jobs 和后台进程
- vagrant up 时提示错误 cound not open file
- Sum Root to Leaf Numbers深度优先计算路径和
- day5 from 金角大王
- Person Re-identification 系列论文笔记(二):A Discriminatively Learned CNN Embedding for Person Re-identification