Установка Consul Server на AlmaLinux 9
1. Подготовка системы
- Обновите пакеты:
sudo dnf update -y
- Установите необходимые зависимости:
sudo dnf install -y curl unzip
sudo firewall-cmd --permanent --zone=public --add-port={8300,8301,8302,8400,8500,8600}/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-all
SELinux:
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
sudo reboot
2. Установка Consul из бинарника
curl -O https://releases.hashicorp.com/consul/1.16.0/consul_1.16.0_linux_amd64.zip
- Распакуйте архив:
unzip consul_1.16.0_linux_amd64.zip
- Переместите файл в /usr/local/bin:
sudo mv consul /usr/local/bin/
- Проверьте установку:
consul --version
2.1. Установка Consul из репозитория
Ставим утилиту:
sudo dnf install dnf-plugins-core nano
Подключаем репозиторий:
sudo dnf config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo dnf repolist
Далее:
sudo dnf install consul
which consul
consul version
Настройка Consul
На этом этапе вы уже установили Consul на все серверы AlmaLinux. Давайте приступим к настройке кластера Consul с несколькими серверами. В качестве примера мы будем использовать три сервера AlmaLinux:
Имя хостаIP-адресconsul1192.168.10.41consul2192.168.10.42consul3192.168.10.43
- Остановите службу Consul на всех серверах, выполнив команду:
sudo systemctl stop consul
- Сгенерируйте ключ шифрования для кластера. На сервере consul1 выполните:bashCopyconsul keygen
Обязательно сохраните сгенерированный ключ - он понадобится для настройки всех серверов кластера.
Важно:
Ключ должен быть одинаковым на всех серверах кластера
Без правильного ключа серверы не смогут установить защищенное соединение
Храните ключ в безопасном месте - он используется для шифрования внутреннего трафика кластера
Следующим шагом будет настройка конфигурационных файлов на каждом сервере с использованием этого ключа шифрования.
Настройка конфигурации Consul
На всех серверах Consul откройте основной конфигурационный файл с помощью редактора nano:
sudo nano /etc/consul.d/consul.hcl
Замените стандартную конфигурацию на следующую, обратив внимание на ключевые параметры:
- server: true - указывает, что нода будет работать как сервер Consul
- advertise_addr - замените на IP-адрес текущего сервера
- bootstrap_expect - количество серверов в кластере
- encrypt - ключ шифрования (должен быть одинаковым на всех серверах)
- retry_join - список IP-адресов серверов кластера
# Полный список параметров конфигурации:
# https://www.consul.io/docs/agent/config
# Название дата-центра
datacenter = "kitty-dc1"
# Директория для хранения данных
data_dir = "/opt/consul"
# Адрес для клиентских подключений
# (включая HTTP и DNS интерфейсы)
client_addr = "0.0.0.0"
# Включение веб-интерфейса
ui_config {
enabled = true
}
# Домен по умолчанию
domain = "consul"
# Настройки DNS
dns_config {
enable_truncate = true
only_passing = true
}
# Режим сервера
server = true
# Рекламный адрес (для клиентских подключений)
advertise_addr = "192.168.10.41"
# Ожидаемое количество серверов в кластере
bootstrap_expect = 3
# Ключ шифрования трафика
encrypt = "jFtV8jj4h1hnXGqTllWH+sOqLo/tw9xnnfDHcVxVnYg="
# Список серверов для подключения
retry_join = ["192.168.10.41", "192.168.10.42", "192.168.10.43"]
После внесения изменений сохраните файл и выйдите из редактора (Ctrl+X, затем Y и Enter).
Проверка конфигурации
Выполните следующую команду для проверки корректности конфигурации. При успешной проверке вы увидите сообщение "Configuration is valid":
sudo consul validate /etc/consul.d/
Важно:
Для каждого сервера укажите его собственный advertise_addr
Ключ encrypt должен быть одинаковым на всех серверах кластера
Параметр bootstrap_expect должен соответствовать фактическому количеству серверов
Выполните следующие команды для запуска и настройки автозагрузки Consul:
# Запуск службы Consul
sudo systemctl start consul
# Включение автозагрузки при старте системы
sudo systemctl enable consul
После этого проверьте статус работы службы:
sudo systemctl status consul
Ожидаемый вывод для сервера consul1:
После выполнения одинаковых шагов на всех серверах, убедитесь в корректной работе:
После выполнения одинаковых шагов на всех серверах, убедитесь в корректной работе:
еперь, когда кластер Consul настроен на серверах AlmaLinux, вы можете проверять и взаимодействовать с ним через командную строку.
Проверка кластера Consul
Выполните следующую команду, чтобы проверить доступные серверы в кластере:
consul members
В этом примере кластер Consul состоит из трех серверов: consul1, consul2 и consul3.
Для проверки списка участников кластера выполните:
consul operator raft list-peers
Вы увидите детальную информацию о каждом сервере, включая ID, состояние, роль (voter) и версию RaftProtocol.
Добавление хранилища Key-Value в Consul
Создайте новую базу данных ключ-значение с помощью команды:
consul kv put consul/configuration/db_name testdb
Чтобы получить значение для ключа db_name, выполните:
consul kv get consul/configuration/db_name
Вы должны получить значение testdb.
Взаимодействие с DNS в Consul
Для проверки конфигурации DNS Consul используйте команду:
dig @127.0.0.1 -p 8600 consul.service.consul
Это подтвердит, что домен consul.service.consul содержит A-записи для серверов 192.168.10.41, 192.168.10.42 и 192.168.10.43.
Доступ к веб-интерфейсу Consul
Откройте веб-браузер и перейдите по адресу сервера Consul с портом 8500, например:
http://192.168.10.41:8500/ui/
Вы увидите доступные серверы в кластере. Для получения детальной информации о каждом сервере перейдите в меню Nodes, а для просмотра списка ключей-значений — в меню Key/Value.
Заключение
Вы успешно завершили пошаговую установку кластера Consul на трех серверах AlmaLinux, включили веб-интерфейс и DNS. Также вы освоили базовые команды для взаимодействия с кластером, хранилищем ключей-значений и DNS.
Теперь вы можете активировать ACL (Access Control Lists) и настроить TLS для безопасного соединения между серверами и клиентами Consul.