自建IDC与CCE集群共享域名解析方案概述
应用现状
当前,越来越多的软件采用微服务架构,构建一个产品时会大量使用微服务,不同微服务之间访问时涉及到域名访问。
拥有自建IDC的企业,在使用CCE时通常需要在CCE集群与自建IDC之间通信,而且当IDC有内部域名时,需要CCE集群内的节点和容器既能够解析IDC的域名,也能够解析云域名。
例如,某企业APP微服务改造后,其管理后台部署在CCE集群上,内容审核服务部署在企业原有的IDC,该企业同时购买了华为云图像识别服务。CCE所在的VPC和原有的IDC之间通过专线进行连接。部署架构如图1所示。
当用户访问该企业的APP时,不同微服务之间涉及到如下交互:
- CCE集群访问华为云图像识别服务时,默认使用华为云域名解析服务器。
- CCE集群访问IDC上部署的内容审核服务时,需要使用IDC内部域名服务器。
这就需要在CCE集群上既能使用华为云域名解析服务器,也能够使用IDC内部域名服务器。如果将CCE节点上域名解析服务器指向IDC的域名解析服务器,那会导致无法解析华为云的域名;如果修改hosts文件配置增加IDC内部域名IP,在IDC内部服务IP变化时需要实时刷新CCE节点的配置,这很难做到且会导致不可用。
内容审核服务与图像识别服务仅为举例,也可以是其他服务。
本文介绍一种自建IDC与CCE集群共享域名解析的方案,可做到同时解析华为云域名和外部域名。
解决方案一:通过DNS Endpoint做级联解析
利用VPCEP服务创建DNS Endpoint,使得IDC能访问华为云域名解析服务器,将DNS Endpoint与IDC的域名解析服务器做级联,从而使得CCE集群中节点及容器在域名解析时,通过IDC的域名解析服务器进行解析。
- 如果是需要解析华为云内域名,则转发给DNS Endpoint,使用华为云DNS解析出地址并返回。
- 如果是需要解析IDC域名,则直接通过IDC的域名解析服务器直接解析出地址并返回。
对于容器中的域名解析,可在创建Pod时将DNS Policy设置为ClusterFirst,这样容器中的域名解析直接走CoreDNS。
- 如果是需要解析集群内域名,则CoreDNS直接解析出结果返回。
- 如果是解析外部域名,则通过CoreDNS,转到IDC的域名解析服务器解析。
解决方案二:修改CoreDNS配置直接解析
直接修改CoreDNS配置,可在创建Pod时将DNS Policy设置为ClusterFirst,这样容器中的域名解析直接走CoreDNS。
- 如果是需要解析集群内域名,则CoreDNS直接解析出结果返回。
- 如果是解析外部域名,则通过CoreDNS,转到IDC的域名解析服务器解析。
- 如果是访问华为云内部域名,则直接使用华为云内部域名解析服务器解析
方案比较
方案 |
优点 |
缺点 |
---|---|---|
方案一:通过DNS Endpoint做级联解析 |
支持在CCE集群节点容器与节点同时解析外部域名 |
解析华为云内部域名时也需要通过外部域名解析服务器转发,存在性能损耗 |
方案二:修改CoreDNS配置 |
解析华为云内部域名时不需要通过外部域名解析服务器转发,不存在性能损耗 |
|