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

    按流量配比分流

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

    在阿里云【云解析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的服务。
    image

    在阿里云上,我们可以通过【云解析DNS/全局流量管理】来进行面向用户来源的流量管理。
    第一步:在【云解析DNS/全局流量管理】上创建实例,然后完成相关配置。
    image
    第二步:在第一步创建的实例中创建两个地址池。
    image
    第三步:配置访问策略,配置华东用户访问华东地址池,华北用户访问华北地址池。
    image
    第四步:在【云解析DNS/域名解析】的测试域名中添加记录,类型为CNAME,值为第一步中生成的CNAME值。
    image
    第五步:分别在北京和杭州找一台服务器,执行下面脚本:

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

    本文作者:钧博

    原文链接

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

  • 相关阅读:
    关于多机处理问题
    Prime
    Djkstra
    jbdc总结
    mysql存储过程
    sqlHelper 类型的编写
    JDBC开发
    java线程
    java事件监听机制
    坦克大战编程
  • 原文地址:https://www.cnblogs.com/zhaowei121/p/10944488.html
Copyright © 2020-2023  润新知