Оглавление
Для серверов Indeed AM возможно использовать балансировщик нагрузок HAProxy. Для обеспечения отказоустойчивости самого сервера с HAProxy рекомендуется развернуть второй сервер с HAProxy и использовать конфигурацию HAProxy + Keepalived.
Предусловия:
- Установленный и настроен центр сертификации WIndows.
- Развернутая система Indeed AM. С основным и дополнительным сервером.
- Развернутые две машины с ОС Linux, с обновленными компонентами.
- Рекомендуется установить Midnight Commander - для работы с файлами. В качестве текстового редактора рекомендуется использовать mcedit. Для установки выполните: sudo apt-get install mc
Для настройки SSL Passthrough потребуется:
- Установленный и настроенный центр сертификации.
- Сертификаты проверки подлинности веб-сервера Haproxy.
Настройка
Сертификат для HAProxy
- Выполните запрос сертификата проверки подлинности веб-сервера. Выберете параметр "Общее имя" и укажите полное DNS-имя которое будет использоваться для балансировщика нагрузки. В данной инструкции будет использоваться: server.bal.local
- Настройте привязку с полученным сертификатом для каждого сервера Indeed AM.
Настройка прозрачной аутентификации
Здесь предоставлена инструкция для настройки неограниченного делегирования. Для настройки ограниченного делегирования, воспользуйтесь данной инструкцией.
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 Passthrough (config-haproxy-Pass.cfg):
global
log /dev/log local0 #
chroot /var/lib/haproxy
maxconn 4096
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode tcp
option tcplog
retries 3
option redispatch
timeout connect 20000
timeout client 5000
timeout server 5400
timeout check 10
# Модуль статистики. Доступен по http://<IP адрес сервера>:9000/haproxy_stats Login:admin Pass:admin
listen stats
mode http
bind *:9000
stats enable
stats refresh 30s
stats realm Haproxy\ Statistics.
stats uri /haproxy_stats
stats auth admin:admin
frontend am_server
mode tcp
timeout client 120s
bind *:443
default_backend backend_servers
backend backend_servers
mode tcp
balance roundrobin
stick-table type ip size 1m expire 1h
stick on src
timeout connect 120s
timeout server 120s
default-server inter 5s downinter 2s fall 2 rise 2
server indeed1 AM-2-12.bal.local:443 check on-marked-down shutdown-sessions
server indeed2 AM12.bal.local:443 check on-marked-down shutdown-sessions
2. Проверьте конфигурационный файл командой: haproxy -c -f /etc/haproxy/haproxy.cfg. Запустите HAProxy: sudo /etc/init.d/haproxy start. Перезапуск сервиса выполняется командами: sudo systemctl restart haproxy или sudo service haproxy restart.
3. Проверьте работу сервиса перейдя по ссылке: http://<IP адрес сервера Ubuntu c haproxy>:9000/haproxy_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 )
# 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. Проверить работоспособность сервиса можно командой: ip addr show ens33 (имя сетевого интерфейса). Для перезагрузки службы используйте команду: sudo service keepalived restart
Инструкция по настройки HAProxy методом SSL Termination: https://support.indeed-company.ru/Knowledgebase/Article/View/balansirovshik-nagruzok-haproxy--keepalived
|