объяснялось в предыдущемУстановка Consul, развертывание, основныеИспользование , чтобы у всех было общее понимание, этот раздел начинает фокусироваться на построении кластеров Consul.Практичный, официально рекомендуется от 3 до 5 серверов, потому что во время обработки исключений, если лидер зависает, пока более половины серверов все еще активны, consul переизберет нового лидера, чтобы гарантировать нормальную работу кластера.
Рекомендуемый технический блог: Стек технологий Node.js
Готов к работе
Для тестирования рекомендуется построить несколько виртуальных машин локально для отладки.Виртуальных машин здесь 3 режима сервера, 1 режим клиента, всего следующие 4:
-
192.168.6.128 Режим сервера (изначально установлено значение Лидер)
-
192.168.6.129 Режим сервера
-
192.168.6.130 Режим сервера
-
192.168.6.131 Режим клиента
Загрузите Consul соответствующей версии платформы и распакуйте копию в/usr/local/bin/
(переменные системной среды), здесь в качестве примера используется версия 1.4.0, см. конкретную установкуЧасть 1-консул скачать и руководство по установке.
Создайте/usr/src/consul
Каталог для хранения файла начальной конфигурации Consulconsul_config.json
:
{
"datacenter": "consul_cluster",
"node_name": "consul_1",
"server": true,
"bootstrap_expect": 3,
"data_dir": "/usr/src/consul/data",
"log_level": "DEBUG",
"enable_syslog": true,
"enable_script_checks": true,
"bind_addr": "192.168.6.128",
"client_addr": "192.168.6.128",
}
- node_name: имя узла, эквивалентное -node
- data_dir: каталог хранения данных
- enable_syslog: включена ли запись журналов консула в каталог syslog системы.
- enable_script_checks: следует ли включать сценарии обнаружения мониторинга.
- bind_addr: эквивалентно -bind
- client_addr: эквивалентно -client
Развертывание на стороне сервера
- Разверните первый 192.168.6.128
Примечание. Добавьте -ui при запуске первого, он инициализируется только один раз, и та же операция выполняется на двух других узлах, ноnode_name
,bind_addr
,client_addr
Для внесения изменений каждая машина остается уникальной.
$ sudo consul agent -ui -config-file=/usr/src/consul/consul_config.json
-config-file:
Загрузить файл конфигурации запуска
- Развертывание второго 192.168.6.129
Исправлять/usr/src/consul/consul_config.json
:
{
"datacenter": "consul_cluster",
"node_name": "consul_2",
"server": true,
"bootstrap_expect": 3,
"data_dir": "/usr/src/consul/data",
"log_level": "DEBUG",
"enable_syslog": true,
"enable_script_checks": true,
"bind_addr": "192.168.6.129",
"client_addr": "192.168.6.129",
}
выполнить команду запустить команду
$ sudo consul agent -config-file=/usr/src/consul/consul_config.json
- Развернуть третий 192.168.6.130
Исправлять/usr/src/consul/consul_config.json
:
{
"datacenter": "consul_cluster",
"node_name": "consul_3",
"server": true,
"bootstrap_expect": 3,
"data_dir": "/usr/src/consul/data",
"log_level": "DEBUG",
"enable_syslog": true,
"enable_script_checks": true,
"bind_addr": "192.168.6.130",
"client_addr": "192.168.6.130"
}
выполнить команду запустить команду
$ sudo consul agent -config-file=/usr/src/consul/consul_config.json
До сих пор сервер был запущен, но еще не присоединился к кластеру, поэтому это только кластер с одним узлом.Вы можете проверить статус членства на определенной машине:
Примечание: прямое использованиеconsul members
Сообщит об ошибке, нужно привязать ip адрес
$ consul members --http-addr 192.168.6.128:8500
Node Address Status Type Build Protocol DC Segment
consul_1 192.168.6.128:8301 alive server 1.4.0 2 consul_cluster <all>
Создание кластера на стороне сервера
После каждого Consul Agent он относительно независим и не знает о существовании других узлов Теперь нам нужно присоединиться к кластеру и добавить созданные выше consul_2 и consul_3 в тот же кластер consul_1.
- В consul_1 добавлен второй 192.168.6.129
$ consul join --http-addr 192.168.6.129:8500 192.168.6.128
Successfully joined cluster by contacting 1 nodes. # 成功返回的消息
- В consul_1 добавлен третий 192.168.6.130
$ consul join --http-addr 192.168.6.130:8500 192.168.6.128
На данный момент серверный кластер создан, вы можете увидеть наших текущих членов кластера:
consul members --http-addr 192.168.6.128:8500
Node Address Status Type Build Protocol DC Segment
consul_1 192.168.6.128:8301 alive server 1.4.0 2 consul_cluster <all>
consul_2 192.168.6.129:8301 alive server 1.4.0 2 consul_cluster <all>
consul_3 192.168.6.130:8301 alive server 1.4.0 2 consul_cluster <all>
- Просмотр лидеров кластера через HTTP API
$ curl 192.168.6.128:8500/v1/status/leader
"192.168.6.128:8300"
- Просмотр членов кластера через HTTP API
$ curl 192.168.6.128:8500/v1/status/peers
["192.168.6.129:8300","192.168.6.130:8300","192.168.6.128:8300"]
Развертывание клиента
Теперь приступаем к развертыванию клиента, способ отличается от сервера
Исправлять/usr/src/consul/consul_config.json
:
{
"datacenter": "consul_cluster",
"node_name": "consul_4",
//"server": true, 不指定为服务端,默认走客户端
// "bootstrap_expect": 3, 只在server模式有效
"data_dir": "/usr/src/consul/data",
"log_level": "DEBUG",
"enable_syslog": true,
"enable_script_checks": true,
"bind_addr": "192.168.6.131",
"client_addr": "192.168.6.131"
}
Выполните команду запуска:
Вы также можете присоединиться к уже запущенному кластеру с параметром -join
$ sudo consul agent -config-file=/usr/src/consul/consul_config.json -join=192.168.6.128
При просмотре текущих членов кластера вы можете увидеть, что существует 3 режима сервера и 1 режим клиента.
$ consul members --http-addr 192.168.6.128:8500
Node Address Status Type Build Protocol DC Segment
consul_1 192.168.6.128:8301 alive server 1.4.0 2 consul_cluster <all>
consul_2 192.168.6.129:8301 alive server 1.4.0 2 consul_cluster <all>
consul_3 192.168.6.130:8301 alive server 1.4.0 2 consul_cluster <all>
consul_4 192.168.6.131:8301 alive client 1.4.0 2 consul_cluster <default>
Посмотреть в инструментах администратора
При развертывании первой машины 192.168.6.128 за агентом consul следует параметр -ui, который используется для запуска интерфейса WebUI, который представляет собой интерфейс веб-визуализации, предоставляемый самим Consul, и ввод браузера.http://192.168.6.128:8500посетить
Данная статья представляет собой цикл статей по регистрации сервиса на основе Консула в микросервисной архитектуре.Каталог выглядит следующим образом:
- Развертывание сервисов, построение и использование микросервисов серии Consul
- Кластерное построение серии Microservice Consul
- Регистрация служб и обнаружение служб серии Microservice Consul
- Сводка проблем в серии Microservice Consul
Автор: май июнь
Связь:Вухуу. ИМО OC.com/article/284…
Источник: МООК
Github: Стек технологий Node.js