Установите 2 агента клиента Консула (отдельные кластеры) на одном хосте

#consul #hashicorp #consul-kv

Вопрос:

У меня есть 2 разных кластера консулов HashiCorp (давайте назовем их кластером A и кластером B), работающих на разных хостах.

Мое приложение Python работает на хосте, который я уже установил на 1 клиентском агенте, настроенном для кластера A, и я хочу, чтобы мое приложение также могло отправлять запросы в кластер B (каким-то образом различать 2 агента).

Можно ли установить второй клиентский агент (настроенный для кластера B) на том же хосте? и если да, то как это можно сделать? Мне просто нужно будет переключиться на другой порт? Не могу найти документацию для этого варианта использования.

Любые возможные решения будут полезны, спасибо!

Ответ №1:

Consul позволяет настраивать порты для ваших агентов, чтобы они не конфликтовали на одном хосте. Я смог сделать это в файле с именем:

 consul.json
 

С содержанием:

 { 
  "ports": { 
    "dns": 9600,
    "http":9500,
    "serf_lan":9301,
    "serf_wan": 9401,
    "server":9300,
    "grpc":9502
  } 
}
 

Затем я запустил агента со следующей командой:

 consul agent -dev -bind 127.0.0.1 --config-file consul.json
 

Затем у меня было два агента на одной машине, которые я видел с помощью инструмента командной строки ps x (сокращенный вывод).:

 7510 ... consul agent -dev -bind 127.0.0.1
7780 ... consul agent -dev -bind 127.0.0.1 --config-file consul.json
 

Наконец, я использовал --http-addr= указанную здесь опцию, чтобы поговорить с агентом порта, не использующим порт по умолчанию, и сгруппировал их вместе на одном хосте, просто чтобы посмотреть, возможно ли это, конечно, было:

 [vagrant@localhost ~]$ consul members
Node                       Address         Status  Type    Build   Protocol  DC   Segment
localhost.localdomain      127.0.0.1:8301  alive   server  1.10.2  2         dc1  <all>
localhost.localdomain.dc1  127.0.0.1:9401  alive   server  1.10.2  2         dc1  <all>
 

Поэтому я вполне уверен, что вы можете запустить два агента на одних и тех же хостах с соответствующими настройками в файле конфигурации для каждого возраста (или использовать значения по умолчанию для одного и файл конфигурации для другого).

Комментарии:

1. Спасибо за подробное объяснение!

2. Во-первых, просто хочу напомнить, что запуск двух агентов на одном хосте не рекомендуется для развертывания. Если вам абсолютно необходимо сделать это в рабочем режиме, не используйте -dev режим и настройте отдельный data_dir для каждого агента, чтобы они не пытались сохранить данные в одном каталоге. Возможно , вам также потребуется явно указать разные node_id буквы s в конфигурации. Кроме того, другие предложения по настройке, предложенные Асланом, верны. 🙂