Установка кластера Nomad с консолью на облачных серверах

0 Акции
0
0
0
0

Введение

В этом руководстве мы настроим кластер HashiCorp Nomad, используя консоль для обнаружения сервисов и узлов. Используя 3 серверных узла и произвольное количество клиентских узлов, это руководство может стать хорошей основой для растущих проектов. Мы также создадим снимок в облаке Hetzner для наших клиентов, что позволит нам добавлять новых клиентов без необходимости их ручной настройки. Этот кластер будет работать в частной сети между серверами и поддерживать все стандартные функции Nomad и консоли, такие как обнаружение сервисов и томов.

В этом руководстве частично соблюдаются шаги, рекомендованные в официальных руководствах по установке Consul и Nomad.

Предпосылки
  • Учетная запись Hetzner Cloud
  • Введение в Linux и команды терминала
  • Возможность подключения к серверу по ssh

Данное руководство было протестировано на серверах Ubuntu 24.04 из Hetzner Cloud с версиями Nomad 1.9.3 и Consul 1.20.1.

Термины и символы

Команды:

local$ <دستور> # این دستور باید در ماشین محلی شما اجرا شود

server$ <دستور> # این دستور باید در سرور به‌عنوان کاربر root اجرا شود

 

Шаг 1 — Создание базового изображения

На этом этапе будут использованы следующие ресурсы:

  • 1 облачный сервер Hetzner модели CX22

Начнём с настройки сервера Consul/Nomad на новом сервере CX22 в облаке Hetzner. Полученный снимок будет использоваться в качестве базового образа для всех серверов и клиентов кластера на следующих этапах.

Шаг 1.1 – Установка Consul

Чтобы установить Consul, выполните следующие команды:

server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install consul

Чтобы добавить функцию автозаполнения в Consul (необязательно):

server$ consul -autocomplete-install

Шаг 1.2 — Установка исполняемого файла Nomad

Чтобы установить Nomad, выполните следующие команды:

server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install nomad

Чтобы добавить функцию автозаполнения в Nomad (необязательно):

server$ nomad -autocomplete-install

Шаг 1.3 – Подготовка служб systemd

Consul и Nomad должны запускаться автоматически при загрузке. Чтобы включить эту функцию, создайте для каждого из них службу systemd.

server$ chown consul:consul dc1-server-consul*
server$ chown consul:consul dc1-client-consul*
server$ chown -R consul:consul /opt/consul
server$ chown -R nomad:nomad /opt/nomad
server$ mkdir -p /opt/alloc_mounts && chown -R nomad:nomad /opt/alloc_mounts

Затем создайте файл конфигурации /etc/systemd/system/consul.service со следующим содержимым:

