Оглавление
Для серверов Indeed AM возможно использовать балансировщик нагрузок HAProxy. Для обеспечения отказоустойчивости самого сервера с HAProxy рекомендуется развернуть второй сервер с HAProxy и использовать конфигурацию HAProxy + Keepalived.
Предусловия:
- Установленный и настроен центр сертификации Windows.
- Развернутая система Indeed AM с основным и дополнительным серверами.
- Развернутые две машины с ОС Linux, с обновленными компонентами.
- Рекомендуется установить Midnight Commander - для работы с файлами. В качестве текстового редактора рекомендуется использовать mcedit. Для установки выполните: sudo apt-get install mc
Для настройки балансировки SSL Termination потребуется:
-
- Установленный и настроенный центр сертификации.
- Сертификаты проверки подлинности для серверов Indeed AM.
- Сертификаты проверки подлинности веб-сервера Haproxy.
- Корневой сертификат домена.
- Настройка прозрачной аутентификации.
- Потребуются создание учетных записей в домене и добавление spn записей. Количество учетных записей зависит от количества серверов Indeed AM.
Настройка сертификатов
Запрос и установка сертификатов для серверов Indeed AM
Необходимо установить сертификаты проверки подлинности веб-сервера для каждого сервера Indeed AM.
При запросе сертификата, в качестве общего имени, можно использовать полное имя конкретной машины с сервером Indeed, например: indeedAM01.demo.local (При таком сценарии необходимо запросить сертификаты для каждого сервера Indeed), или использовать символ звездочки (*) перед доменным именем (Данный символ означает, что перед доменным именем может быть подставлена любая последовательность символов), например: *.demo.local (При таком сценарии будет достаточно запросить 1 сертификат и установить его на каждый сервер Indeed).
В данном примере запрашивается один сертификат для всех серверов Indeed AM.
- Выполните запрос сертификата и установку для каждого сервера Indeed AM.
- Настройте привязку с полученным сертификатом на каждом сервере Indeed AM.
Запрос и установка сертификатов для серверов HAProxy
При использовании https требуется установить сертификаты проверки подлинности веб-сервера для каждого сервера с HAProxy. Можно использовать сертификаты полученные от доменного CA, либо сгенерировать сертификаты с помощью OpenSSL (Потребуется добавление всех полученных сертификатов в доверенные).
При запросе сертификата указывается общее(Виртуальное) имя, используемое балансировщиками. Данное имя является DNS записью типа “A” для виртуального ip адреса указанного в Keepalived.
В данном примере используется имя server.bal.local.
Экспорт корневого сертификата УЦ
Требуется для того, чтобы сервер с Haproxy доверял серверам Indeed AM.
- Выполните экспорт корневого сертификата домена в формате .cer в кодировке Base-64.
- Скопируйте полученный сертификат на все машины с Haproxy в папку "/etc/ssl/CA". Если данной папке нет, требуется создать её.
Запрос и установка доменных сертификатов
- Выполните запрос сертификата проверки подлинности веб-сервера. Выберете параметр "Общее имя" и укажите полное DNS-имя которое будет использоваться для балансировщика нагрузки. В данной инструкции будет использоваться: server.bal.local
- Обратите внимание! Сертификат должен быть с длиной ключа минимум 2048.
Иначе при проверке конфигурационного файла Haproxy возникнет ошибка.
ИЛИ
- Выполните экспорт полученного сертификата вместе с закрытым ключом.
- В окне "Формат экспортируемого файла" оставьте настройки по умолчанию и нажмите "Далее".
- Установите пароль и сохраните сертификат.
- Скопируйте полученный сертификат на все машины с Haproxy.
- Для использования сертификата на haproxy необходимо выполнить следующие действия:
- Извлечь из сертификата зашифрованный приватный ключ. Для этого выполните команду (Потребуется указать пароль, заданный при экспорте сертификата):
openssl pkcs12 -in <Путь до вашего сертификата в формате pfx> -nocerts -out <Путь куда будет извлечен ключ>. Пример команды: openssl pkcs12 -in /home/indeed/Desktop/server.bal.local.pfx -nocerts -out /home/indeed/Desktop/server.bal.localKEY.key
- Извлечь сертификат в формате crt. Для этого выполните команду:
openssl pkcs12 -in <Путь до вашего сертификата в формате pfx> -clcerts -nokeys -out <Путь куда будет извлечен сертификат в формате crt>. Пример команды: openssl pkcs12 -in /home/indeed/Desktop/server.bal.local.pfx -clcerts -nokeys -out /home/indeed/Desktop/server.bal.local.crt
- Расшифровать приватный ключ. Для этого выполните команду (Потребуется указать пароль, заданный при экспорте сертификата):
openssl rsa -in <Путь до извлеченного ключа> -out <Путь куда будет извлечен расшифрованный ключ>. Пример команды: openssl rsa -in /home/indeed/Desktop/server.bal.localKEY.key -out /home/indeed/Desktop/server.bal.localKEY-descr.key
- Объединить расшифрованный ключ и сертификат в формате crt и скопировать в папку /etc/ssl/private/ . Для этого выполните команду:
sudo bash -c 'cat <Путь до извлеченного расшифрованного ключа> <Путь до сертификата в формате crt> >> /etc/ssl/private/<Имя сертификата с форматом pem>' . Пример команды: sudo bash -c 'cat /home/indeed/Desktop/server.bal.localKEY-descr.key /home/indeed/Desktop/server.bal.local.crt >> /etc/ssl/private/server.bal.local.pem'
Генерация сертификатов с помощью openSSL
- Создайте контейнер для хранения ключей и сертификатов. Для этого выполните команду: sudo mkdir /etc/ssl/indeed-id.local
- Создайте секретный ключ и сохраните в файл (Рекомендуется использовать секретный ключ длиной 2048 бит). Для этого выполните команду: sudo openssl genrsa -out /etc/ssl/indeed-id.local/indeed-id.local.key 2048.
- Создайте запрос на получение сертификата. Для этого выполните команду (В параметре key указывается файл с секретным ключом.): sudo openssl req -new -key /etc/ssl/indeed-id.local/indeed-id.local.key -out /etc/ssl/indeed-id.local/indeed-id.local.csr
- Country Name - Двух буквенный ISO-код страны (RU).
- State or Province Name - Область или край, где официально зарегистрирована организация (Novgorod).
- Locality Name - Город, где официально зарегистрирована организация (Novgorod).
- Organization Name - Точное наименование организации (Indeed-Id).
- Organizational Unit Name - Название отдела или подразделения (Support).
- Common Name - Полное доменное имя для веб-сервера в формате FQDN (Fully Qualifed Domain Name) по которому будет доступен Haproxy (server.bal.local).
- Email Address - Заполнять не требуется.
- A challenge password - Заполнять не требуется.
- An optional company name - Заполнять не требуется.
- Подпишите созданный запрос на сертификат. Для этого выполните команду: sudo openssl x509 -req -days 365 -in /etc/ssl/indeed-id.local/indeed-id.local.csr -signkey /etc/ssl/indeed-id.local/indeed-id.local.key -out /etc/ssl/indeed-id.local/indeed-id.local.crt
- Параметр req - Подписать запрос на сертификацию.
- Параметр days 365 - Создаваемый сертификат будет действителен в течение 365 дней.
- В Параметре in указывается файл с запросом.
- signkey - указывается сгенерированный ранее ключ.
- В параметре out - Путь по которому будет сохранен файл с сертификатом.
- Объедините подписанный запрос и ключ в один файл и сохраните в формате .pem. Для этого выполните команду (Команда cat выводит содержимое 2х файлов на экран, команда tee записывает выведенную информацию в файл): sudo cat /etc/ssl/indeed-id.local/indeed-id.local.crt /etc/ssl/indeed-id.local/indeed-id.local.key | sudo tee /etc/ssl/indeed-id.local/indeed-id.local.pem
Конвертация сертификата в формат pfx и экспорт сертификатов на клиентские машины
- Необходимо выполнить экспорт сертификата, созданного для Haproxy, в доверенные корневые центры сертификации на клиентские машины. Для этого выполните команду: openssl pkcs12 -export -out /etc/ssl/indeed-id.local/indeed-id.local.pfx -inkey /etc/ssl/indeed-id.local/indeed-id.local.key -in /etc/ssl/indeed-id.local/indeed-id.local.crt Укажите пароль для шифрования закрытого ключа.
- Добавьте полученный сертификат формата .pfx в доверенные корневые центры на клиентские машины. Для массового распространения сертификата рекомендуется использовать групповые политики.
Распространение сертификата через GPO.
Если сертификат будет добавлен вручную, то пропустите этот пункт.
- Создайте групповую политику, откройте "Доверенные корневые центры сертификации" Конфигурация компьютера -> Политики -> Конфигурация Windows -> Параметры безопасности -> Политики открытого ключа. Нажмите правую кнопку мыши и выберете "Импорт".
- Выберете загруженный файл сертификата в формате .pfx. Укажите пароль, который был задан при экспорте. Остальные настройки оставьте по умолчанию.
- Выполните gpupdate /force на клиентских машинах, для обновления групповой политики.
Настройка прозрачной аутентификации
Здесь предоставлена инструкция для настройки неограниченного делегирования. Для настройки ограниченного делегирования, воспользуйтесь данной инструкцией.
1. Создайте пользователей, которые будут использоваться в качестве сервисных учетных записей для серверов AM и MC. Учетные записи будут использованы в качестве удостоверения для пула соответствующего сервера. В качестве примера созданы следующие учетные записи: mc_service и am_service. Для каждого сервера Indeed AM требуется отдельная учетная запись.
2. Настройте Service Principal Names для созданный учетных записей. Для этого выполните следующие команды (Для выполнения команд консоль должна быть запущена от имени Администратора):
Команды для учетной записи сервера MC (В данном примере используется учетная запись с именем mc_service):
- setspn /s HTTP/MC12 BAL\mc_service
- setspn /s HTTP/MC12.bal.local BAL\mc_service
- setspn /s HTTP/server.bal.local BAL\mc_service
- setspn /s HTTP/server BAL\mc_service
HTTP/MC12 - Указывается метод и имя машины где установлена консоль MC. HTTP/MC12.bal.local - Указывается метод и полное имя машины где установлена консоль MC. HTTP/server.bal.local - Указывается полное dns имя балансировщика. HTTP/server - Указывается dns имя балансировщика. BAL\mc_service - Указывается имя учетной записи, созданной для сервера MC, в формате DOMAIN\USERNAME.
Команды для учетной записи сервера AM(В данном примере используется учетная запись с именем am_service):
- setspn /s HTTP/AM12 BAL\am_service
- setspn /s HTTP/am12.bal.local BAL\am_service
HTTP/AM12 - Указывается метод и имя машины где установлен AM сервер. HTTP/AM12.bal.local - Указывается метод и полное имя машины где установлен AM сервер. BAL\am_service - Указывается имя учетной записи, созданной для сервера AM, в формате DOMAIN\USERNAME.
3. Включите делегирование для созданных сервисных учетных записей.
4. Выполните следующие настройки на серверах AM и MC.
- Откройте "Диспетчер служб IIS" и выберете пулы приложений.
- Для пула IndeedAM.MC или IndeedAM.Core в панели "Действия" выберете "Дополнительные параметры".
- В окне "Дополнительные параметры" измените параметр "Удостоверение". Для этого нажмите на значок "..." справа.
- В окне "Удостоверение пула приложений" выберете "Особая учетная запись" и нажмите "Установить". Укажите в окне "Задание учетных данных" данные учетной записи для соответствующего сервера (Имя пользователя необходимо указывать в формате DOMAIN\USERNAME). Для сервера MC - mc_service, для сервера AM - am_service.
- После изменений параметров для пула приложений IndeedAM.MC или IndeedAM.Core, выполните перезагрузку пула. Для этого выберите пул IndeedAM.MC или IndeedAM.Core и нажмите "Перезапуск..." в окне "Действия".
- Выберете приложение mc или core, в пункте "Управление" откройте "Редактор конфигурация".
- Откройте конфигурацию system.webServer/security/authentication/windowsAuthentication и измените параметр "useAppPoolCredentials" в "true". Нажмите "Применить".
- Проверьте провайдеры для Windows аутентификиации и их порядок. Для этого откройте приложение mc или core, в пункте "IIS" выберете "Проверка подлинности". Выберете "Проверка подлинности Windows" и нажмите "Поставщики".
- В окне "Поставщики" провайдеры должны располагаться как на скриншоте. Если один или оба провайдера отсутствуют или располагаются в другом порядке, то необходимо изменить/добавить, выбрав в пункте "Доступные поставщики".
- После выполнения всех действий сделайте перезагрузку IIS и выполните команду: klist purge. Команда выполняет сброс билетов Kerberos на компьютере.
Установка HAProxy + Keepalived
Установка HAProxy
Данную установку необходимо произвести на каждом сервере с ОС Linux.
- Запустите терминал. Введите команду для установки HAProxy: sudo apt-get install haproxy
- Запустите Midnight Commander с root правами: sudo mc
- Откройте файл /etc/default/haproxy и добавьте строку ENABLED=1 (Эта настройка позволяет автоматически запускать HAProxy при загрузке системы)
- Отредактируйте файл конфигурации HAProxy: /etc/haproxy/haproxy.cfg используя примеры. Описание настраиваемых параметров:
Примеры
1. Пример конфигурационного файла при использовании SSL Termination (config-haproxy-Term.cfg):
global
#log 127.0.0.1 local0
log /dev/log local0 info
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
daemon
ca-base /etc/ssl/CA
crt-base /etc/ssl/private
tune.ssl.cachesize 100000
tune.ssl.lifetime 60000
tune.ssl.maxrecord 1460
tune.ssl.default-dh-param 2048
tune.maxrewrite 10000
tune.bufsize 20000
defaults
timeout connect 50000
timeout client 50000
timeout server 50000
maxconn 524288
option http-pretend-keepalive
option forwardfor
log global
option httplog
# Модуль статистики. Доступен по http://<IP адрес сервера>:9000/stats Login:admin
listen stats
mode http
bind *:9000
stats enable
stats hide-version
stats refresh 30s
stats realm Haproxy\ Statistics
stats uri /stats
stats auth admin:admin
frontend http_main
log 127.0.0.1 local0
mode http
bind *:443 ssl crt haproxy.bal.local.pem crt-ignore-err all verify optional ca-file eaclient.cer ciphers ALL:@SECLEVEL=1
option forwardfor
http-request redirect scheme https unless { ssl_fc }
http-request add-header X-IndeedAM-ClientCert %{+Q}[ssl_c_der,base64]
default_backend backend_am_servers_ssl
frontend airkey_server
mode http
bind *:81 ssl crt haproxy.bal.local.pem
option forwardfor
http-request redirect scheme https unless { ssl_fc }
default_backend backend_ak_servers_ssl
backend backend_am_servers_ssl #Балансировка AM серверов
mode http
log 127.0.0.1 local0
balance roundrobin
option prefer-last-server
option redispatch
option forwardfor
option httpchk GET /am/core/api/v5/healthcheck/isHealthy
option http-keep-alive
http-check expect status 200
default-server inter 10s downinter 5s fall 5 rise 2
cookie IndeedIdProxy insert indirect nocache secure
server indeed1 indeed1.bal.local:443 check inter 5000ms cookie indeed1 ssl verify required ca-file ca.cer
server indeed2 indeed2.bal.local:443 check inter 5000ms cookie indeed2 ssl verify required ca-file ca.cer
backend backend_ak_servers_ssl #Балансировка Indeed Key серверов
mode http
balance roundrobin
option prefer-last-server
option redispatch
option forwardfor
option httpchk GET /api/HealthCheck
option http-keep-alive
http-check expect status 200
default-server inter 10s downinter 5s fall 5 rise 2
server air1 air1.bal.local:81 check inter 5000ms ssl verify none
server air2 air2.bal.local:81 check inter 5000ms ssl verify none
2. Пример файла, если требуется включить TLSv1.2 в явном виде, а также установлены рекомендованные настройки безопасности, реализуемые HAProxy (config-haproxy-Term-TLS.cfg).
Для корректной работы TLSv1.2, требуется включить поддержку на серверах IIS.
При использовании Windows Server 2022+ возможны проблемы переключения на TLSv1.3, если он в явном виде включен.
Также, в данном случае, необходимо применить приложенный файл реестра из архива TLSEn.zip на всех балансируемых серверах и перезагрузить их.
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/haproxy/ssl
crt-base /etc/haproxy/ssl
#Не использовать tune.* в случае, если этот же балансировщик используется для Patroni
tune.ssl.cachesize 1000000
tune.ssl.lifetime 900
tune.ssl.maxrecord 1419
#если нет сгенерированного файла DH
tune.ssl.default-dh-param 2048
#если есть сгенерированный файл DH
#ssl-dh-param-file /etc/haproxy/ssl/dhparams_4096.pem
tune.maxrewrite 1024
tune.bufsize 16384
# intermediate configuration
ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ssl-default-bind-options prefer-client-ciphers no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
ssl-default-server-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
ssl-default-server-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
ssl-default-server-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
# Модуль статистики. Доступен по http://<IP адрес/DNS сервера>:9291/stats Login:admin
listen stats
mode http
#выбираем нестандартный порт
bind *:9291 ssl crt bal.indeed.local_full.crt crt-ignore-err all
stats enable
# скрываем версию
stats hide-version
stats refresh 30s
stats realm Haproxy\ Statistics
stats uri /stats
stats auth admin:admin
# HSTS (63072000 seconds)
http-response set-header Strict-Transport-Security max-age=63072000
frontend am_server_442_tcp
mode tcp
option tcplog
bind *:442
default_backend backend_servers_442
frontend am_server_ssl_443
mode http
option forwardfor
option http-keep-alive
option http-server-close
timeout client 10s
maxconn 524288
bind *:443 ssl crt bal.indeed.local_full.crt crt-ignore-err all verify optional ca-file eaclient.cer ciphers ALL:@SECLEVEL=1
http-request redirect scheme https unless { ssl_fc }
# HSTS (63072000 seconds)
http-response set-header Strict-Transport-Security max-age=63072000
http-request add-header x-indeedam-clientcert %{+Q}[ssl_c_der,base64]
default_backend backend_am_servers_ssl_443
frontend airkey_server_ssl_81
mode http
option forwardfor
option http-keep-alive
option http-server-close
timeout client 10s
maxconn 524288
bind *:81 ssl crt bal.indeed.local_full.crt crt-ignore-err all
http-request redirect scheme https unless { ssl_fc }
# HSTS (63072000 seconds)
http-response set-header Strict-Transport-Security max-age=63072000
default_backend backend_ak_servers_ssl_81
backend backend_servers_442
mode tcp
balance roundrobin
option httpchk get /am/core/api/v5/healthCheck/isHealthy
http-check expect status 200
default-server inter 5s downinter 2s fall 2 rise 2
server indeed1 indeedam1.indeed.local:442 check check-ssl ca-file ca.cer
server indeed2 indeedam2.indeed.local:442 check check-ssl ca-file ca.cer
backend backend_am_servers_ssl_443
mode http
option forwardfor
option redispatch
option http-keep-alive
option prefer-last-server
option http-server-close
balance roundrobin
timeout connect 10s
timeout server 120s
option httpchk GET /am/core/api/v5/healthCheck/isHealthy
http-check expect status 200
default-server inter 5s downinter 2s fall 2 rise 2
cookie IndeedIdProxy insert indirect nocache httponly secure
server AM1 indeedam1.indeed.local:443 check cookie AM1 ssl verify required ca-file ca.cer sni req.hdr(indeedam1.indeed.local)
server AM2 indeedam2.indeed.local:443 check cookie AM2 ssl verify required ca-file ca.cer sni req.hdr(indeedam2.indeed.local)
backend backend_ak_servers_ssl_81
mode http
option forwardfor
option redispatch
option http-keep-alive
option prefer-last-server
option http-server-close
balance roundrobin
timeout connect 10s
timeout server 120s
option httpchk GET /api/HealthCheck
http-check expect status 200
default-server inter 5s downinter 2s fall 2 rise 2
cookie IndeedIdProxy insert indirect nocache httponly secure
server AK1 ak1.indeed.local:81 check cookie AK1 ssl verify required ca-file ca.cer sni req.hdr(ak1.indeed.local)
server AK2 ak2.indeed.local:81 check cookie AK2 ssl verify required ca-file ca.cer sni req.hdr(ak2.indeed.local)
3. Проверьте конфигурационный файл командой: haproxy -c -f /etc/haproxy/haproxy.cfg. Запустите HAProxy: sudo /etc/init.d/haproxy start. Перезапуск сервиса выполняется командами: sudo systemctl restart haproxy или sudo service haproxy restart.
4. Проверьте работу сервиса перейдя по ссылке: http://<IP адрес сервера Ubuntu c haproxy>:9000/stats Login: admin Pass: admin(для конфигурации из примера, указывается в параметре stats auth, блока listen stats ). Пример работы HAProxy:
Установка Keepalived
Данную установку необходимо произвести на каждом сервере с ОС Linux.
- Запустите терминал. Введите команду для установки Keepalived: sudo apt-get install keepalived
- Запустите Midnight Commander с root правами: sudo mc
- Откройте файл /etc/sysctl.conf и добавьте строки:
net.ipv4.ip_forward=1
net.ipv4.ip_nonlocal_bind=1
- Выполните команду sudo sysctl -p для проверки добавленных изменений
- Создайте файл конфигурации /etc/keepalived/keepalived.conf
- Настройте файл конфигурации согласно примеру ( config-keepalived-base.cfg ):
global_defs {
# Keepalived process identifier
lvs_id haproxy_DH
}
# Script used to check if HAProxy is running
vrrp_script check_haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}
# Virtual interface
# The priority specifies the order in which the assigned interface to take over in a failover
vrrp_instance VI_01 {
state MASTER # MASTER для основного сервера, BACKUP для резевного
interface ens38 # Имя интерфейса можно узнать с помощью команды ifconfig
virtual_router_id 51
priority 101 # Для основного сервера с haproxy 101, для резевного 100
# The virtual ip address shared between the two loadbalancers
virtual_ipaddress {
100.100.1.101 # Виртуальный IP, по которому будет доступен keepalived
}
track_script {
check_haproxy
}
}
- На дополнительном сервере конфигурационный файл будет отличаться параметрами: "state BACKUP" и "priority 100". ( config-keepalived-backup.cfg )
global_defs { # Keepalived process identifier
lvs_id haproxy_DH
}
# Script used to check if HAProxy is running
vrrp_script check_haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}
# Virtual interface
# The priority specifies the order in which the assigned interface to take over in a failover
vrrp_instance VI_01 {
state BACKUP # MASTER для основного сервера, BACKUP для резевного
interface ens38 # Имя интерфейса можно узнать с помощью команды ifconfig
virtual_router_id 51
priority 100 # Для основного сервера с haproxy 101, для резевного 100
# The virtual ip address shared between the two loadbalancers
virtual_ipaddress {
100.100.1.101 # Виртуальный IP, по которому будет доступен keepalived
}
track_script {
check_haproxy
}
}
- Для виртуального адреса из примера: 100.100.1.101 создайте A-запись в DNS (В данной инструкции используется и настраивается для server.bal.local). DNS Manager>Forward Lookup Zones>New Host (A or AAAA). По этому адресу в дальнейшем будут доступны сервера Ubuntu c балансировщиком нагрузок HAProxy.
- Запустите keepalived командой /etc/init.d/keepalived start. Проверить работоспособность сервиса можно командой: sudo service keepalived status, а команой ip addr show ens33 (имя сетевого интерфейса) можно проверить поднялся ли виртуальный IP адрес.
Для перезагрузки службы используйте команду: sudo service keepalived restart
Инструкция по настройки HAProxy методом SSL Passthrough: https://support.indeed-company.ru/Knowledgebase/Article/View/balansirovshik-nagruzok-haproxy-keepalived-ssl-passthrough
|