1С в терминале: филиалы работают через ADSL, принтеры продолжают воевать
Переносим 1С для филиалов в терминальную среду на Windows Terminal Server: скорость через ADSL выросла, нагрузка на канал упала. Настройка сессий и классические проблемы с принтерами в терминале.
терминальная публикация приложений массово приходит в корпоративную практику
Задача пришла стандартная: у клиента головной офис в городе и три филиала, до каждого - ADSL. В головном офисе стоит 1С с центральной базой, в филиалах нужно работать в той же базе. До этого пробовали подключаться по сети напрямую - файловая 1С через тонкий канал это нечто особенное: на проводке постоянно гонялся весь файл индексов туда-обратно, при любом действии пользователя. Интерфейс открывался за минуту. Провод гудел. Бухгалтер из филиала звонила каждые полчаса.
Решение лежало на поверхности: поднять терминальный сервер в головном офисе и пустить туда филиалы. В терминале 1С выполняется на самом сервере, по каналу гуляют только нажатия клавиш и картинки экрана. Нагрузка на ADSL падает в разы - это не теория, это физика протокола.
Что поставили. Windows 2000 Server с Terminal Services. Citrix MetaFrame поверх - клиент хотел публикацию отдельных приложений, а не полноценный рабочий стол целиком, и Citrix это умеет аккуратнее, чем голый RDP. У каждого пользователя из филиала в браузере или через тонкий клиент открывается ровно одна программа - 1С. Всё остальное ему не видно и не мешает.
Настройка сессий потребовала внимания к нескольким вещам.
- Количество одновременных сессий надо считать честно: на каждого активного пользователя уходит свой кусок RAM, и если не выставить лимиты, сервер спокойно набирает висящие сессии от людей, которые зашли утром, ушли обедать и забыли нажать выход. Поставили тайм-аут отключения простаивающей сессии - 30 минут, и тайм-аут сброса отключённой - два часа. После этого сервер перестал пухнуть к вечеру.
- Профили и права. Каждый пользователь получил собственный профиль на сервере, папку TEMP на локальном диске сервера, права только на свою папку и на 1С. Общий рабочий стол убрали - незачем. Административные права у них, разумеется, нет.
- Версия 1С. Установили одну копию 1С на сервер, все пользователи работают с ней. Это принципиально отличается от сценария «у каждого своя установка 1С на своём компьютере». Обновить конфигурацию теперь нужно один раз, не в каждом филиале отдельно.
По каналу стало тихо. Там, где раньше ADSL-линия стонала от постоянной пересылки файлов базы, теперь скромный RDP/ICA-трафик. Пользователь в филиале открывает накладную - и видит её мгновенно, потому что 1С на сервере давно её уже открыла, а по воздуху пришёл только снимок экрана.
Теперь про принтеры. Это отдельная история. В терминальной среде печать - хронически больное место. Пользователь сидит на сервере, но распечатать хочет на принтере, который стоит рядом с ним физически. Terminal Services умеет пробрасывать клиентские принтеры в сессию - это называется printer redirection. Звучит просто.
На практике выходит вот что. Сервер должен знать драйвер для каждого принтера каждого клиента. В филиалах принтеры разные: у кого HP LaserJet 1200, у кого Lexmark, у кого совсем экзотика. Terminal Services пытается автоматически установить драйвер - не всегда получается, иногда ставит «похожий» и принтер работает криво: шрифты съезжают, служебные строки не там, иногда вообще ничего. У одной бухгалтера акты выходили с кодировкой будто из 1990-х.
Решили это двумя способами в зависимости от ситуации:
- Для принтеров, у которых есть нормальный Windows-драйвер - установили драйверы централизованно на терминальном сервере заранее, руками, до первого подключения пользователей. Принтер проброшен - сервер узнал его - всё работает.
- Для одного совсем странного аппарата поставили на клиентской машине в филиале PDF-драйвер, настроили его как принтер по умолчанию в сессии, а локально поставили что-то вроде PDF-принт-сервера. Не изящно, но работает.
Отдельно: в Citrix с этим чуть проще, потому что Citrix Universal Printer Driver умеет печатать через практически любой локальный принтер без установки родного драйвера на сервер. Не идеально, но стабильнее голого RDP-пробрасывания.
Что получилось в итоге. Три филиала, каждый работает в 1С как будто сидит в головном офисе. Никакой гонки файлов по каналу. Обновление базы и конфигурации - один раз в одном месте. Сервер стоит, сессии крутятся, бухгалтер из дальнего филиала перестала звонить с жалобами на зависания.
Принтеры - вопрос открытый. Настроить можно почти всё, но каждый новый принтер в новом филиале - это отдельная итерация. Мы это честно проговариваем с заказчиком при передаче на постоянное сопровождение: печать в терминальной среде это не «один раз настроил и забыл», это небольшой операционный хвост, который будет тянуться при каждой замене оборудования у пользователей.
- 1С на файловой шаре, и почему она тормозит к пятнице · 11 февраля 2003
- ADSL вместо выделенки: быстрее, дешевле и первое падение в пять утра · 14 марта 2003