service:keepalived
Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
service:keepalived [23.03.2022 14:46] – [Конфиг] viacheslav | service:keepalived [30.07.2024 19:21] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Keepalived ====== | ||
+ | Состоит из 2 частей: | ||
+ | - LB, основанная на модуле ядра Linux Virtual Server (IPVS), 4 уровень OSI. Keepalived предоставляет набор проверок состояния серверов для динамического и гибкого распределения ресурсов в балансируемом пуле. | ||
+ | - HA, основанная на Virtual Redundancy Routing Protocol (VRRP). | ||
+ | Машина, | ||
+ | |||
+ | Работает как 3 процесса: | ||
+ | |||
+ | Файл конфигурации по умолчанию - ''/ | ||
+ | |||
+ | Варианты проверок: | ||
+ | - TCP_CHECK - уровень 4, TCP Vanilla check. Если сервер не отвечает - долой из пула. | ||
+ | - HTTP_GET - уровень 5, ходит на URL, проверка MD5, вычисляется утилитой genhash, идущей в составе keepalived. Можно для одного сервера указывать несколько URL. | ||
+ | - SSL_GET - то же, что и HTTP_GET, только использует SSL_соединение. | ||
+ | - MISC_CHECK - использование самописного скрипта, | ||
+ | |||
+ | Failover (VRRP) Framework: | ||
+ | - Failover: создание виртуальных адресов (VIPs), это основное применение протокола VRRP. | ||
+ | - VRRP Instance synchronization: | ||
+ | - Nice Fallback | ||
+ | - Advert Packet integrity: используется IPSEC-AH ICV. | ||
+ | - System call: при изменении состояния VRRP (VRRP state transition), | ||
+ | |||
+ | Режимы работы LB: | ||
+ | - Виртуальный сервер через NAT. Используется, | ||
+ | - Через туннель - запросы с LB на сервера идут по IP-туннелю, | ||
+ | - Прямая маршрутизация - клиенты обращаются на VIP, а сервера шлют им ответ напрямую. Недостаток этого метода маршрутизации заключается в ограничении ARP. Чтобы настоящие серверы могли напрямую отвечать на запросы публичных пользователей, | ||
+ | |||
+ | https:// | ||
+ | https:// | ||
+ | |||
+ | ===== Конфиг ===== | ||
+ | |||
+ | Простейший конфиг | ||
+ | <code bash> | ||
+ | vrrp_instance haproxy1 { | ||
+ | interface eth0 | ||
+ | virtual_router_id 1 | ||
+ | # to be MASTER, make priority 50 more than on other machines. | ||
+ | priority 100 | ||
+ | authentication { | ||
+ | auth_type PASS | ||
+ | auth_pass 1111 | ||
+ | } | ||
+ | virtual_ipaddress { | ||
+ | 192.168.1.40 | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | https:// | ||
+ | https:// | ||
+ | |||
+ | ''/ | ||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP half column> | ||
+ | Первичный сервер | ||
+ | <code bash> | ||
+ | global_defs { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | |||
+ | vrrp_script chk_haproxy { | ||
+ | script "/ | ||
+ | interval 3 | ||
+ | weight 50 | ||
+ | user root | ||
+ | } | ||
+ | |||
+ | |||
+ | vrrp_instance haproxy_DMZ { | ||
+ | |||
+ | interface eth2 | ||
+ | virtual_router_id 1 | ||
+ | priority 100 | ||
+ | |||
+ | authentication { | ||
+ | auth_type PASS | ||
+ | auth_pass 12345 | ||
+ | } | ||
+ | |||
+ | virtual_ipaddress { | ||
+ | 192.168.20.44/ | ||
+ | } | ||
+ | |||
+ | track_script { | ||
+ | chk_haproxy | ||
+ | } | ||
+ | |||
+ | smtp_alert | ||
+ | |||
+ | } | ||
+ | |||
+ | vrrp_instance haproxy_LAN { | ||
+ | |||
+ | interface eth0 | ||
+ | virtual_router_id 2 | ||
+ | priority 100 | ||
+ | |||
+ | authentication { | ||
+ | auth_type PASS | ||
+ | auth_pass 54321 | ||
+ | } | ||
+ | |||
+ | virtual_ipaddress { | ||
+ | 10.1.4.55/ | ||
+ | } | ||
+ | |||
+ | track_script { | ||
+ | chk_haproxy | ||
+ | } | ||
+ | |||
+ | smtp_alert | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP half column> | ||
+ | Вторичный сервер | ||
+ | <code bash> | ||
+ | global_defs { | ||
+ | | ||
+ | | ||
+ | } | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | } | ||
+ | |||
+ | |||
+ | vrrp_script chk_haproxy { | ||
+ | script "/ | ||
+ | interval 3 | ||
+ | weight 50 | ||
+ | user root | ||
+ | } | ||
+ | |||
+ | |||
+ | vrrp_instance haproxy_DMZ { | ||
+ | |||
+ | interface eth2 | ||
+ | virtual_router_id 1 | ||
+ | priority 90 | ||
+ | |||
+ | authentication { | ||
+ | auth_type PASS | ||
+ | auth_pass 12345 | ||
+ | } | ||
+ | |||
+ | virtual_ipaddress { | ||
+ | 192.168.20.44/ | ||
+ | } | ||
+ | |||
+ | track_script { | ||
+ | chk_haproxy | ||
+ | } | ||
+ | |||
+ | smtp_alert | ||
+ | |||
+ | } | ||
+ | |||
+ | vrrp_instance haproxy_LAN { | ||
+ | |||
+ | interface eth0 | ||
+ | virtual_router_id 2 | ||
+ | priority 90 | ||
+ | |||
+ | authentication { | ||
+ | auth_type PASS | ||
+ | auth_pass 54321 | ||
+ | } | ||
+ | |||
+ | virtual_ipaddress { | ||
+ | 10.1.4.55/ | ||
+ | } | ||
+ | |||
+ | track_script { | ||
+ | chk_haproxy | ||
+ | } | ||
+ | |||
+ | amtp_alert | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Отправка писем ===== | ||
+ | Силами Postfix. При настройке выбрать Satellite system, т. е. весь почтовый трафик идёт через внешний почтовый сервер. | ||
+ | |||
+ | Примерный конфиг ''/ | ||
+ | <code bash> | ||
+ | # See / | ||
+ | |||
+ | # Debian specific: | ||
+ | # line of that file to be used as the name. The Debian default | ||
+ | # is / | ||
+ | #myorigin = / | ||
+ | |||
+ | smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu) | ||
+ | biff = no | ||
+ | |||
+ | # appending .domain is the MUA's job. | ||
+ | append_dot_mydomain = no | ||
+ | |||
+ | # Uncomment the next line to generate " | ||
+ | # | ||
+ | |||
+ | readme_directory = no | ||
+ | |||
+ | # See http:// | ||
+ | # fresh installs. | ||
+ | compatibility_level = 2 | ||
+ | |||
+ | # TLS parameters | ||
+ | smtpd_tls_cert_file=/ | ||
+ | smtpd_tls_key_file=/ | ||
+ | smtpd_tls_security_level=may | ||
+ | |||
+ | smtp_tls_CApath=/ | ||
+ | smtp_tls_security_level=may | ||
+ | smtp_tls_session_cache_database = btree: | ||
+ | |||
+ | smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination | ||
+ | myhostname = vmls-haproxy2.domain.ru | ||
+ | alias_maps = hash:/ | ||
+ | alias_database = hash:/ | ||
+ | mydestination = vmls-haproxy2.domain.ru, | ||
+ | relayhost = mail.domain.ru | ||
+ | mailbox_size_limit = 0 | ||
+ | recipient_delimiter = | ||
+ | inet_interfaces = loopback-only | ||
+ | inet_protocols = ipv4 | ||
+ | </ |