用Consul集群实现容错


甲基蓝
2025-04-02 01:49:03 (6天前)


我在localhost中使用不同的端口创建了consul服务器集群。

我用下面的命令。

服务器1:

consul agent -server -bootstrap-expect = 3 -data-dir = consul-data -ui -bind = 127.0.0 ….

2 条回复
  1. 0# 别烦我 | 2019-08-31 10-32



    显然,您可以在本地计算机中部署consul集群,但不能指望在同一台本地计算机上有任何弹性机制或容错。这是因为您的spring服务(service_A& service_B)已配置为识别在bootstrap.yml(默认为8500)下的给定consul服务器端口中运行的consul服务器。




    1. spring:
      cloud:
      consul:
      config:
      watch:
      enabled: true
      port: 8500
      discovery:
      instanceId: ${spring.application.name}:${random.value}

    2. </code>


    因此,每个服务都会发现在8500端口下运行的领事服务器(您可以根据需要进行更改)。如果在同一本地计算机上运行consul集群,则无法为需要标识的每个集群节点分配相同的端口号(8500)。为了在相同的IP地址下运行,它会有所不同。要实现此目的,您需要在不同的IP地址下使用相同的端口号8500部署每个consul节点。









    8301是用于处理LAN中八卦的serf LAN端口。即使这个端口在每个节点中也可以相同,以维持集群的互连。



    实现此目标的最简单方法是在AWS VPC中使用私有子网。








    然后,您可以为每个子网节点分配单独的配置,并为每个服务器节点分配相同的端口号,以便您的services_A&amp; service_B with

    @EnableDiscoveryClient
    </强>
    注解。







登录 后才能参与评论