Настройка кластера Angie#
Это руководство описывает процесс создания отказоустойчивого кластера Angie
с автоматической синхронизацией конфигурации
и переключением виртуального IP-адреса. Первым шагом необходимо подготовить все узлы кластера,
настроив учетные записи пользователей
и обеспечив безопасный доступ между серверами. Создайте на всех узлах пользователя
(например, Задайте пароль при необходимости: Примечание В некоторых ОС (например, в Альт Линукс)
следует добавить пользователя в группу Для работы с Настройте sudo без пароля: На мастер-узле создайте SSH-ключи и скопируйте их на резервные узлы: Предупреждение Перед копированием SSH-ключей убедитесь, что в файле
После настройки доступа по ключу установите значение Примечание Для перекрестной синхронизации конфигурации Angie скопируйте ключи
пользователя на все узлы: После подготовки узлов необходимо установить основные компоненты кластера:
Angie PRO и пакет для синхронизации конфигурации. Настройте репозиторий на всех узлах
по инструкции для пакетов вашей системы. Примечание При установке пакета На всех узлах установите пакет с помощью пакетного менеджера вашей ОС: Следующий этап — настройка автоматической синхронизации конфигурационных файлов
между узлами кластера. Примечание Принцип работы синхронизации: Синхронизация выполняется через Происходит только при работающей службе Angie. Выполняется вручную (команда Работает в одном направлении: от мастер-узла к резервному. Создайте конфигурацию В зависимости от ОС запустите демон: Отредактируйте Примечание Для перекрестной синхронизации
заполните список Добавьте блок проверки работоспособности в конфигурацию Angie
( Запустите Angie: Запустите синхронизацию: Примечание Скрипт автоматически проверит конфигурацию, выполнит синхронизацию со всеми
узлами и применит ее. Для автоматического переключения между узлами кластера используется Keepalived —
служба управления виртуальными IP-адресами (VIP). Примечание Если пакет Для связывания процессов с нелокальными IP-адресами
разрешите системе соответствующие действия: Подробнее:
https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt#ip_nonlocal_bind Допустим, VIP Если Angie слушает этот VIP ( На мастер-узле ( На резервном узле: Примечание В разделе Запустите службу: Рассмотрим подробнее основные элементы конфигурации Keepalived
для понимания принципов работы кластера. Конфигурация включает две части: Основные элементы: Примечание Если исходный мастер-узел восстановится,
он снова получит роль MASTER (приоритет выше).
Чтобы отключить возврат, используйте параметр После завершения настройки необходимо протестировать работу кластера
и убедиться в корректном переключении между узлами. Проверьте статус VIP: Протестируйте отказоустойчивость: Остановите Angie на мастер-узле: Проверьте переход VIP на резервный узел: Запустите Angie на мастер-узле снова: После этого VIP должен вернуться на мастер-узел.Подготовка узлов кластера для синхронизации#
Настройка пользователей и прав доступа#
angie-ha-sync) с правами sudo:$ sudo adduser angie-ha-sync
$ sudo passwd angie-ha-sync
wheel:$ sudo usermod -a -G wheel angie-ha-sync
rsync при включенном МКЦ в Astra Linux задайте
корректный уровень целостности:$ sudo pdpl-user -i 63 angie-ha-sync
$ echo "angie-ha-sync ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers
$ su - angie-ha-sync
$ ssh-keygen -t rsa
$ ssh-copy-id angie-ha-sync@node2_hostname
/etc/ssh/sshd_config установлена опция:PasswordAuthentication yesno для повышения
безопасности.$ scp -p ~angie-ha-sync/.ssh/id_rsa angie-ha-sync@node2_hostname:.ssh/
Установка Angie PRO и angie-ha-sync#
Установка angie-ha-sync#
angie-pro-ha-sync на чистую систему
по зависимостям будет установлен также пакет angie-pro.$ sudo {apk|apt|pkg|yum|zypper} {add|install} angie-pro-ha-sync
Настройка синхронизации конфигурации#
rsync.angiehasync -Sd).rsync запущен в режиме демона (daemon-mode).Настройка
rsync#rsync (/etc/rsyncd.conf) на узлах:[angie] # Директория с конфигурацией Angie
path = /etc/angie
# Пользователь для синхронизации
uid = angie-ha-sync
# Группа пользователя
gid = angie-ha-sync
# IP или подсеть, с которой разрешено подключение
hosts allow = 10.21.8.0/24
# Запретить все остальные
hosts deny = *
$ sudo service rsyncd start # или $ sudo service rsync start
Настройка файла синхронизации#
/etc/angiehasync/angiehasync.conf:M_NODE="<node1_hostname>" # Имя хоста или IP данной ноды
TARGET_HOSTS="<node2_hostname>" # Список хостов/IP для синхронизации (через пробел).
# На резервных узлах можно не указывать.
SSH_USER="user" # Пользователь для синхронизации (с правами администратора)
SSH_ID="/home/$SSH_USER/.ssh/id_rsa" # Путь к приватному ключу
TARGET_HOSTS на всех узлах;
при этом не следует включать в список текущий узел,
на котором в данный момент идет настройка.Настройка проверок работоспособности для Angie#
/etc/angie/angie.conf):server {
listen unix:/tmp/angie_hcheck.sock; # Unix-сокет для проверки
access_log off;
error_log /dev/null;
default_type text/plain;
return 200 'ok\n';
}
$ sudo angie -t && sudo service angie start
$ sudo angiehasync -Sd
Настройка Keepalived#
keepalived не установлен — установите его:$ sudo {apk|apt|pkg|yum|zypper} {add|install} keepalived
$ sudo sysctl -w net.ipv4.ip_nonlocal_bind=1
10.21.11.230
назначается либо на мастер-узел (10.21.8.26),
либо на резервный (10.21.8.27).listen 10.21.11.230:80;),
но адрес пока не назначен,
Angie не сможет стартовать без параметра ip_nonlocal_bind.Конфигурация Keepalived#
/etc/keepalived/keepalived.conf):global_defs {
enable_script_security
}
vrrp_script angie_check {
script "/usr/bin/curl -s --connect-timeout 5 -A 'angie_hcheck_script'
--no-buffer -XGET --unix-socket /tmp/angie_hcheck.sock http://hcheck/"
interval 5 user angie
}
vrrp_instance angie {
state MASTER interface enp0s2 virtual_router_id 254 priority 100
advert_int 2 unicast_src_ip 10.21.8.26
unicast_peer {
10.21.8.27
}
virtual_ipaddress {
10.21.11.230
} track_script {
angie_check
}
}
global_defs {
enable_script_security
}
vrrp_script angie_check {
script "/usr/bin/curl -s --connect-timeout 5 -A 'angie_hcheck_script'
--no-buffer -XGET --unix-socket /tmp/angie_hcheck.sock http://hcheck/"
interval 5 user angie
}
vrrp_instance angie {
state MASTER interface enp0s2 virtual_router_id 254 priority 99
advert_int 2 unicast_src_ip 10.21.8.27
unicast_peer {
10.21.8.26
}
virtual_ipaddress {
10.21.11.230
} track_script {
angie_check
}
}
vrrp_instance angie задайте следующие значения:unicast_src_ip — IP текущего узлаunicast_peer — IP соседних узловvirtual_ipaddress — виртуальный IP (VIP)interface — сетевой интерфейс$ sudo keepalived -t && sudo service keepalived start
Разбор конфигурации Keepalived#
global_defs — глобальные настройкиvrrp_instance — параметры VRRP (переключение VIP)enable_script_security — разрешает выполнение скриптов проверки работоспособностиvrrp_script — скрипт проверки Angiestate MASTER — начальное состояние узлаpriority — приоритет (роль MASTER назначается наибольшему)advert_int — интервал VRRP-обновленийunicast_src_ip — IP текущего узлаunicast_peer — IP соседейvirtual_ipaddress — VIP-адресtrack_script — контроль доступности через скрипты проверки работоспособностиnopreempt:vrrp_instance angie {
... nopreempt
}
Проверка работы кластера#
$ ip addr show enp0s2 | grep "10.21.11.230"
$ sudo service angie stop
$ ip addr show enp0s2 | grep "10.21.11.230"
$ sudo service angie start