[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl
[Service]
EnvironmentFile=-/etc/consul.d/consul.env
User=consul
Group=consul
ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

И создайте файл конфигурации /etc/systemd/system/nomad.service со следующим содержимым:

[Unit]
Description=Nomad
Documentation=https://www.nomadproject.io/docs/
Wants=network-online.target
After=network-online.target
[Service]
User=nomad
Group=nomad
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=65536
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
OOMScoreAdjust=-1000
TasksMax=infinity
[Install]
WantedBy=multi-user.target

Не включайте эти службы на данном этапе, так как установка еще не завершена.

Шаг 1.5 — Создание базового снимка

Наконец, остановите сервер в консоли Hetzner Cloud и создайте снимок состояния. Этот снимок будет использован в качестве основы для настройки серверов и клиентов кластера.

Шаг 2 — Настройка кластерных серверов

На этом этапе вы создадите три кластерных сервера из базового образа. Эти серверы станут основой вашего кластера и автоматически выберут лидера кластера.

Мы будем использовать следующие ресурсы:

  • 1. Облачная сеть Hetzner
  • 3 облачных сервера Hetzner модели CX22

В консоли Hetzner Cloud Console создайте три сервера CX22 из снимка, созданного на шаге 1, и подключите их к общей облачной сети. В этом руководстве будет использоваться сеть 10.0.0.0/8, но подойдут и сети меньшего размера.

Шаг 2.1 — Генерация симметричного ключа шифрования

Сначала создайте симметричный ключ шифрования, который будет общим для всех серверов. Сохраните этот ключ в надёжном месте, так как он понадобится нам на следующих этапах.

server$ consul keygen

Шаг 2.2 — Распространение сертификатов

Теперь мы можем скопировать нужные сертификаты из шага 1 в каталог конфигурации Consul. Выполните следующую команду на всех серверах:

server$ cp consul-agent-ca.pem /etc/consul.d/

Три сертификата сервера, созданные на шаге 1, необходимо распространить так, чтобы каждый сервер получил свой уникальный сертификат с соответствующим ключом. В этом руководстве представлены следующие команды для разных серверов:

[10.0.0.2] server$ cp -a dc1-server-consul-0* /etc/consul.d/
[10.0.0.3] server$ cp -a dc1-server-consul-1* /etc/consul.d/
[10.0.0.4] server$ cp -a dc1-server-consul-2* /etc/consul.d/

Шаг 2.3 – Редактирование конфигурации консула

На всех серверах отредактируйте файл конфигурации /etc/consul.d/consul.hcl и добавьте следующее содержимое:

datacenter = "dc1"
data_dir = "/opt/consul"
encrypt = "your-symmetric-encryption-key"
tls {
defaults {
ca_file = "/etc/consul.d/consul-agent-ca.pem"
cert_file = "/etc/consul.d/dc1-server-consul-0.pem"
key_file = "/etc/consul.d/dc1-server-consul-0-key.pem"
verify_incoming = true
verify_outgoing = true
},
internal_rpc {
verify_server_hostname = true
}
}
retry_join = ["10.0.0.2"]
bind_addr = "{{ GetPrivateInterfaces | include \"network\" \"10.0.0.0/8\" | attr \"address\" }}"
acl = {
enabled = true
default_policy = "allow"
enable_token_persistence = true
}
performance {
raft_multiplier = 1
}

Шаг 2.4 — Настройка Consul и Nomad

Теперь, когда настройки выполнены правильно, вы можете запустить службы Consul и Nomad.

server$ systemctl enable consul
server$ systemctl start consul
server$ systemctl enable nomad
server$ systemctl start nomad

Для проверки состояния служб вы можете использовать следующие команды:

server$ systemctl status consul
server$ systemctl status nomad
 

Если все работает правильно, службы Consul и Nomad должны быть запущены, а кластер должен быть правильно настроен.

Шаг 2.5 – Подключение других узлов к кластеру

Теперь, когда основные серверы кластера запущены и работают, пришло время подключить остальные узлы. Чтобы подключить клиентские узлы к кластеру, просто примените те же настройки к конфигурациям Consul и Nomad для новых узлов.

На каждом клиентском узле создайте те же файлы конфигурации, что и на основном сервере, а затем запустите службы:

client$ cp consul-agent-ca.pem /etc/consul.d
/client$ cp dc1-client-consul-* /etc/consul.d
/client$ systemctl enable consul client$ systemctl start consul
client$ systemctl enable nomad client$ systemctl start nomad

Шаг 3 — Проверка кластера и конфигурации

После запуска серверов и клиентов вы можете проверить состояние кластера с помощью следующих команд:

client$ consul members

Эта команда должна отобразить список узлов кластера. Вы также можете проверить состояние и настройки Nomad, выполнив следующую команду:

client$ nomad status

Шаг 4 – Управление кластером

Теперь, когда ваш кластер Consul и Nomad правильно настроен, вы можете управлять им и пользоваться его различными функциями.

Для просмотра состояния кластера и выполнения запросов на управление используйте следующие команды:

  • информация консула # для получения общей информации о кластере Консул
  • статус работы кочевника # для просмотра статуса работы Nomad
  • статус распределения кочевников # для просмотра статуса распределения в кластере Nomad

Использование кластера Nomad

Nomad позволяет выполнять различные задачи, такие как управление заданиями, развертывание модулей и координация с Consul для обнаружения сервисов.

Использование Consul для поиска услуг

Consul обеспечивает автоматическое обнаружение сервисов. Используя веб-интерфейс Consul (доступный по умолчанию через порт 8500), вы можете просматривать доступные сервисы и настраивать их при необходимости.

Результат

В этом руководстве вы создали кластер из серверов HashiCorp Nomad и Consul в частной облачной сети с помощью Hetzner Cloud. Этот кластер можно использовать для управления различными крупномасштабными рабочими нагрузками. В руководстве также подробно рассмотрен запуск новых узлов с помощью Snapshot и настройка серверов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться