繁体   English   中英

spring-cloud和ribbon可以执行基于DNS的负载平衡吗?

[英]Can spring-cloud and ribbon perform DNS-based load balancing?

Cloudfoundry计划添加对映射到多个IP的DNS A记录的支持(每个应用容器实例一个),请参阅docs-proposal 我想知道弹簧云发现是否与功能区配合可以支持基于DNS的客户端负载平衡。

Spring-Cloud DiscoveryClient似乎没有DNS解析,它管理主机名

功能区负载平衡库通过ListOfServers属性支持FQDN列表。

但我无法找到与指定服务器的DNS查找相关的文档:即,如果DNS A / AAA记录(从ListOfServers获取)返回多个IP地址,那么Ribbon会在IP地址之间进行负载平衡吗?

我需要在哪里配置DNS缓存指令? 这是java.security支持中的JVM范围,还是可以将其作为客户端幻灯片负载平衡选项(来自功能区)进行管理?

功能区不执行任何DNS查找,它按原样返回ServerList中的条目(IP或名称)。

您不需要功能区来进行基于DNS的负载均衡; 操作系统解析程序将在每次查找的可用IP地址之间轮换。 只是确保不缓存DNS。

对于更复杂的负载平衡,您需要将DNS解析为IP列表,然后将其传递给Ribbon。

如果您使用的是spring cloud eureka服务,则每个服务实例都会在eureka上注册。 这意味着您可以在同一主机上托管同一服务的多个实例,并且eureka了解每个服务。

如果您使用功能区进行基于客户端的负载平衡,则功能区会查询eureka以获取服务的所有实例,并了解服务的每个实例。

这样,功能区可以选择连接到每个实例。 因此,不需要多个DNS A记录。 使用多个DNS A记录会适得其反,因为功能区无法再通过DNS区分服务的多个实例。 在这种情况下,我建议将eureka.instance.preferIpAddress设置为true,以区分多个实例。

据我所知,功能区支持2种工作模式,RoundRobinRule和AvailabilityFilteringRule。

您可以在“Spring微服务”一书中找到一个好的介绍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM