java - 如何将Eureka客户端注册到带有负载均衡器的Eureka服务器集群?

标签 java spring spring-cloud netflix-eureka

当我部署微服务 eureka 客户端并设置 eureka 服务器的 url 时,如下所示:

eureka.client.serviceUrl.defaultZone=http://10.118.28.94:7701/eureka/,http://10.154.32.88:7701/eureka/

我发现客户端总是注册到第一个 Eureka 服务器(10.118.28.94:7701),我想知道如何进行负载平衡以防止所有客户端注册到同一个 Eureka 服务器?我应该手动调整服务器列表的顺序吗?

最佳答案

这可能会让您感到困惑,请一次一步地进行

follow this link to understand micro services registration with eureka server

从这里开始

要进行 eureka 集群,您需要运行 eureka 服务器的两个实例

配置eureka服务器application.proerties如下

#EMBEDDED SERVER CONFIGURATION (ServerProperties)
server.port=8081

#Configuration for service registration with Eureka Server
eureka.instance.hostname=peer1
eureka.server.hostname=peer2
eureka.server.port=8082
eureka.client.serviceUrl.defaultZone=http://${eureka.server.hostname}:${eureka.server.port}/eureka/
eureka.server.renewalPercentThreshold=0.49

#self registration Configuration
eureka.client.registerWithEureka: false
eureka.client.fetchRegistry: false

将 eureka 服务器打包为 jar 后在 IDE 之外运行应用程序

注意 在运行应用程序之前更新您的主机信息 在Windows中 C:\Windows\System32\drivers\etc 打开主机文件粘贴这些

    127.0.0.1  peer1 
    127.0.0.1  peer2

现在您已准备好运行 Eureka

instance 1 : java -jar eurekaserveryourartifact.jar

要运行第二个实例,您需要在运行应用程序时将它们作为 VM 参数传递来覆盖 application.proerties 中的某些属性,如下所示

instance 2 : java -jar -Dserver.port=8082 -Deureka.instance.hostname=peer2 -Deureka.server.hostname=peer1 eureka.server.port=8081 eurekaserveryourartifact.jar

---------------------- 到这里Eureka集群完成------------

访问 eureka1 :peer1:8081 或 localhost:8081

访问 eureka2 :peer2:8082 或 localhost:8082

确保第一个 Eureka 将副本显示为peer2,第二个服务器将副本显示为peer1

<小时/>

现在向 eureka 注册您的服务

第一个 Eureka 服务器注册您的服务( Eureka 客户端),这些服务也会自动向第二个 Eureka 服务器注册。客户端应在 application.proerties 中进行如下配置。

    #reading values from pom.xml
    spring.application.name=@artifactId@
    #service registration with Eureka Server
    eureka.server.port=8081
    eureka.server.hostname=peer1       
  eureka.client.serviceUrl.defaultZone=http://${eureka.server.hostname}:${eureka.server.port}/eureka/    eureka.instance.instanceId=${spring.application.name}:${spring.application.instance_id:${random.value}}

要测试负载平衡,最好通过覆盖服务器端口来运行服务的多个实例,如下所示

服务ins1:java -jar serviceartifact.jar

服务ins2:java -jar -Dserver.port=8082 serviceartifact.jar

现在您可以看到注册到 eureka1eureka2 的 2 个服务实例

在访问这些服务时,如果一个服务实例宕机了另一个实例 (注意:两个服务运行在不同的端口上)url 将由 eureka 服务器自动提供给服务的使用者。

我们还可以使用功能区进行客户端负载平衡

关于java - 如何将Eureka客户端注册到带有负载均衡器的Eureka服务器集群?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43472784/

相关文章:

java - 是否有可能以编程方式查明两个实例是否属于同一个 RDF 类?

java - 如何在将现有模板加载到 JasperDesign 中然后更改它时更改页面大小/格式?

java - Jackcess DatabaseBuilder.open 失败

java - 找不到合适的 ServiceConnectorCreator 错误 - Spring cloud/CloudFoundry

spring-security - 通过 Eureka 发现 Oauth 服务器

spring-cloud - 如何在Spring Cloud Gateway中为每个路由设置超时?

java - 如何编写排列的递归算法?

spring - Maven Tomcat 嵌入式

java - 使用 XSSFWorkbook 和 AbstractExcelView

spring - Zuul 为多个 zuul 路由实现多个 ZuulFallbackProvider