Назад
DevOps
PostgreSQL+1C на Ubuntu Linux RemoteApp Tool — пошаговая настройка RDP-доступа к приложениям RouterOS на Hyper-V Автозапуск 1С при подключении к ТС на Windows Server 2016 Автоматизация установки 1С Автоматическое создание резервной копии настроек Mikrotik с отправкой на почту и FTP Авторизация баз 1С в SQL через локальную учетную запись Базовая настройка Unifi контроллера Базовая настройка Windows Server 2019 Базовая настройка маршрутизаторов MikroTik на примере RB2011 Восстановление базы PostgreSQL 1С из резервной копии Восстановление базы данных 1С на SQL сервере Восстановление бэкапа в новый кластер PostgreSQL Восстановление кластера MySQL Восстановление почтовой базы данных Exchange Server 2013/2016 Восстановление системы Windows Server 2019 Восстановление файла данных Outlook (.pst) Делегирование полномочий пользователю конфигурации узла сеансов удаленных рабочих столов Windows Server 2012-2019 Диагностика компонентов Exchange 2016 Добавление второго контроллера домена в существующий домен Добавление диска LVM Добавление нового сотрудника в систему Sigur Запрет запуска программ Windows Изменение максимального размера вложений в Exchange и Outlook Изменение пароля на удаленном рабочем столе Инструкция добавления нового сотрудника в Biosmart Studio 5 + просмотр отчетов Интеграция облачной инфраструктуры с локальной ИТ-инфраструктурой Использование DNS challenge для выпуска SSL-сертификатов Lets Encrypt Как обновить платформу 1С на сервере Как опубликовать базы 1С на веб-сервере Windows и Linux Как организовать ИТ-поддержку клиентов Как организовать удаленную работу с клиент-банком Как передать файл с клиента на сервер 1С 8.3 Как перенести базу 1С в облако Как подключить COM-объект Excel в 1C Как подключиться удаленно к 1С Как устранить ошибку подключения по RDP Win 7 -> Win Server Миграция Active Directory с Windows Server 2016 на Windows Server 2022 Нагрузочное тестирование 1С:ERP+тест-центр Нагрузочное тестирование сервера на Linux Настройка AlwaysOn MS SQL Настройка Juniper Virtual Chassis QFX5100 Настройка Point In Time Recovery в PostgreSQL PRO 16 на Ubuntu 24.04 Настройка PostgreSQL на Centos Настройка PostgreSQL на Windows Настройка QoS для ISCSi Настройка RemoteApp на Windows Server 2019 Настройка SMS-оповещения в системе СКУД SIGUR Настройка SNMP на MikroTik Настройка VLAN в Proxmox VE Настройка VPN-сервера на Windows Server 2016 Настройка ZFS в Proxmox VE Настройка веб-публикации 1С, подключение кассового оборудования Настройка внутренней фильтрации содержимого в Exchange Server 2016 Настройка графика доступности в Zabbix: мониторинг ping-ответов Настройка групповой политики на Windows Server 2016 Настройка групповых политик Windows Server 2019 Настройка зеркалирования MS SQL 2019 Настройка кластера Asterisk с использованием VRRP Настройка кластера HAproxy при помощи VRRP Настройка коммутатора D-link SmartPro серии DES/DGS Настройка контроллера домена Windows Server 2019 Настройка подключения к удаленному рабочему столу на iOS Настройка резервирования интернет-канала (Mikrotik) Настройка репликации типа Master-Master на MySQL (MariaDB) Настройка сервера лицензирования Windows Server 2019 Настройка сервера лицензирования СЛК Настройка сетей Hyper-V Настройка сети в Proxmox 7 Настройка терминального сервера Windows 2012 R2 Настройка терминального сервера Windows Server 2016 Настройка терминального сервера на базе Windows Server 2022 Настройка файлового сервера Windows Server 2019 Настройка формата и оптимизация журнала регистрации 1С Настройка шифрованной телефонии на базе Asterisk Настройка экстренного отключения удаленного сервера Windows Некорректно отображается изображение при подключении к удалённому серверу через RDP Обновление оборудования Juniper Обновление тонкого клиента 1С при веб-публикации Ограничение доступа к веб-серверу по странам Отказоустойчивый FTP через HAproxy Отключение обновлений Windows Server через групповые политики Очистка кэша 1С Ошибка 1069 на сервере 1С Ошибка http при обращении к серверу 1C Ошибка «Не удается войти в учетную запись» в ОС Windows Ошибка в 1С при получении характеристик принтера Ошибка при обновлении SQL Server — MSSQLSERVER.INACTIVE Перенос TempDB на отдельный диск Перенос баз 1С Перенос журнала регистраций 1С (srvinfo) на другой диск Перенос ключей КриптоПро Перенос писем с помощью .pst в Microsoft Exchange Перенос почтовых ящиков Exchange на другой сервер Перенос файлов с помощью Robocopy Подключение iSCSI в Proxmox VE Подключение аппаратного USB-ключа лицензии 1С на удаленный сервер Подключение к облачному серверу 1C по OpenVPN на ipad / iphone Подключение к удаленному рабочему столу Windows через MacOS Подключение модуля расширения веб-сервера в 1С Подключение по RDP с Linux систем Подключение сетевого принтера на Windows 10 Поиск наиболее нагруженных баз MSSQL при работе с 1С Почтовый переезд средствами IMAP Проброс диска в Proxmox 7 Проброс портов на MikroTik Проверка актуальности учетных данных в документации ИТ-объекта Разворачиваем отказоустойчивый кластер MS SQL Server 2012 на Windows Server 2016 Разделение трафика TCP и HTTP в HAProxy Резервное копирование 1С на MSSQL Резервное копирование PostgreSQL Резервное копирование на Proxmox VE Решение ошибки Proxmox VE — error 0 occurred while receiving the document Решение проблемы: агент сервера 1С:Предприятие останавливается Решение проблемы: недостаточно памяти на сервере 1С Решение проблемы: ошибка 500 на веб-сервере IIS 1С Сброс пароля в Windows Сеанс удаленного рабочего стола или удаленного приложения не прекращается из-за splwow64.exe процесса Сервер хранилища конфигураций 1C на Linux Сжатие базы данных MySQL и MariaDB Смена истекшего пароля с помощью Windows RDS Смена рабочего места в базах 1С Создание mesh сети Wi-Fi на базе Ubiquiti Unifi 6 Создание и отзыв сертификатов OpenVPN Создание отказоустойчивого кластера 1С Создание резервных копий SQL Postgres на S3-хранилище Создание резервных копий БД SQL на серверы объектного хранилища S3 Создание шифрованых дисков с помощью PGP Сохранение конфигурации Juniper Схема действий в форс-мажорных ситуациях (IT) Тюнинг сервера для 1С: процессор Удаление агента сервера 1С Удаление базы 1С из кластера Удаление пользователя из 1С Удаление сеанса пользователя в 1С Удаление терминальных лицензий (RDS CAL) Установка 1С:Предприятие на Mac OS Установка Astra Linux Common Edition на VirtualBox Установка Bareos Установка COM-компонента в 1С Установка Exchange Server 2016 Установка Exchange Server 2019 Установка KVM на ubuntu Установка MariaDB на CentOS 7 Установка Proxmox 7 на Debian 11 Установка Proxmox Mail Gateway 7 Установка RabbitMQ (Windows) Установка Ubuntu на Proxmox 7 Установка Windows Server 2019 на Proxmox Установка Windows Server 2022 на виртуальную машину Hyper-V Установка драйвера принтера на терминальный сервер Windows Server 2019 Установка и базовая настройка MS SQL 2019 для 1С Установка и базовая настройка OpenMediaVault Установка и настройка DHCP на Windows Server 2019 Установка и настройка TrueNAS CORE Установка и настройка Zabbix, настройка агента и уведомлений Установка и настройка Zimbra на CentOS 7 Установка и настройка контроллера домена Active Directory Domain Установка и настройка СУБД Postgres Pro для 1С Установка квоты каталогов в Windows Servers Установка нескольких версий сервера 1С Установка сервера 1С и MS SQL с настройкой для оптимизации 1С Установка сервера 1С на Ubuntu + PostgreSQL Установка сервера 1С:Предприятие в связке с CentOS 7 и PostgreSQL Установка терминального сервера Windows Server 2019 Устранение ошибки 0x800700DF в WebDAV Устранение ошибки «удаленный хост разорвал существующее подключение 1С» Устранение ошибки проверки подлинности RDP Устранение ошибки службы Active Directory сейчас недоступны (не печатает принтер на Windows 10) Устранение проблемы несоответствия версий 1С Фильтрация писем в Exchange (Outlook web) Что делать, если сервер 1С:Предприятие не обнаружен

