显然,您可以在本地计算机中部署consul集群,但不能指望在同一台本地计算机上有任何弹性机制或容错。这是因为您的spring服务(service_A& service_B)已配置为识别在bootstrap.yml(默认为8500)下的给定consul服务器端口中运行的consul服务器。
spring: cloud: consul: config: watch: enabled: true port: 8500 discovery: instanceId: ${spring.application.name}:${random.value}
因此,每个服务都会发现在8500端口下运行的领事服务器(您可以根据需要进行更改)。如果在同一本地计算机上运行consul集群,则无法为需要标识的每个集群节点分配相同的端口号(8500)。为了在相同的IP地址下运行,它会有所不同。要实现此目的,您需要在不同的IP地址下使用相同的端口号8500部署每个consul节点。
8301是用于处理LAN中八卦的serf LAN端口。即使这个端口在每个节点中也可以相同,以维持集群的互连。
实现此目标的最简单方法是在AWS VPC中使用私有子网。
然后,您可以为每个子网节点分配单独的配置,并为每个服务器节点分配相同的端口号,以便您的services_A& service_B with 的 @EnableDiscoveryClient 强> 注解。