Я создал consul
кластер серверов, используя разные порты в localhost.
Для этого я использовал следующие команды.
сервер 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
Затем я создал 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
.
Как сделать эту систему отказоустойчивой, что означает, что даже при сбое консул-сервера службы, зарегистрированные на этом сервере, автоматически регистрируются на другом сервере, доступном в кластере.
Далее мне нужно знать, как консул достигает высокой доступности и отказоустойчивости при регистрации и обнаружении услуг.Надеюсь, вы получите вопрос.