Участник:Petr-akhlamov/Keepalived вразработке: различия между версиями
Нет описания правки |
|||
Строка 125: | Строка 125: | ||
[[Файл:Keepalived-стенд-lvps.png|500px]] | [[Файл:Keepalived-стенд-lvps.png|500px]] | ||
==Конфигурационный файл keepalived без использования ipvsadm в активном режиме== | |||
Настройка высокой доступности | |||
<syntaxhighlight lang="bash"> | |||
! Configuration File for keepalived | |||
global_defs { ! MASTER | |||
enable_script_security | |||
} | |||
vrrp_script check_ssh_dienst { | |||
script "/usr/bin/pgrep sshd" | |||
interval 3 | |||
fall 1 | |||
rise 2 | |||
user root | |||
} | |||
vrrp_instance VI_1 { | |||
state MASTER #Имя | |||
interface enp0s8 #Интерфейс | |||
virtual_router_id 51 | |||
priority 100 #Приоритет | |||
advert_int 1 | |||
authentication { | |||
auth_type PASS | |||
auth_pass 1234 | |||
} | |||
track_script { | |||
check_ssh_dienst | |||
} | |||
virtual_ipaddress { | |||
192.168.100.100 dev enp0s8 label enp0s8:2 #Добавление новой карты + IP | |||
} | |||
} | |||
</syntaxhighlight> |
Версия от 16:04, 7 марта 2025
Keepalived - это программный комплекс обеспечивающий высокую доступность и балансировку нагрузки.
Тестовая конфигурация
Рассмотрим на примере почтовых серверов dovecot с настроенной репликацией Dovecot\Replication
- balance01 - сервер балансировки №1 IP 192.168.135.235
- balance02 - сервер балансировки №2 IP 192.168.135.236
- dovecot01 - back-end сервер №1 IP 192.168.135.238
- dovecot02 - back-end сервер №2 IP 192.168.135.239
- 192.168.135.237 - виртуальный адрес по которому будут доступны back-end серверы
Предварительная настройка балансировочных серверов
Установим нужный пакет на обоих серверах балансировки:
# apt-get install keepalived
Изменим параметр ядра net.ipv4.ip_forward для этого в файле /etc/net/sysctl.conf добавим:
net.ipv4.ip_forward = 1
Для немедленного применения настроек выполним:
# sysctl -p
Настройка MASTER сервера
Создадим файл настройки:
# touch /etc/keepalived/keepalived.conf
Комментарии в файле настройки выделяются знаком "!"
Добавим блок global_defs:
global_defs { ! имя балансера router_id LVS_1 }
Добавим блок vrrp_instance отвечающий за настройку виртуального роутера, для каждого сетевого интерфейса необходимо настроить, по крайне мере один блок vrrp_instance. Вы можете добавить необходимое количество блоков для каждой группы виртуальных IP:
vrrp_instance DOVECOT { !Указывает на то что в каком состоянии стартует нода state MASTER !Интерфейс для виртуальных IP interface ens18 !Интерфейс для обмена служебными пакетами между нодами lvs_sync_daemon_inteface ens18 !Уникальное имя виртуального роутера virtual_router_id 102 !Приоритет данной ноды относительно других, нода с наибольшим приоритетом переходит в состояние MASTER priority 150 !Как часто происходит обновление состояния кластера advert_int 1 !Аутентификация используется для синхронизации между нодами authentication { auth_type PASS auth_pass 12345678 } !Виртуальные адреса, которые настроит keealived virtual_ipaddress { 192.168.135.237/24 } }
Далее следует блок настройки виртуального сервера:
virtual_server 192.168.135.237 22 { !Частота проверок delay_loop 6 !Выбираем режим балансировки, для dovecot лучше выбрать Locality-Based Least-Connection lb_algo lblc !Выбираем метод перенаправления, в нашем случае Direct Routing lb_kind DR protocol TCP !Описываем back-end серверы real_server 192.168.135.238 143 { !Задаем вес сервера weight 1 !Настраиваем проверку на доступность TCP_CHECK { connect_timeout 3 connect_port 143 nb_get_retry 3 delay_before_retry 3 } } real_server 192.168.135.239 143 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 143 nb_get_retry 3 delay_before_retry 3 } } }
Запустим и добавим сервис keepalived в автозагрузку:
# systemctl enable keepalived # systemctl start keepalived
На MASTER ноде должен добавится виртуальный IP:
# ip a | grep ens18 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 inet 192.168.135.235/24 brd 192.168.135.255 scope global ens18 inet 192.168.135.237/24 scope global secondary ens18
Настройка BACKUP сервера
Файл настройки BACKUP сервера отличается только следующими параметрами:
router_id LVS_2 state BACKUP priority 100
Настройка back-end серверов
Необходимо настроить виртуальный IP на обоих back-end серверах. Для этого в файл /etc/net/ifaces/ens18/ipv4address добавим наш виртуальный IP:
192.168.135.237/24
Только MASTER сервер балансировки должен отвечать ARP запросы виртуального IP адреса. Необходимо установить параметры ядра arp_ignore и arp_announce для сетевого интерфейса с виртуальным IP, для того чтобы они не реагировали на ARP запросы для виртуального IP адреса. Для этого для этого в файле /etc/net/sysctl.conf добавим:
net.ipv4.conf.ens18.arp_ignore = 1 net.ipv4.conf.ens18.arp_announce = 2
Для немедленного применения выполним:
# sysctl -p
На обоих back-end серверах должен появится виртуальный IP адрес:
# ip a |grep ens18 2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 inet 192.168.135.238/24 brd 192.168.135.255 scope global ens18 inet 192.168.135.237/24 scope global secondary ens18
Возможные варианты использования Keepalived. Масштабируемость
Вероятность безотказной работы [P]:
- P = 1 - (1 -PMaster)x(1 -PBackup)
- P = 1 - (1 -Pnode1)x ... x(1 -Pnode N)
Схема стенда при организации VIP(LVS) во внутренней сети
IP: 192.168.100.0/24
Конфигурационный файл keepalived без использования ipvsadm в активном режиме
Настройка высокой доступности
! Configuration File for keepalived
global_defs { ! MASTER
enable_script_security
}
vrrp_script check_ssh_dienst {
script "/usr/bin/pgrep sshd"
interval 3
fall 1
rise 2
user root
}
vrrp_instance VI_1 {
state MASTER #Имя
interface enp0s8 #Интерфейс
virtual_router_id 51
priority 100 #Приоритет
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
track_script {
check_ssh_dienst
}
virtual_ipaddress {
192.168.100.100 dev enp0s8 label enp0s8:2 #Добавление новой карты + IP
}
}