Spring Cloud Eureka集群使用DNS方式进行服务分区的方法

发布时间:2021-06-26 10:12:40 作者:chen
来源:亿速云 阅读:391

这篇文章主要讲解了“Spring Cloud Eureka集群使用DNS方式进行服务分区的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring Cloud Eureka集群使用DNS方式进行服务分区的方法”吧!

Eureka注册中心的配置方式有几种
网上常见的配置方式分为
一、使用defaultZone,这种没有分区的概念,就一个区,所有的服务都会使用defaultZone配置的serverUrl进行服务注册发现。网上有很多文章这里不再赘述
二、集群的配置方式有两种一种是配置文件的方式,一种是DNS的方式
这里面还要提到一个分区的概念 Region和Zone,这里 芋道源码 http://www.iocoder.cn/Eureka/eureka-client-init-second/?sf&2017-11-01和周立http://www.itmuch.com/spring-cloud-1/的文章里都有描述,
二、1.第一种配置文件的方式,这种也是网上文件介绍比较全面的一种
SpringCloudEureka进行服务分区:https://www.jianshu.com/p/2ca32773b3e5  和 
eureka集群的两种配置方式:配置文件方式和Dns方式http://www.cnblogs.com/relinson/p/eureka_ha_config_properties_and_dns.html
这两篇文章也介绍的比较清楚
重点是配置region, 配置availability-zones,这个要注意节点的顺序前后,还有就是配置service-url,基本上也可以实现了,但是这种方式都是需要提前写死的,对于动态增加注册中心进行分区调整都要调整每个eurekaclient的配置,说白了就是每个服务都要修改相应的配置项,所以就引申出DNS的配置方式
二、2.Dns方式配置Eureka集群
这种方式网上介绍的也有,比如这篇文章https://www.cnblogs.com/relinson/p/eureka_ha_use_dns.html
前半部分介绍的也很清晰,也有那么几个重点的配置项,
use-dns-for-fetching-service-urls: true使用dns方式配置 
eureka-server-d-n-s-name: XXX.com DNS根域名
region: beijing
eureka-server-u-r-l-context: eureka    配置中心的eureka目录
eureka-server-port: 9999   映射其他eurekaServer的端口,这里注意采用这种方式 server.port和这个端口最好一致
因为dns是控制地址的变化,端口不变,所以不像前面的哪些配置方式可以自己定义url和port。所以每个IP都是用的相同的port进行注册中心服务的部署
这些也是文章中说的比较清楚的配置方式,但是踩坑的过程中发现这些只是讲解了前半部分,后面还有若干细节从网上如何都找不到。下面就来说一说
1、首先EurekaServer和EurekaClient都要设置DNS地址,也就是说注册中心,和其他注册到注册中心的服务,都要现在运行的服务机器上配置私有的DNS服务地址,使得机器能够采用相同的DNS服务地址,本地windows调试就去网络适配器里改IPv4里的DNS即可
2、要配置DNS服务器,以windows的DNS服务器为例,首先建一个域 XXX.com,也就是对应着
eureka-server-d-n-s-name
Spring Cloud Eureka集群使用DNS方式进行服务分区的方法
其次要建一个region例如beijing,然后里面要建一个txt类型的文本,填入3azone.XXX.com   3bzone.XXX.com,相当于一个region下有2个分区
然后还要在region的同级目录建2个域一个3azone,一个3bzone,区域的划分可根据自己的情况命名和划分
Spring Cloud Eureka集群使用DNS方式进行服务分区的方法
3b内也建类似的配置,这样就完成了dns的配置,通过查看Eureka的源码,他的实现是通过寻找
txt.beijing.XXX.com(txt.region.eureka-server-d-n-s-name)这样的方式获取到的
3azone.XXX.com和3bzone.XXX.com中的zone,3azone和3bzone,
然后再去获取 txt.3azone.XXX.com和txt.3bzone.XXX.com中对应的ServiceUrls,的数据,也就是IP地址。
这样服务间就可以获取到固定端口下的不同IP的机子的注册中心服务并相互注册
3.注册中心相互注册后可能会出现 unavailable-replicas的情况,出现这个主要是2个属性造成的
要么就使用IP注册eureka.instance.prefer-ip-address=true,如果不使用IP注册而使用host方式,那么就要配置eureka.instance.hostname: 3azone.XXX.com   #非常非常重要,使用host又没配置,就会显示unavailable-replicas,
4.服务中心配置好后,其他client服务也只要配置对应的连接方式即可
eureka:
  instance:
    prefer-ip-address: true
    metadata-map:
      zone: 3azone  #这个是服务注册优先归属于哪个区
  client:
    register-with-eureka: true
    fetch-registry: true
    region: beijing
    #开启DNS方式获取serviceUrl,默认为false
    use-dns-for-fetching-service-urls: true
    #DNS域名,获取其他信息将以该域名为根域名
    eureka-server-d-n-s-name: XXX.com
    #eureka服务根目录
    eureka-server-u-r-l-context: eureka
    #连接注册中心端口
    eureka-server-port: 9999 #这里一定注册中心的端口,如果不想写死就要配置环境变量来实现了
以上这些步骤只要稍加注意,即可完美的完成eureka基于DNS的方式配置分区集群,且可以动态的添加分区和注册中心数量和位置

感谢各位的阅读,以上就是“Spring Cloud Eureka集群使用DNS方式进行服务分区的方法”的内容了,经过本文的学习后,相信大家对Spring Cloud Eureka集群使用DNS方式进行服务分区的方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. Spring Cloud Eureka Server
  2. 如何进行Spring cloud eureka集群搭建

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

spring eureka

上一篇:Retry重试机制是什么意思

下一篇:JavaScript运行原理的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》