Настройка кластера HAproxy при помощи VRRP

Для создания защищенного подключения извне по протоколу RDP одним из самым популярных способов является настройка роли шлюза терминалов RDP. Однако, для данной роли, в отличие от других компонентов терминальной фермы, Microsoft не предлагает своих инструментов для создания отказоустойчивости внешней точки подключения пользователей. Одним из надежных решений данной проблемы является использование сторонних балансировщиков нагрузки, которые позволяют распределять трафик между несколькими серверами, что позволяет обеспечить повышенную отказоустойчивость, увеличить доступность сервиса и обеспечить легкую масштабируемость структуры.

Покажем, как можно настроить масштабируемый кластер из веб-балансировщиков HAproxy с плавающим IP-адресом при помощи протокола VRRP.

В нашем примере, мы будем использовать операционную систему Debian 11. Для других дистрибутивов команды могут немного отличаться. Опустим первоначальную установку, настройку и обновление Debian, перейдем сразу к установке HAproxy.

Для нашего тестового стенда будем использовать следующую сетевую конфигурацию:

  • 10.10.0.1 – плавающий адрес для работы протокола VRRP, проброс 443 порта извне следует выполнять именно на этот адрес для корректной работы кластера
  • 10.10.0.10 – 10.10.0.12 – адреса бэкенд-серверов с настроенными ролями шлюза терминалов RDP, между которыми будет происходить балансировка подключений

