Балансировка нагрузки в 1С - это распределение работы пользователей между несколькими серверами, чтобы ни один из них не стал узким местом. Делить нагрузку можно на трёх уровнях: между терминальными или веб-серверами, через которые люди подключаются; между рабочими серверами кластера 1С, где выполняется код конфигурации; и между сервером 1С и сервером СУБД, где лежат данные. Внутри кластера балансировка встроена в платформу: новое соединение уходит в наименее загруженный рабочий процесс. Остальные уровни настраиваются отдельно.
Перед тем как добавлять серверы, выясните, какой из уровней упирается в потолок. Второй рабочий сервер не поможет, если тормозит СУБД, а отдельный сервер СУБД не спасёт перегруженный терминальный сервер.
| Уровень | Что делят | Чем делят | Когда нужно |
|---|---|---|---|
| Пользователи | Сеансы людей, которые работают через удалённый рабочий стол или браузер | Несколько терминальных серверов с посредником подключений; несколько веб-серверов с публикацией за балансировщиком | Терминальный сервер упирается в память и процессор раньше, чем сервер 1С |
| Сервер 1С | Соединения с информационными базами, фоновые и регламентные задания | Кластер серверов 1С: встроенная балансировка между рабочими процессами и рабочими серверами | Рабочим процессам не хватает памяти или ядер, фоновые задания мешают пользователям |
| СУБД | Чтение и запись данных | Отдельный сервер СУБД; распределения одной базы по нескольким серверам СУБД 1С не поддерживает | Сервер 1С и СУБД дерутся за память и диски на одной машине |
В файловом режиме ни один из этих уровней не работает: база - это файл на диске, и каждый пользователь читает его сам. Балансировка в 1С начинается с клиент-серверного варианта.
В небольших компаниях 1С чаще всего работает через терминальный сервер: люди подключаются по RDP и запускают клиент там. Тогда первым в потолок упирается именно терминальный сервер - каждый сеанс держит свой экземпляр клиента 1С, браузер и почту.
Нагрузку на этом уровне делят, добавляя терминальные серверы. В Windows Server их объединяют в коллекцию служб удалённых рабочих столов, а посредник подключений (RD Connection Broker) распределяет новые сеансы между серверами и возвращает пользователя на тот сервер, где у него остался открытый сеанс. Сколько пользователей выдерживает один терминальный сервер под 1С и как его собрать, мы разбирали в статье о том, как подобрать конфигурацию терминального сервера для 1С.
Если пользователи работают через веб-клиент или тонкий клиент по HTTP, роль терминального сервера играет веб-сервер с публикацией базы (Apache или IIS с модулем расширения 1С). Несколько таких веб-серверов ставят за балансировщиком - nginx, HAProxy или аппаратным. Привязку клиента к одному веб-серверу на время сеанса обычно включают, чтобы запросы одного пользователя не прыгали между серверами. Как устроена сама публикация, рассказываем в статье про модуль расширения веб-сервера 1С.
Балансировщик ставят перед веб-серверами, но не перед сервером 1С. Толстый и тонкий клиенты подключаются к кластеру по собственному протоколу 1С, и распределением этих соединений кластер занимается сам.
Когда пользователь открывает базу, клиент обращается к центральному серверу кластера. Тот смотрит статистику загруженности рабочих процессов и отправляет соединение в процесс с наибольшей доступной производительностью. Процесс может работать как на центральном сервере, так и на любом рабочем сервере кластера. Дальше этот процесс обслуживает соединение до конца сеанса.
Балансировка в кластере 1С происходит в момент подключения, а не во время работы. Уже открытые сеансы на новый сервер не переезжают: если добавить второй рабочий сервер посреди дня, нагрузку он начнёт забирать по мере того, как пользователи будут переподключаться.
Чтобы разделить нагрузку между машинами, в кластер добавляют рабочие серверы. Типовая схема для компании на несколько десятков пользователей - два сервера: первый принимает пользователей, второй выполняет фоновые и регламентные задания (обмены, закрытие месяца, пересчёт итогов). Развести их можно требованиями назначения функциональности: в них прямо указывается, какой сервер обслуживает клиентские соединения, а какой - фоновые задания.
У кластера есть и общий режим распределения нагрузки с двумя значениями: приоритет по производительности (быстрее, но с большим расходом памяти) и приоритет по памяти (экономнее, но медленнее). Сколько баз и соединений держит один рабочий процесс, где ставить лимиты памяти и почему rphost съедает всю оперативку, - подробно в статье про рабочие процессы 1С и распределение нагрузки в кластере. Что такое кластер серверов 1С и из чего он состоит, - в обзоре кластера серверов 1С.
Распределить одну информационную базу 1С между несколькими серверами СУБД нельзя: база живёт в одной СУБД на одном сервере. Зато саму СУБД можно вынести на отдельную машину, чтобы она не делила ресурсы с рабочими процессами 1С.
Для небольшой нагрузки один сервер с 1С и СУБД обычно работает не хуже, а иногда и быстрее двух: между процессами нет сетевых задержек, и каждый вызов к базе обходится дешевле. Разносить их нужно, когда на общей машине начинается борьба за ресурсы: СУБД хочет держать в памяти как можно больше данных, рабочие процессы 1С тоже растут, и обоим не хватает дисковой подсистемы. Признаки - высокая очередь к дискам, постоянный своп, просадки у всех пользователей одновременно в часы пиков.
Если разносите, соединяйте серверы быстрой сетью с минимальной задержкой: в одной стойке и через один коммутатор, а не через полофиса. 1С делает к СУБД много мелких запросов, и задержка сети умножается на их число.
Перед планированием балансировки проверьте, какая у вас лицензия на сервер 1С. На лицензии ПРОФ параметры распределения нагрузки в кластере остаются в значениях по умолчанию: менять режим распределения, количество баз и соединений на процесс, лимиты памяти и требования назначения функциональности можно только на КОРП. Кроме того, ПРОФ ограничивает сервер 12 ядрами процессора и 500 одновременными сеансами с информационной базой.
Поэтому схема «второй сервер под фоновые задания» на ПРОФ не собирается: развести роли по серверам там нечем. Второй рабочий сервер на ПРОФ поставить можно, но делить нагрузку он будет только автоматически, по правилам кластера. Поэтому на ПРОФ её чаще распределяют на уровне терминальных серверов и выносом СУБД. Подробнее о разнице лицензий - в статье о том, зачем нужна лицензия на сервер 1С.
Распределение нагрузки ускоряет систему, когда серверу не хватает ресурсов на всех пользователей сразу. Ускорить отдельную операцию оно не может.
Начинайте с замера: что загружено в часы пиков - процессор и память терминального сервера, рабочие процессы 1С или диски и память СУБД. От ответа зависит, какой из трёх уровней расширять.
Оба сервера включают в один кластер. Центральный сервер направляет каждое новое соединение в рабочий процесс с наибольшей доступной производительностью, на любом из двух серверов. С лицензией КОРП роли можно развести вручную: пользователей на один сервер, фоновые задания на другой.
Зависит от того, как они подключаются. Через удалённый рабочий стол - несколько терминальных серверов и посредник подключений. Через веб-клиент - несколько веб-серверов с публикацией за балансировщиком. Через толстый или тонкий клиент напрямую - кластер 1С распределит их сам.
Это свойство кластера с двумя значениями: приоритет по производительности и приоритет по памяти. Первое быстрее, второе экономит оперативную память. Менять его можно только на лицензии КОРП.
Перед веб-серверами с публикацией - да, это обычная схема. Перед самим кластером - нет: клиенты подключаются к нему по протоколу 1С, и соединения кластер распределяет сам.
Сервер 1С перестал справляться в часы пиков?
Поможем понять, где узкое место - в терминальном сервере, рабочих процессах или СУБД, - и подберём железо под тот уровень, который действительно нужно расширять: второй рабочий сервер, отдельную машину под СУБД или терминальный сервер с запасом памяти. Соберём и протестируем конфигурацию перед отгрузкой. Прикиньте стоимость сервера для 1С в каталоге или напишите нам: +7 (800) 551-80-12, info@ittelo.ru. Серверами мы занимаемся больше 11 лет и за это время накопили серьёзную экспертизу. Даём гарантию до 5 лет, берём сервер на постпродажное обслуживание и не пропадаем после отгрузки.