Netflix Eureka集群配置
Spring Cloud Netflix Eureka集群配置方式主要用两种:Static servers list config和dns,本文主要介绍基于DNS的方式搭建Eureka集群。
Static servers list config
client启动后从config中获取region和zone以及serviceUrl,进行服务注册、发现,这种静态集群模式无法动态扩容,一旦新增节点,只能挨个修改server和client端的配置文件,大致配置如下:
DNS configuration
基于DNS的Eureka Cluster架构图如下:
简单来说就是使用DNS服务器管理Eureka Server的地址,弹性伸缩对客户端没有影响。
大致流程如下:
- 客户端开启DNS方式获取serviceUrl:
use-dns-for-fetching-service-urls: true
; - 根据
client.region
配置的区域region,查询DNS区域配置文件中该区域下的所有可用区zone; - 循环所有可用区zone,获取可用区配置的eureka-server地址;
- 拼接成完整的serviceUrl并加入serviceUrls列表中,serviceUrl格式为:
"http://" + ec2Url + ":" + clientConfig.getEurekaServerPort() + "/" + clientConfig.getEurekaServerURLContext() + "/";
。
只要解决DNS服务器配置就可以达到动态集群的效果,关于如何搭建DNS服务器集群,请移步另一篇文章:CentOS 搭建DNS主从服务器集群,文中详细介绍了如何在区域配置文件中配置TXT记录,本文不在赘述。
1.DNS 区域文件配置TXT记录
zts.local.zone区域配置文件中有关eureka的配置:
|
|
2.Eureka Server/Client端配置
|
|
3.测试
修改客户端DNS服务器配置为10.29.181.61,DNS服务器的域名为zts.local
依次启动4台Eureka Server服务器,查看启动日志(删减版的日志),:
|
|
Eureka Client端
Account服务配置
|
|
Account启动日志:
|
|
打开Eureka console,查看注册效果:
参考资料
1.com.netflix.discovery.endpoint.EndpointUtils.getServiceUrlsFromDNS
版本:eureka-client:1.9.3
|
|
2. dns config配置参考文章
- micro-service-discovery-using-netflix-eureka
- eureka集群基于DNS配置方式 (给予我了不少灵感)
- Spring Cloud Eureka 集群使用DNS方式进行服务分区(– 简单介绍了windows dns搭建)