Создание высокодоступной фермы рабочих серверов OneScript в ОС Centos 7

21.07.19

Разработка - OneScript

В статье описана методика создания высокодоступной фермы рабочих серверов OneScript, для конфигурации АИТП.

Введение

В корпоративной среде, обеспечение высокой доступности приложений, а также их масштабирование для распределения нагрузки, играют важную роль. Поэтому, в настоящей статье, на примере развертывания рабочих серверов OneScript для конфигурации АИТП (проект на GitHub), рассмотрено создание кластера высокой доступности для web-приложения на основе http-сервисов OneScript.

Поскольку приложения на основе http-сервисов OneScript являются web-приложениями, для обеспечения их высокой доступности используется технология распределения (балансировки) сетевой нагрузки (NLB). В качестве основы, для построения кластера NLB выбрана технология Linux Virtual Server (LVS). С документацией по установке и настройке LVS для RHEL, которая также подойдет и для CentOS, можно ознакомиться, перейдя по этой ссылке.

Особенности архитектуры

Базовая конфигурация LVS состоит из двух уровней (см. рис. 1).

Рисунок 1. Базовая конфигурация LVS.

На первом уровне, находятся два LVS маршрутизатора. Они имеют по два сетевых интерфейса и перенаправляют (балансируют) входящий траффик на сервера приложений (real servers), которые находятся “за” маршрутизаторами. Сервера приложений обрабатывают поступивший траффик и отправляют ответ обратно, на маршрутизатор.

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

Для уменьшения траффика через маршрутизаторы можно использовать технологию Direct Routing (см. рис 2.), где сервера приложений отправляют траффик напрямую получателю, минуя маршрутизаторы.

Рисунок 2. Схема работы Direct Routing.

Подготовка лабораторной среды

Для тестового развертывания нам понадобится лабораторная среда, аналогичная среде, описанной ранее. В нашем случае она была дополнена еще одним рабочим сервером, а также двумя виртуальными машинами – маршрутизаторами см. рис. 3.

Рисунок 3. Лабораторная среда.

 

В качестве сертификата, для размещения на рабочих серверах использовался wildcard сертификат - *.itpa.cf.

В дальнейшем предполагается, что все компоненты лабораторной среды установлены и настроены.

Также предполагается, что ноды кластера рабочих серверов, а также маршрутизаторы настроены в соответствии с этой публикацией, (маршрутизаторы до пункта “Подготовка среды для web-приложения”).

Настройки firewall, установка компонентов etc. должны выполняться на обеих нодах или маршрутизаторах, если не указано другое.

Настройка рабочих серверов

Настройка firewall

Разрешим проверку доступности web-сервера с маршрутизаторов. Для этого, добавим ip адреса маршрутизаторов в зону work:

 

Сохраним изменения:

 

Создание виртуального интерфейса

Для исключения отправки неправильного MAC-адреса на клиентский компьютер, создадим интерфейс кластера, как loopback интерфейс. Для этого, в папке /etc/sysconfig/network-scripts, создадим файл ifcfg-lo:0, примерно следующего содержания (см. рис. 4):

Рисунок4. Настройки виртуального интерфейса.

 

Дополнительные сетевые настройки

Для исключения проблемы неправильного MAC-адреса в режиме direct routing и добавления возможности коммуникации с виртуальным интерфейсом, добавим в файл /etc/sysctl.conf нижеследующие ключи:

 

Настройка маршрутизаторов

Установка компонентов

Для создания кластера нам понадобится компонент для балансировки нагрузки – keepalived, а также компонент, обеспечивающий работу с виртуальным адресом кластера, а также балансировку на транспортном уровне – ipvsadm.

Устанавливаем необходимые компоненты:

 

Разрешаем автоматический старт сервисов:

 

Настройка firewall

Как и в предыдущей статье, будем использовать зону work – для коммуникаций с серверами приложений 1С:Предприятие, internal – для коммуникаций с компьютерами администраторов.

Для коммуникаций между роутерами используем зону home.

Далее предполагается, что базовые настройки firewall произведены в соответствии с вышекуазанной публикацией.

Настраиваем зону home:

 

Сохраняем изменения:

 

Настройка кластера

Для конфигурирования кластера, отредактируем файл /etc/keepalived/keepalived.conf

В нашем случае, ip кластера – 172.16.210.46, ip адреса нод кластера: 172.16.210.42 и 172.16.210.45. В качестве алгоритма балансировки для тестов выберем rr (round robin). В этом слкучае, каждый последующий запрос будет отправляться на ноду, отличную от ноды, на которой выполнялся последний запрос. В производственной среде имеет смысл использовать алгоритм lc (least connections), при котором запрос отправляется на ноду с наименьшим количеством соединений.

Содержимое конфигурационного файла для активного роутера (router1) и пассивного (router2), представлены ниже:

 
 

Дополнительные настройки сети

