Termidesk Connect: решение для балансировки нагрузки и обеспечения высокой доступности приложений
09.09.2026
Доступность корпоративных приложений зависит не только от производительности серверов, но и от того, насколько правильно организовано распределение пользовательских запросов. Если весь трафик направляется на один узел, его перегрузка или отказ способны привести к полной недоступности сервиса. Поэтому в инфраструктуре с повышенными требованиями к непрерывности работы применяются балансировщики нагрузки, которые распределяют соединения между несколькими серверами и исключают из обработки узлы, переставшие отвечать заданным критериям.
Termidesk Connect относится к классу решений для управления трафиком и доставки приложений. Согласно актуальной документации версии 1.4, система может выполнять функции локального и глобального балансировщика, шлюза и единой точки доступа к приложениям. Для локального распределения поддерживаются транспортный уровень L4 и прикладной уровень L7, проверки состояния реальных серверов, различные алгоритмы балансировки и механизмы сохранения пользовательских сессий. Для распределенной инфраструктуры предусмотрены средства геобалансировки.
При этом балансировщик следует рассматривать как один из компонентов общей архитектуры высокой доступности. Он способен перенаправить запрос на другой сервер или площадку, но не может самостоятельно обеспечить отказоустойчивость базы данных, хранилища, внешнего сервиса или самого приложения, если эти компоненты не имеют резервирования.
Как работает балансировка нагрузки
Основная задача балансировщика заключается в том, чтобы предоставить пользователям единую точку подключения к приложению и скрыть за ней группу реальных серверов. Пользователь обращается к IP-адресу и порту виртуального сервера Termidesk Connect. Далее система применяет настроенные правила, выбирает сервер балансировки, а тот определяет подходящий backend-узел.
В терминологии документации термидеск коннект сервер, на котором непосредственно работает приложение, называется реальным сервером. Несколько таких узлов объединяются в группу. Для пользователя при этом не имеет значения, какой конкретно сервер обработает его запрос: внешний адрес сервиса остается единым.
Такая архитектура позволяет изменять состав серверной группы без изменения точки подключения для пользователей. Например, при росте нагрузки в группу можно добавить новый сервер, а при проведении технического обслуживания - временно исключить существующий.
Само распределение трафика выполняется по заданному алгоритму. Termidesk Connect учитывает состояние реальных серверов и может выбирать только те узлы, которые соответствуют настроенным критериям работоспособности. Общая последовательность обработки запроса - виртуальный сервер, сервер балансировки, группа реальных серверов и выбранный backend - описана в архитектуре продукта.
Балансировка на уровне L4
L4-балансировка работает на транспортном уровне сетевой модели. При таком подходе решение распределяет TCP- или UDP-трафик, опираясь прежде всего на параметры сетевого соединения.
Этот вариант подходит для приложений, где не требуется анализ содержимого HTTP-запроса. Например, система может распределять обычные TCP-соединения между несколькими серверами, не разбирая URL, cookies или HTTP-заголовки.
Преимуществом L4-подхода является сравнительно небольшое количество операций, которые необходимо выполнить при обработке соединения. Однако возможности принятия решений на основе прикладного содержимого здесь ограничены.
Termidesk Connect поддерживает локальную балансировку на транспортном уровне и работу с Source NAT. В продукте также предусмотрены режимы RAPID-TCP и RAPID-UDP, ориентированные на быстрое распределение сетевого трафика. В документации отдельно отмечается, что RAPID имеет функциональные ограничения: в таком режиме отсутствует возможность изменять данные приложения и использовать SSL-профили.
Поэтому выбор между обычной L4-балансировкой, RAPID и прикладным режимом определяется не только требованиями к производительности, но и тем, какие функции обработки соединения необходимы конкретному сервису.
Балансировка на уровне L7
L7-балансировка работает на прикладном уровне и позволяет учитывать содержимое HTTP- или HTTPS-запросов. Termidesk Connect поддерживает HTTP, HTTPS и WebSocket и работает в режиме Full Proxy.
При использовании L7 система может принимать решения на основании параметров запроса. Например, разные URL или другие признаки могут использоваться для направления запросов в различные группы серверов. Это позволяет разделять нагрузку внутри одного внешнего сервиса.
Такой механизм может применяться в архитектуре, где статический контент обслуживается одной группой серверов, API - другой, а отдельная часть приложения - третьей. Пользователь при этом продолжает обращаться к одному внешнему адресу.
В документации Termidesk Connect предусмотрены правила для виртуальных серверов и возможность использования сценариев обработки. На L7 также доступны механизмы работы с HTTP-заголовками и различные варианты сохранения сессий.
Прикладная балансировка дает больше возможностей по управлению трафиком, однако требует более детального проектирования. Ошибки в правилах маршрутизации способны повлиять сразу на значительную часть пользовательских запросов.
Алгоритмы распределения соединений
Если все backend-серверы одинаковы, запросы можно распределять поочередно. Однако в реальной инфраструктуре узлы могут различаться производительностью и количеством уже установленных соединений. Поэтому Termidesk Connect поддерживает несколько алгоритмов балансировки.
Round Robin последовательно распределяет подключения между реальными серверами. Подход удобен для относительно однородной группы, в которой запросы имеют сопоставимую продолжительность и ресурсоемкость.
Weighted Round Robin дополнительно учитывает вес каждого сервера. Более производительному узлу может быть назначен больший вес, в результате чего он будет получать больше подключений.
Least Connections выбирает сервер с наименьшим количеством активных соединений. Такой подход может быть эффективнее простого Round Robin, если продолжительность сессий сильно различается.
Также предусмотрены Weighted Least Connections, алгоритмы с учетом времени соединения и ответа, Random и Power of Two Random. Последний случайным образом выбирает два сервера и затем направляет соединение на менее загруженный из них. Набор алгоритмов зависит от типа сервера балансировки.
Выбор алгоритма желательно выполнять после анализа реальной нагрузки. Не существует универсального варианта, который одинаково хорошо подходит для любого приложения.
Проверки состояния серверов
Для высокой доступности недостаточно просто распределять запросы между несколькими IP-адресами. Балансировщик должен понимать, способен ли каждый сервер фактически обслужить приложение.
Для этого используются health checks - проверки состояния. В Termidesk Connect поддерживаются ping, TCP, HTTP, HTTPS и сценарии, позволяющие комбинировать проверки логическими выражениями.
Ping подтверждает базовую сетевую доступность узла, но дает ограниченную информацию. Сервер может отвечать на ICMP-запросы, хотя приложение на нем уже не работает.
TCP-проверка позволяет убедиться, что заданный порт принимает подключения. Это более точный показатель, но и он не всегда подтверждает корректность прикладного сервиса.
HTTP- или HTTPS-проверка может обращаться непосредственно к приложению и оценивать его ответ. Для веб-сервисов такой вариант часто дает более реалистичное представление о работоспособности backend.
Если сервер перестает соответствовать заданным условиям, он может быть исключен из нормального распределения новых соединений. После восстановления и успешного прохождения проверок узел снова может участвовать в балансировке.
При настройке health checks важен баланс. Слишком редкая проверка увеличивает время обнаружения сбоя, а слишком агрессивные интервалы могут создавать дополнительную нагрузку и приводить к ложным исключениям при кратковременных задержках.
Перебалансировка при ошибке подключения
Даже сервер, успешно прошедший предыдущую проверку, способен перестать отвечать непосредственно в момент нового соединения. Между двумя последовательными health checks всегда существует определенный временной интервал.
Для подобных ситуаций Termidesk Connect предусматривает механизм перебалансировки. Если соединение с выбранным реальным сервером завершается ошибкой, балансировщик может попытаться выбрать другой узел. Количество таких попыток настраивается.
Этот механизм дополняет проверки состояния, но не заменяет их. Health check позволяет заранее определить проблемный сервер, а перебалансировка реагирует на ошибку уже непосредственно во время подключения.
При проектировании необходимо учитывать и характер приложения. Повторная отправка некоторых операций может быть нежелательна, если запрос не является идемпотентным или неизвестно, успел ли предыдущий сервер выполнить часть операции.
Persistence и сохранение пользовательской сессии
Некоторые приложения способны свободно обслуживать последовательные запросы одного пользователя на разных серверах. Это обычно возможно, если состояние сессии хранится во внешней базе или общем распределенном хранилище.
В других системах сессия сохраняется непосредственно на том backend-сервере, который первым принял пользователя. В этом случае переключение на другой узел может привести к повторной авторизации, потере содержимого временной корзины или нарушению бизнес-процесса.
Для решения этой задачи используется persistence - закрепление пользователя за определенным реальным сервером.
Termidesk Connect поддерживает несколько способов привязки. Среди них указаны IP-адрес источника, cookie, cookie, добавляемый самим балансировщиком, значение HTTP-заголовка и идентификатор SSL-сессии для соответствующих сценариев.
Например, при CookieInsert балансировщик добавляет собственный cookie в HTTP-ответ. Когда пользователь отправляет следующий запрос с этим значением, система определяет ранее выбранный backend и направляет обращение туда же.
Persistence повышает совместимость с приложениями, хранящими состояние локально, но может ухудшать равномерность балансировки. Если большое число длительных пользовательских сессий закрепилось за одним узлом, этот сервер может получать больше нагрузки, чем остальные.
Поэтому при разработке новых распределенных приложений часто предпочтительнее по возможности выносить состояние сессии из конкретного экземпляра приложения.
SSL/TLS и SSL Offload
Большая часть современных веб-приложений использует HTTPS. Следовательно, балансировщику приходится учитывать обработку зашифрованного трафика.
Termidesk Connect поддерживает SSL/TLS-профили, SSL Offload и взаимную аутентификацию mTLS. При SSL Offload TLS-соединение пользователя завершается на балансировщике. После расшифровки трафик может анализироваться и передаваться реальному серверу либо без повторного шифрования, либо через новое защищенное соединение - в зависимости от конфигурации.
Такой подход позволяет централизовать часть операций с сертификатами и снять криптографическую обработку с backend-серверов.
Однако TLS-терминирование меняет модель безопасности. Если после балансировщика трафик передается в открытом виде, соответствующий сетевой сегмент должен рассматриваться как доверенный. Если требуется сквозная защита, на участке между Termidesk Connect и реальными серверами используется повторное TLS-соединение.
Также необходимо заранее продумать хранение приватных ключей, сроки действия сертификатов, их обновление, поддерживаемые версии TLS и наборы шифров.
Сохранение исходного IP-адреса клиента
При работе балансировщика backend-сервер может видеть в качестве источника либо реальный адрес пользователя, либо адрес Termidesk Connect. Это влияет на журналы, правила доступа и расследование инцидентов.
В TCP-балансировке предусмотрена возможность сохранения исходного IP-адреса клиента. Если она включена, запрос приходит на реальный сервер с адресом пользователя. При этом сеть должна обеспечивать корректный обратный маршрут ответа через требуемый контур.
Если исходный адрес не сохраняется, балансировщик выполняет подмену адреса и взаимодействует с backend от собственного имени.
Выбор схемы зависит от архитектуры. Для некоторых приложений знание реального IP пользователя обязательно, например для журналирования и контроля доступа. В других случаях SNAT упрощает маршрутизацию.
Высокая доступность Termidesk Connect
Если все пользователи обращаются через один балансировщик, сам балансировщик может превратиться в единую точку отказа. Поэтому для критичных сервисов необходимо резервировать не только backend-серверы, но и уровень доставки трафика.
Termidesk Connect поддерживает высокодоступную конфигурацию из двух и более узлов. Согласно документации версии 1.4, в один кластер может входить до 255 узлов, однако в конкретный момент пользовательский трафик обрабатывает один активный узел, а остальные находятся в состоянии Standby. Между узлами синхронизируется значительная часть конфигурации, резервируются IP-адреса виртуальных серверов и выполняется переключение трафика при отказе активного узла.
При этом синхронизация не охватывает абсолютно все параметры: часть конфигурации является локальной для конкретного устройства.
Выбор активного узла определяется внутренним механизмом рейтинга. Платформа использует heartbeat-взаимодействие между участниками HA-конфигурации. Также могут контролироваться интерфейсы, IP-адреса, отдельные сервисы и состояние серверов балансировки.
Это важно, поскольку формально работающий узел необязательно способен выполнять свою прикладную функцию. Например, система может быть доступна для административного подключения, но потерять необходимый сетевой интерфейс или один из критичных сервисов.
Что происходит с существующими соединениями при отказе
Высокая доступность балансировщика не означает, что абсолютно любое существующее пользовательское соединение будет бесшовно продолжено на резервном узле.
Документация Termidesk Connect отдельно отмечает сценарии, при которых отключение сервера балансировки приводит к сбросу текущего подключения пользователя.
Поэтому при проектировании важно различать два показателя: восстановление доступности сервиса для новых подключений и сохранение уже установленных сессий. После переключения балансировщика пользователю может потребоваться повторное подключение, даже если новый узел начинает принимать трафик быстро.
Для HTTP-приложений влияние такого события может быть сравнительно небольшим, особенно если пользовательская сессия хранится независимо от соединения. Для длительных TCP-сеансов последствия могут быть заметнее.
Географическая балансировка
Резервирование в пределах одного центра обработки данных защищает от отказа отдельного сервера или балансировщика, но не от полной недоступности площадки.
Для распределенных систем Termidesk Connect предоставляет геобалансировку. В документации упоминаются GSLB и RHI. GSLB использует DNS-подход и позволяет предоставлять пользователю единое доменное имя, за которым находятся сервисы на разных площадках.
Например, организация может иметь центры обработки данных в нескольких городах. В нормальном режиме пользователи направляются к подходящему ЦОД, а при недоступности одной площадки DNS-ответ может указывать на сервис в другой.
В такой архитектуре значение имеет TTL DNS-записей. Клиентские системы и рекурсивные DNS-серверы кэшируют ответы, поэтому переключение не обязательно становится мгновенным для каждого пользователя.
Географическая балансировка также не создает копию приложения автоматически. На каждой целевой площадке должны существовать рабочие экземпляры сервисов, необходимые данные, сетевые зависимости и средства синхронизации.
RHI и маршрутизация
Другой подход к географическому распределению связан с Route Health Injection. В такой схеме доступность сервисов влияет на объявления маршрутов.
В архитектуре Termidesk Connect RHI относится к механизмам геобалансировки. Использование маршрутизации может быть актуально в инфраструктуре, где управление направлением трафика строится на сетевых протоколах, а не только на DNS.
Подобная конфигурация требует участия сетевых специалистов, поскольку отказоустойчивость зависит от маршрутизации, времени сходимости протоколов и правильности анонсов.
Балансировка при плановом обслуживании
Балансировщик полезен не только во время аварии. Несколько backend-серверов позволяют выполнять плановое обслуживание поочередно.
Один узел можно исключить из приема новых соединений, дождаться завершения текущих операций, выполнить обновление и тестирование, а затем вернуть его в группу. После этого аналогичный процесс проводится для следующего сервера.
Такой подход позволяет уменьшать технологические перерывы при обновлении операционной системы или приложения.
Однако возможность обслуживания без простоя определяется архитектурой самого приложения. Если обновление меняет схему базы данных несовместимым образом или требует одновременной остановки всех экземпляров, наличие балансировщика проблему не устранит.
Масштабирование приложений
Балансировка нагрузки является одним из ключевых элементов горизонтального масштабирования.
Вместо постоянного увеличения процессоров и памяти одного сервера организация может запустить несколько одинаковых экземпляров приложения и распределять запросы между ними.
Если объем трафика растет, в группу добавляются новые узлы. Если нагрузка снижается, часть серверов может выводиться из эксплуатации при условии, что оставшаяся мощность достаточна.
При таком подходе необходимо отдельно решать вопросы состояния приложения. Локальные пользовательские файлы, сессии, фоновые задания и кэш не должны приводить к противоречиям между экземплярами.
Балансировщик распределяет соединения, но не обеспечивает синхронизацию прикладных данных.
Балансировщик не заменяет резервирование базы данных
Типичная ошибка при построении высокодоступной системы - резервировать только фронтенд.
Например, организация разворачивает четыре веб-сервера и два узла Termidesk Connect, но все экземпляры приложения используют одну базу данных. С точки зрения доставки HTTP-трафика инфраструктура резервирована, однако отказ СУБД остановит бизнес-сервис.
То же относится к единственному файловому хранилищу, серверу каталогов, сетевому шлюзу или внешнему API.
Поэтому реальная высокая доступность должна анализироваться как цепочка зависимостей: DNS, каналы связи, балансировщики, приложение, база данных, очереди сообщений, хранилища и сторонние сервисы.
Termidesk Connect решает задачи на уровне управления пользовательским трафиком, но не заменяет механизмы репликации и аварийного восстановления других компонентов.
Вопросы безопасности
Поскольку через балансировщик проходит пользовательский трафик, его конфигурация относится к критически важным элементам сетевой инфраструктуры.
Termidesk Connect поддерживает SSL/TLS, mTLS, LDAP/LDAPS, аутентификацию пользователей и разграничение доступа. В архитектурном описании также указаны функции защиты от DoS.
При этом наличие подобных механизмов не отменяет необходимости общей системы защиты. Следует ограничивать административный доступ, контролировать изменение конфигурации, управлять сертификатами, отправлять журналы в централизованные системы и своевременно обновлять программное обеспечение.
Особое внимание требуется при TLS-терминировании: балансировщик получает доступ к расшифрованному прикладному трафику и приватным ключам серверных сертификатов.
Управление и автоматизация
Termidesk Connect предусматривает несколько способов настройки: веб-интерфейс, командную строку, API и NETCONF.
Веб-интерфейс удобен для визуального администрирования, а CLI позволяет выполнять операции непосредственно через командную оболочку. API и NETCONF могут использоваться для интеграции с автоматизированными процессами управления инфраструктурой.
Для крупных сред возможность автоматизации имеет особое значение. Если конфигурация содержит десятки виртуальных серверов и групп backend-узлов, ручное выполнение всех изменений становится источником ошибок.
При этом автоматизация должна включать контроль результата. Некорректное массовое изменение правил балансировки способно одновременно повлиять на множество приложений.
Что проверить перед внедрением
Перед промышленным внедрением необходимо определить типы публикуемых приложений и протоколы. Далее выбирается уровень балансировки, правила health checks, persistence, обработка TLS и схема адресации.
Отдельно проектируется отказоустойчивая конфигурация самого Termidesk Connect. Следует проверить работу переключения Active/Standby и убедиться, что сеть корректно принимает перенос виртуальных адресов.
Для географической схемы тестируют недоступность целого ЦОД, изменение DNS-ответов или маршрутов и фактическую способность резервной площадки принять нагрузку.
Нагрузочное тестирование должно воспроизводить реальные соединения и продолжительность пользовательских сессий. Важно оценивать не только максимальную пропускную способность, но и время ответа, число одновременных подключений и использование ресурсов.
Также следует моделировать отказ backend-сервера, TLS-ошибку, потерю сетевой связности и недоступность активного узла балансировки.
Ограничения и особенности применения
Ни один алгоритм балансировки не компенсирует нехватку суммарной вычислительной мощности. Если все реальные серверы перегружены, перераспределять запросы фактически некуда.
Persistence способен создавать неравномерную нагрузку, поскольку часть пользователей закрепляется за отдельными узлами.
Health checks могут ошибочно считать сервер работоспособным, если проверяют слишком простой признак. Например, открытый TCP-порт еще не означает, что приложение способно выполнить полноценную бизнес-операцию.
GSLB зависит от работы DNS и кэширования записей. Поэтому географическое переключение не всегда одинаково быстро происходит у всех пользователей.
Наконец, HA-кластер Termidesk Connect защищает от отказа самого балансировщика, но не гарантирует сохранение всех существующих соединений и не обеспечивает доступность зависимых систем.
Эти ограничения не делают балансировку менее полезной, но показывают, почему ее необходимо проектировать как часть комплексной архитектуры.
Заключение
Termidesk Connect представляет собой решение для управления прикладным и сетевым трафиком, которое может использоваться для локальной и географической балансировки и повышения доступности приложений. Платформа поддерживает распределение трафика на уровнях L4 и L7, работу с HTTP, HTTPS, WebSocket, TCP и UDP, различные алгоритмы выбора backend-сервера, проверки его состояния и механизмы persistence.
Для защищенных веб-сервисов предусмотрены TLS-профили и SSL Offload, а отказоустойчивость самого балансировщика может обеспечиваться кластером Active/Standby с синхронизацией конфигурации и переключением виртуальных адресов. Для территориально распределенных систем доступны механизмы геобалансировки.
Практическая задача Termidesk Connect состоит в том, чтобы отделить внешнюю точку доступа к приложению от отдельных серверов, на которых оно работает. Это позволяет исключать неисправные узлы из распределения, добавлять дополнительные серверы при росте нагрузки и использовать резервную площадку при соответствующей архитектуре.
Однако высокая доступность определяется всей цепочкой компонентов. Если приложение зависит от единственной базы данных или нерезервированного хранилища, балансировка веб-серверов не устранит эту точку отказа. Аналогично автоматический failover необходимо проверять испытаниями, а не считать гарантированным только на основании наличия резервного узла.
Поэтому Termidesk Connect целесообразно рассматривать как инфраструктурный компонент доставки приложений и управления трафиком. Его эффективность определяется правильным выбором алгоритмов балансировки, проверок состояния, схемы сохранения сессий, TLS-политик, сетевой маршрутизации и общей модели отказоустойчивости информационной системы.