【发布时间】:2019-03-03 06:59:26
【问题描述】:
我使用本地主机中的不同端口创建了consul 服务器集群。
我为此使用了以下命令。
服务器 1:
consul agent -server -bootstrap-expect=3 -data-dir=consul-data -ui -bind=127.0.0.1 -dns-port=8601 -http-port=8501 -serf-lan-port=8303 -serf-wan-port=8304 -server-port=8305 -node=node1
服务器 2:
consul agent -server -bootstrap-expect=3 -data-dir=consul-data2 -ui -bind=127.0.0.1 -dns-port=8602 -http-port=8502 -serf-lan-port=8306 -serf-wan-port=8307 -server-port=8308 -node=node2 -join=127.0.0.1:8303
服务器 3:
consul agent -server -bootstrap-expect=3 -data-dir=consul-data1 -ui -bind=127.0.0.1 -node=node3 -join=127.0.0.1:8303
然后我使用 Spring Boot 创建了 2 个微服务,分别称为 service_A 和 service_B。
Service_B 调用service_A 来获取一些数据。
这两个服务都注册到上述服务器之一。
在application.properties:
spring.cloud.consul.port=8501 #For service_A
spring.cloud.consul.port=8502 #For service_B
这很好用,因为 Service_B 发现 Service_A 没有任何问题。
现在当我杀死service_A注册的领事服务器时,系统无法给出结果,因为Service_B找不到Service_A。
我应该如何让这个系统容错,这意味着即使 consul 服务器出现故障,在该服务器上注册的服务也会自动在集群中可用的另一台服务器上注册。
进一步我需要知道consul是如何实现服务注册和发现的高可用和容错的。希望你能得到这个问题。
【问题讨论】:
-
Consul 客户端应该连接到代理而不是服务器
-
我也尝试过客户端。但是行为是一样的。
-
但这不是 Spring Cloud 问题
-
是的,我怎样才能让我的服务保持连接到 consul 集群?
标签: spring-boot high-availability consul service-discovery fault-tolerance