По умолчанию HAproxy включен в стандартный репозиторий Debian 11. Выполните следующую команду в терминале:

sudo apt -y install haproxy

Затем добавим службу HAproxy в автозагрузку и запустим:

sudo systemctl enable haproxy
sudo systemctl start haproxy

Настраиваем основной конфигурационный файл:

nano /etc/haproxy/haproxy.cfg

Приведем конфиг к следующему виду, заменяя необходимые блоки под свою конфигурацию по примеру:

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/ssl/certs
    crt-base /etc/ssl/private

    # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
    	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 ssl-min-ver TLSv1.2 no-tls-tickets
    ssl-default-bind-options no-sslv3
    	ssl-server-verify none

defaults
    log    global
    mode    http
    option    httplog
    option    dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    
    stats enable
    stats uri /stats
    stats realm Haproxy Statistics
    stats auth stat:1234

    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

frontend gateway_rdp-frontend
    bind *:443 ssl crt /etc/haproxy/ssl/your-site.ru.pem
    mode http
    capture request header Host len 32
    log global
    option httplog
    timeout client 300s
    maxconn 1000
    default_backend gateway_rdp-backend

backend gateway_rdp-backend
    balance source
    mode http
    log global
    option forwardfor
    http-request add-header X-CLIENT-IP %[src]

    option httpchk GET /
    cookie RDPWEB insert nocache
    default-server inter 3s rise 2  fall 3
    server server-ts1 10.10.0.10:443 maxconn 1000 weight 10 ssl check cookie server-ts1
    server server-ts2 10.10.0.11:443 maxconn 1000 weight 10 ssl check cookie server-ts2
    server server-ts2 10.10.0.12:443 maxconn 1000 weight 10 ssl check cookie server-ts3

Выполняем перезапуск службы HAproxy:

sudo systemctl restart haproxy

Проверяем, что HAproxy запустился корректно и нет ошибок в журналах. Проверить вывод статистики и состояния можно в веб-интерфейсе по адресу: https://haproxy_IP:5443/stats

На этом базовая настройка первого узла закончена. Проводим аналогичные действия по настройке на всех узлах Haproxy, входящих в кластер, конфигурация везде будет идентична.

После завершения конфигурирования Haproxy, рассмотрим процедуру установки keepalived и настройки кластера Master – Slave с плавающим IP-адресом при помощи протокола VRRP. Для работы данного протокола сетевой экран должен пропускать трафик на широковещательный адрес 224.0.0.18. Добавим соответствующее правило:

sudo iptables -I INPUT -p vrrp -d 224.0.0.18 -j ACCEPT

Затем проводим установку keepalived при помощи команды:

sudo apt install keepalived

Создаем конфигурационный файл на сервере с Haproxy, который выберем основным:

nano /etc/keepalived/keepalived.conf

Добавляем следующие строки:

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 eth0   # Имя интерфейса можно узнать с помощью команды ifconfig
virtual_router_id 183
priority 101 # Для основного сервера с haproxy 101, для резервного 100
# The virtual ip address shared between the two loadbalancers
virtual_ipaddress {
10.10.0.1 # Виртуальный IP, по которому будет доступен keepalived
}
track_script {
check_haproxy
}
}

Данная конфигурация будет регулярно выполнять проверку состояния процесса HAproxy на мастере и в случае его недоступности, либо при отказе всего сервера производить переключение VIP адреса на резервный узел кластера keepalived.

Разрешим автозапуск службы и запустим:

sudo systemctl enable keepalived
sudo systemctl start keepalived

Проверим состояние:

systemctl status keepalived
ip a

Если все настроено корректно, то мы должны увидеть дополнительный адрес на сетевом интерфейсе. В нашем примере, это 10.10.0.1.

Проводим аналогичные настройки конфигурации на остальных узлах кластера. Отличаться будет только статус и приоритет.

state BACKUP
…
priority 100

После окончания настройки на всех узлах, можно провести тестирование работы VRRP путем отключения сети, либо процесса Haproxy на Master сервере. VIP адрес должен перейти на резервный сервер.

На этом базовая настройка конфигурации кластера отказоустойчивого балансировщика для роли шлюза терминалов RDP можно считать законченной.

Настройку и обслуживание серверов терминалов мы можем взять на себя. Оставьте заявку или напишите в чат!


Дата публикации: 31 мая 2023
Не нашли ответа на свой вопрос?

Смотрите также

Обсуждение материала

Содержание

Заказать звонок

Оставьте свои данные для того, чтобы специалист с вами связался.

*нажимая на кнопку, Вы даете согласие на обработку персональных данных
Быстрое внедрение включает:
На сервере установлено следующее ПО (доступно при подключении по протоколу RDP):
Также настроено:
Перед внедрением клиент предоставляет информацию о пользователях (логины и пароли). После завершения работ, клиенту высылается инструкция и ярлык для подключения.
Индивидуальное внедрение по ТЗ клиента обсуждается отдельно.