Keepalived: различия между версиями
(Новая страница: «{{Stub}} Keepalived - это программный комплекс обеспечивающий высокую доступность и балансировку ...») |
Aas (обсуждение | вклад) |
||
(не показано 9 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
{{Stub}} | {{Stub}} | ||
Keepalived - это программный комплекс обеспечивающий высокую доступность и балансировку нагрузки.<br> | Keepalived - это программный комплекс обеспечивающий высокую доступность и балансировку нагрузки.<br> | ||
Рассмотрим на примере | ==Тестовая конфигурация== | ||
Рассмотрим на примере почтовых серверов dovecot с настроенной репликацией [[Dovecot\Replication]]<br> | |||
*balance01 - сервер балансировки №1 IP 192.168.135.235 | *balance01 - сервер балансировки №1 IP 192.168.135.235 | ||
*balance02 - сервер балансировки №2 IP 192.168.135.236 | *balance02 - сервер балансировки №2 IP 192.168.135.236 | ||
Строка 13: | Строка 14: | ||
<pre>net.ipv4.ip_forward = 1</pre> | <pre>net.ipv4.ip_forward = 1</pre> | ||
Для немедленного применения настроек выполним: | Для немедленного применения настроек выполним: | ||
<pre>#sysctl -p</pre> | <pre># sysctl -p</pre> | ||
==Настройка MASTER сервера== | ==Настройка MASTER сервера== | ||
Строка 22: | Строка 23: | ||
<pre>global_defs { | <pre>global_defs { | ||
! имя балансера | ! имя балансера | ||
router_id LVS_1 | |||
}</pre> | }</pre> | ||
Добавим блок '''vrrp_instance''' отвечающий за настройку виртуального роутера, для каждого сетевого интерфейса необходимо настроить, по крайне мере один блок vrrp_instance. Вы можете добавить необходимое количество блоков для каждой группы виртуальных IP: | Добавим блок '''vrrp_instance''' отвечающий за настройку виртуального роутера, для каждого сетевого интерфейса необходимо настроить, по крайне мере один блок vrrp_instance. Вы можете добавить необходимое количество блоков для каждой группы виртуальных IP: | ||
Строка 83: | Строка 84: | ||
<pre># systemctl enable keepalived | <pre># systemctl enable keepalived | ||
# systemctl start keepalived</pre> | # systemctl start keepalived</pre> | ||
На MASTER ноде должен добавится виртуальный IP: | |||
<pre># 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</pre> | |||
==Настройка BACKUP сервера== | ==Настройка BACKUP сервера== | ||
Файл настройки BACKUP сервера отличается только следующими параметрами: | Файл настройки BACKUP сервера отличается только следующими параметрами: | ||
<pre> | <pre>router_id LVS_2 | ||
state BACKUP | state BACKUP | ||
priority 100</pre> | priority 100</pre> | ||
==Настройка back-end серверов== | ==Настройка back-end серверов== | ||
Необходимо настроить виртуальный IP на обоих back-end серверах. Для этого в файл {{path|/etc/net/ifaces/ens18/ipv4address}} добавим наш виртуальный IP: | Необходимо настроить виртуальный IP на обоих back-end серверах. Для этого в файл {{path|/etc/net/ifaces/ens18/ipv4address}} добавим наш виртуальный IP: | ||
<pre>192.168.135.237/24</pre> | <pre>192.168.135.237/24</pre> | ||
Только MASTER сервер балансировки должен отвечать ARP запросы виртуального IP адреса. Необходимо установить параметры ядра '''arp_ignore''' и '''arp_announce''' для сетевого интерфейса с виртуальным IP, для того чтобы они не реагировали на ARP запросы для виртуального IP адреса. Для этого для этого в файле {{path|/etc/net/sysctl.conf}} добавим: | Только MASTER сервер балансировки должен отвечать ARP запросы виртуального IP адреса. Необходимо установить параметры ядра '''arp_ignore''' и '''arp_announce''' для сетевого интерфейса с виртуальным IP, для того чтобы они не реагировали на ARP запросы для виртуального IP адреса. Для этого для этого в файле {{path|/etc/net/sysctl.conf}} добавим: | ||
<pre>net.ipv4.conf. | <pre>net.ipv4.conf.ens18.arp_ignore = 1 | ||
net.ipv4.conf. | net.ipv4.conf.ens18.arp_announce = 2</pre> | ||
Для немедленного применения выполним: | Для немедленного применения выполним: | ||
<pre># sysctl -p</pre> | <pre># sysctl -p</pre> | ||
На обоих back-end серверах должен появится виртуальный IP адрес: | |||
<pre># 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</pre> |
Текущая версия от 15:46, 24 января 2018
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