Серверы кластера
Общая информация
Для того чтобы начать работу с кластером серверов, необходимо подключиться к серверу администрирования центрального сервера кластера. Для этого следует использовать конструктор типа АдминистрированиеСервераV8
. Для подключения необходимо знать адрес сервера администрирования требуемого кластера серверов (в символьной или точечной нотации) и IP-порт, который указан при запуске сервера администрирования системы «1С:Предприятие» (подробнее о запуске сервера администрирования написано здесь). Если для кластера серверов создан администратор сервера (читать здесь), то после подключения к центральному серверу требуется выполнить аутентификацию администратора сервера с помощью метода ВыполнитьАутентификацию()
. После выполнения аутентификации можно выполнять действия по администрированию кластера серверов. Для запуска сервера администрирования можно использовать сценарий, приведенный далее.
Система «1С:Исполнитель» предоставляет следующие возможности:
- Получить список администраторов кластера серверов с помощью метода
ПолучитьАдминистраторов()
. Также предоставляется возможность создать нового администратора с помощью методаСоздатьАдминистратора()
. - Получить список кластеров, которые зарегистрированы в данном центральном сервере (массив экземпляров типа
КластерV8
). Это можно осуществить методомПолучитьКластеры()
. Создание нового кластера возможно с помощью методаСоздатьКластер()
. Если известен идентификатор кластера серверов, то с помощью методаПолучитьКластер()
можно получить экземпляр, предназначенный для управления конкретным кластером серверов.
Запуск сервера администрирования
конст ПутиV8 = {"eq": "c:\\Program Files\\1Cv8\\", "ne": "c:\\Program Files (x86)\\1Cv8\\"}
метод ЗапускСервераАдминистрирования(Версия: Строка, Сервер: Строка, Порт: Число, Архитектура: Число)
пер АрхитектураОС: Число = ТекущаяАрхитектура()
пер АрхитектураV8: Число
пер ПутьV8: Строка
если Версия.КоличествоВхождений(".") != 3
выбросить новый ИсключениеНедопустимыйАргумент("Номер версии указан некорректно")
;
выбор
когда Архитектура == АрхитектураОС
АрхитектураV8 = АрхитектураОС
ПутьV8 = ПутиV8["eq"]
когда АрхитектураОС == 64
АрхитектураV8 = Архитектура
ПутьV8 = ПутиV8["ne"]
иначе
выбросить новый ИсключениеНедопустимоеСостояние("64-разрядная платформа V8 не может быть установлена на 32-разрядной ОС")
;
пер Образ = новый Файл("%ПутьV8\\%Версия\\bin\\ras.exe")
если не Образ.Существует()
выбросить новый ИсключениеНедопустимоеСостояние("Сервер администрирования кластера не обнаружен в каталоге: " + Образ.Каталог)
;
пер Процесс = новый ПроцессОс(Образ.Путь, ["cluster", "--port=" + Порт, Сервер])
Процесс.Запустить(СредаИсполнения.ПолучитьПеременную("temp"))
если не Процесс.Живой()
выбросить новый ИсключениеНедопустимоеСостояние("Что-то пошло не так. Процесс RAS - не живой :(")
иначе
пер Результат = "Запуск RAS выполнен успешно"
;
;
метод ТекущаяАрхитектура(): Число
пер Архитектура = СредаИсполнения.ПолучитьПеременную("PROCESSOR_ARCHITECTURE")
пер Результат = 0
выбор Архитектура.ВВерхнийРегистр()
когда == "AMD64"
Результат = 64
когда == "X86"
Результат = 32
иначе
Результат = 32
;
возврат Результат
;
Пример получения списка кластеров
метод ПолучениеСпискаКластеров()
пер Сервер = новый АдминистрированиеСервераV8("localhost", 1545)
пер СписокКластеров = Сервер.ПолучитьКластеры()
для ТекущийКластер из СписокКластеров
пер ИмяКластера = ТекущийКластер.Имя
;
;
Рабочие серверы
Как можно узнать в документации, кластер серверов состоит из одного или нескольких рабочих серверов. Система «1С:Исполнитель» предоставляет возможность получить доступ к текущему составу рабочих серверов кластера, а также создать новый рабочий сервер. Для описания рабочего сервера предназначен тип РабочийСерверV8
. Описание параметров рабочего сервера приведено в документации к системе «1С:Предприятие».
Для того чтобы получить доступ к рабочему серверу, можно воспользоваться следующими способами:
- Получить список всех текущих рабочих серверов. Метод
КластерV8.ПолучитьРабочиеСерверы()
вернет массив экземпляров типаРабочийСерверV8
. Из полученного массива можно выбрать описание требуемого рабочего сервера. - Получить описание конкретного рабочего сервера с помощью метода
КластерV8.ПолучитьРабочийСервер()
. В этом случае нужно предварительно знать идентификатор рабочего сервера типаУуид
. - Создать новый рабочий сервер с помощью метода
КластерV8.СоздатьРабочийСервер()
.
Для систем, находящихся в промышленной эксплуатации, не рекомендуется размещать несколько рабочих серверов на одном физическом компьютере.
Если в свойства рабочего сервера вносились изменения (или был создан новый рабочий сервер), то, для того чтобы изменения вступили в силу, нужно выполнить метод РабочийСерверV8.Записать()
.
Свойство РабочийСерверV8.ИдРабочегоСервера
позволит в дальнейшем получать описание конкретного рабочего сервера напрямую, с помощью метода КластерV8.ПолучитьРабочийСервер()
. Если на одном физическом компьютере создается несколько рабочих серверов, то у каждого рабочего сервера должен быть уникальный IP-порт (свойство РабочийСерверV8.Порт
) и диапазон IP-портов (свойство РабочийСерверV8.ДиапазоныПортов
). Уникальность должна поддерживаться в рамках одного компьютера. Для того чтобы указать один или несколько диапазонов портов, предназначен метод РабочийСерверV8.ДобавитьДиапазонПортов()
.
Получение рабочих серверов
метод ПеречислитьРабочиеСерверы()
пер мойКластер = ПолучитьКластер()
мойКластер.ВыполнитьАутентификацию("", "")
пер РабочиеСерверы = мойКластер.ПолучитьРабочиеСерверы()
для Сервер из РабочиеСерверы
пер ИмяРабочегоСервера = Сервер.Имя
пер ЦентральныйСервер = Сервер.ЦентральныйСервер
пер ИмяКомпьютера = Сервер.ИмяКомпьютера
пер ИДРабочегоСервера = Сервер.ИдРабочегоСервера
;
;
метод ПолучитьКластер(): КластерV8
пер Сервер = новый АдминистрированиеСервераV8("localhost", 1545)
возврат Сервер.ПолучитьКластеры()[0]
;