Spring Boot版本:2.1.6.RELEASE
Spring Cloud版本:Greenwich.SR1
目标是在集群中设置两个Eureka Server实例,并将所有微服务都注册到这两个实例中,以实现HA。目前,我正在运行Ubuntu 18.04的本地计算机上对此进行测试。
因此,如官方文档中所述,我已经建立了对Eureka实例的对等感知。在启动两个Eureka服务器实例时,在实例1(端口8080)的仪表板上的可用副本下显示实例2名称,而在实例2(端口8081)的仪表板上则显示实例1名称。到目前为止一切顺利。
我已经将它们作为战争部署在外部tomcat服务器上,而不是作为jar运行。战争名称是“ eureka-naming-server”。因此,我的访问URL变为:http://localhost:8080/eureka-naming-server/eureka和http://localhost:8081/eureka-naming-server/eureka。
我已经使用Apache 2和mod_jk设置了负载平衡器。因此,我可以使用Apache URL作为http://localhost:8080/eureka-naming-server/eureka来访问它们,而不必使用它们各自的URL(即http://localhost:8081/eureka-naming-server/eureka,http://localhost:80/eureka-naming-server/eureka)来访问它们,并且可以看到负载平衡正常发生。
现在的问题是,一旦我在微服务中将Eureka URL设置为http://localhost:80/eureka-naming-server/eureka,它就会仅在一个实例上注册,具体取决于负载均衡器已重定向请求的实例。但是,即使设置了对等感知,微服务也不会在另一个eureka实例上注册。
尤里卡1号道具:
spring:
application:
name: eureka-naming-server
jmx:
default-domain: eureka-naming-server
eureka:
client:
service-url:
defaultZone: http://eureka-server-2:8081/eureka-naming-server/eureka
#register-with-eureka: false
#fetch-registry: false
instance:
hostname: eureka-server-1
尤里卡2号道具:
spring:
application:
name: eureka-naming-server
jmx:
default-domain: eureka-naming-server
eureka:
client:
service-url:
defaultZone: http://eureka-server-1:8080/eureka-naming-server/eureka
#register-with-eureka: false
#fetch-registry: false
instance:
hostname: eureka-server-2
微服务道具:
eureka:
instance:
metadata-map:
configPath: /config
client:
service-url:
defaultZone: http://localhost/eureka-naming-server/eureka
在机器的/ etc / hosts文件中,我将其设置为:
127.0.0.1 eureka-server-1
127.0.0.1 eureka-server-2
正在注册它的eureka实例,我可以在日志中看到以下内容:
WARN 13748 --- [nio-8009-exec-3] Registered instance CONFIG-SERVER/192.168.1.16:config-server:8888 with status UP (replication=false)
另一个未注册的Eureka实例,由于负载均衡器而收到心跳信号时,会在日志中显示:
WARN 13748 --- [nio-8009-exec-3] c.n.e.registry.AbstractInstanceRegistry : DS: Registry: lease doesn't exist, registering resource: CONFIG-SERVER - 192.168.1.16:config-server:8888
2019-12-26 19:00:34.995 WARN 13748 --- [nio-8009-exec-3] c.n.eureka.resources.InstanceResource : Not Found (Renew): CONFIG-SERVER - 192.168.1.16:config-server:8888
Eureka-1仪表板
Eureka-2仪表板
我已经尝试过提及here和here的建议。但是似乎没有任何效果。
那我在这里会想念什么?