Тонкий клиент Кластера и Сервера 1С

Эта публикация описывает порядок соединения Тонкого клиента 1С с Кластером и Сервером 1С:Предприятие 8.x и содержит некоторые замечания о настройках соединения на стороне сервера.

Сервер 1С

Подключение тонких клиентов к кластеру 1С и серверам кластера выполняется протоколом TCP/IP.

  • Кластер прослушивает порт :1541
  • Сервер прослушивает порт :1560

Разумеется эти порты должны быть открыты на соответствующих хостах.

Для доступа к кластеру и серверу из интернет эти порты следует правильно перенаправить.

Тонкий клиент

Подключение Тонкого клиента к серверу 1С выполняется в два этапа, на первом используются реквизиты подключения указанные в настройке информационной базы клиента, на втором к ним добавляются реквизиты сервера полученные от кластера 1С.

1. Подключение к кластеру 1С

Тонкий клиент подключается к кластеру по имени или адресу указанному в настройке. Подключение выполняется через порт  :1541. Результатом успешного обращения клиента к кластеру является имя сервера для дальнейшего подключения, но внешне это никак не проявляется. Если подключение не выполнено возникает ошибка 'Этот хост неизвестен':

Ошибка server_addr=MyServer descr=11001(0x00002AF9): Этот хост неизвестен. line=1050 file=src\DataExchangeCommon.cpp.
2. Подключение к серверу 1С

Доступ клиента к серверу выполняется по имени в точности такому, как оно было задано в диспетчере кластера. Подключение выполняется через порт :1560. Результатом обращения клиента к серверу является открытие окна авторизации. Если подключение не выполнено то возникает такая же ошибка 'Этот хост неизвестен'.

Особенность подключения через Интернет

Если в диспетчере кластера 1С указаны локальные имена серверов, то описанный выше порядок подключения Тонкого клиента будет работать в локальной сети без замечаний, но при подключении через Интернет возникает особая ситуация.

Классический подход подключения из Интернет состоит в указании вместо локального имени Кластера серверов ip-адреса шлюза (или его полного доменного имени mygate.com), на котором порт 1541 перенаправлен на локальный хост Кластера серверов 1С, а порт 1560 перенаправлен на локальный хост Сервера 1С.Однако подобное подключение тоже приведет к уже описанной выше ошибке  'Ошибка server_addr=MyServer descr=11001 (0x00002AF9): Этот хост неизвестен. line=1050 file=src\DataExchangeCommon.cpp'.

На первых взгляд эта ошибка содержит парадокс, поскольку она сообщает о неизвестном сервере MyServer, в то время как был указан IP. Но парадокса тут нет. Введенный IP указывает именно на кластер серверов, который на первом этапе в ответ на запрос клиента сообщил зарегистрированное в кластере локальное имя сервера 1С (MyServer) для следующей фазы подключения, но подключиться по локальному имени (MyServer) в удаленной сети через интернет не удастся, поскольку это имя не имеет в сети клиента корректного разрешения (имеется ввиду dns-разрешение имени MyServer -> 123.45.67.89).

Простое решение

Простым решением этой проблемы будет дописать строку разрешения для этого доменного имени в файл ..\Windows\System32\Drivers\etc\hosts

Если в этом Кластере существует только один сервер MyServer, и если не возникнет коллизии имени с другими кластерами, т.е. в других кластерах нет другого сервера с таким же именем MyServer,  то это решение сработает.

Правильное решение

Правильным, но сложным решением будет организация иерархии доменных имен и служб DNS, которые позволят использовать полные доменные имена вида cluster.MyFirm.com и server1c.MyFirm.com и для регистрации в кластере, и при разрешении этих имен службами DNS в локальной сети, в интранет компании и Интернет.

Оптимально простое решение

Наиболее оптимальным решением будет настройка VPN канала, который позволит Тонкому клиенту включиться в локальную сеть Кластера и Сервера, в которой их локальные имена корректно разрешаются автоматически без дополнительных настроек разрешения DNS.

Особенности настройки запуска сервера 1С

Как установить и настроит сервер 1С можно узнать из многих источников, например на tavalik.ru, но есть ряд нюансов вызывающих сложные ситуации во время работы. Штатным образом установленный сервер 1С открывает для прослушивания порты 1541 и 1560..1591, но если эти порты уже используются другим процессом, то возникает ошибка. Популярным решением этой проблемы является запуск сервера 1С с нештатными портами, что можно подробно изучить на //its.1c.ru:

Тем не менее, это решение оправдано только в тех случаях, когда штатные порты 1С заняты процессом более важным, чем сервер 1С, что случается крайне редко, а в остальных случаях порт оказывается захвачен при динамическом распределении каким-то случайным процессом или службой.

Резервирование портов IPv4

Для предотвращения динамического распределения портов предназначенных серверу 1С их следует зарезервировать двумя командами:

Если выполнение любой команды вызывает ошибку "Процесс не может получить доступ к файлу, так как этот файл занят другим процессом", то речь идет не о файле, а о порте, который уже занят другим активным процессом. Для выполнения резервирования другой конкурирующий процесс необходимо временно остановить, и чтобы определить этот другой процесс необходимо выполнить команду:

В полученном списке используемых портов необходимо в части списка IPv4 найти строки попадающие в диапазон портов сервера 1С вида TCP 0.0.0.0:<порт> <сервер>:0 LISTENING и в следующей строке найти описание процесса использующего порт, в моем случае это были службы очереди печати и лицензирования сервера терминалов:

В итоге задача была выполнена пакетом:

.

2 thoughts on “Тонкий клиент Кластера и Сервера 1С”

  1. А можно более подробно узнать о правильном варианте? DDNS у сервера задан, порты проброшены, брэндмауер успокоен. Что надо настраивать ещё?

Leave a Reply to Евгения Cancel reply