Настройка кластера 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 должен вернуться на мастер-узел.Подготовка узлов кластера для синхронизации#
Настройка пользователей и прав доступа#
user
) с правами sudo
:$ sudo adduser user
$ sudo passwd user
wheel
:$ sudo usermod -a -G wheel user
rsync
при включенном МКЦ в Astra Linux задайте
корректный уровень целостности:$ sudo pdpl-user -i 63 user
$ echo "user ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee -a /etc/sudoers
$ su - user
$ ssh-keygen -t rsa
$ ssh-copy-id user@node2_hostname
/etc/ssh/sshd_config
установлена опция:PasswordAuthentication yes
no
для повышения
безопасности.$ scp -p .ssh/id_rsa* user@node2_hostname:.ssh/
Установка Angie PRO и angie-ha-sync#
Установка angie-ha-sync#
angie-ha-sync
на чистую систему по зависимостям
будет установлен также пакет angie
.$ sudo {apk|apt|pkg|yum|zypper} {add|install} angie-ha-sync
Настройка синхронизации конфигурации#
rsync
.angiehasync -Sd
).rsync
запущен в режиме демона (daemon-mode).Настройка
rsync
#rsync
(/etc/rsyncd.conf
) на узлах:[angie] # Директория с конфигурацией Angie
path = /etc/angie
# Пользователь для синхронизации
uid = user
# Группа пользователя
gid = user
# 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