Для исключения проблемы неправильного MAC-адреса в режиме direct routing и добавления возможности коммуникации с виртуальным интерфейсом кластера, добавим в файл /etc/sysctl.conf нижеследующие ключи:

 

Тестирование функционала

Рестартуем рабочие сервера и маршрутизаторы.

Обратимся к кластеру из браузера. Если все настроено правильно, мы увидим примерно следующую картину (см. рис. 5).

Рисунок 5. Результат тестирования из браузера.

 

Запустим конфигурацию АИТП.

Изменим url сервиса для выполнения скриптов на url кластера. В нашем случае – это https://cluster.itpa.cf.

Введем нижеследующий код:

 

Выполним его несколько раз, через определенный промежуток времени (см. рис. 6.) и просмотрим результаты. Как можно увидеть, наш код выполняется на разных нодах кластера.

Рисунок 6. Результат тестирования из 1С:Предприятие.

 

Заключение

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

Настоящая методика также может быть использована для развертывания любых приложений на основе http-сервисов OneScript или сервисов web-доступа к 1С:Предприятие, при соответствующей настройке нод кластера.

Надеюсь, что настоящая публикация поможет Вам в использовании конфигурации АИТП, http-сервисов OneScript или других web-приложений, в корпоративной среде.

См. также

Особенности национального Workflow: Github Actions и OneScript

Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Сегодня мы посмотрим на Github Actions - встроенный инструментарий Github для автоматизации рабочих процессов. Разберем, что это такое, зачем и причем тут OneScript.

25.03.2024    1223    bayselonarrend    3    

37

TCP прокси-сервер хранилища конфигурации 1С

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Платформа 1С v8.3 Бесплатно (free)

Продолжение истории с прокси хранилища, но уже не на HTTP, а на TCP и без падений по памяти веб-сервера. Проверяем комментарии хранилища, вызываем веб-хуки, старты пайплайнов, gitsync по событию помещения версии в хранилище. И все это полностью на знакомом и понятном OneScript.

17.01.2024    2789    kamisov    17    

57

Что такое ОСень? Или как лучшие практики из мира Java прижились в экосистеме OneScript

OneScript Бесплатно (free)

Думаете, на OneScript неудобно создавать сложные инфраструктурные приложения? Ошибаетесь. Благодаря фреймворку ОСень за последний год экосистема библиотек, упрощающих написание собственных приложений, существенно выросла. Расскажем о самых передовых технологиях OneScript. Спойлер: будет много рефлексии, мета-аннотаций, желудей, напильников и дубов с завязями.

21.11.2023    3121    NikitaIvanchenko    16    

46

Библиотека создания клиент-серверных приложений для сценарного языка OneScript

Инструментарий разработчика Работа с интерфейсом OneScript Россия Бесплатно (free)

Представленная библиотека позволяет создать многопоточный TCP сервер, к которому может одновременно подключиться множество TCP клиентов с удаленных компьютеров. Эти клиенты могут вызывать методы скриптов как на сервере, так и на других клиентах. Методы будут выполнены в контексте скрипта на удаленной машине. Возможна передача параметров в метод и получение результата. Для TCP клиента можно создать графический интерфейс с большим набором элементов управления, модальными диалоговыми окнами и с обработкой событий.

31.07.2023    2019    ahyahy    8    

32

Получаем статистику по git-репозиторию в разрезе разработчиков

DevOps и автоматизация разработки Групповая разработка (Git, хранилище) OneScript Бесплатно (free)

Итак! Представим, что наступил момент, когда разработка через исходный код реализована на предприятии в полном объеме. Мы разрабатываем в EDT или конфигураторе (но выгружаем конфигурацию в исходный код), версионируем внешние отчеты и обработки и расширения, собираем релизы, проверяем код статическим анализом, в разработке царит гармония и мир. Красота! Но менеджерам этого мало, всегда хочется чего-то еще, и вот мне прилетает задача - дай статистику по вкладу в код каждого разработчика.

13.03.2023    3636    ardn    3    

27

Прокси хранилища 1С (IIS, OneScript)

Групповая разработка (Git, хранилище) OneScript DevOps и автоматизация разработки Платформа 1С v8.3 Россия Бесплатно (free)

Избавляемся от версионной зависимости, проверяем комментарии, вызываем веб-хуки, делаем красивые пути. И все это на привычном IIS и понятном OneScript.

08.12.2022    8046    kamisov    57    

95

OneScript на страже порядка на сервере тестовых баз данных

Администрирование СУБД OneScript Бесплатно (free)

Наводим порядок на сервере тестовых баз с помощью любимого инструмента - OneScript. Находим заброшенные базы на сервере MS SQL, определяем кандидатов на удаление.

14.06.2022    4255    ardn    23    

37

Идем в Serverless с кодом 1С

Облачные сервисы, хостинг OneScript Россия Абонемент ($m)

Запускаем код OneScript в Serverless Container Яндекса.

1 стартмани

29.04.2022    3698    1    papami    2    

9
Оставьте свое сообщение