среда, 25 марта 2009 г.

Использование сервиса Workflow в кластере NLB

Как производить настройку сервисов Workflow, если несколько серверов DocsVision объеденены в кластер с балансировкой нагрузки (NLB).

Допустим настроен NLB кластер из 2х серверов DocsVision.
Сеансы пользователей распределяются между двумя серверам кластера.

Все пользователи уже могут работать в системе. Однако, есть тонкий момент. Если планируется, что пользователи будут самостоятельно запускать бизнес-процессы, то нужно, чтобы на сервере, к которому они подключены, был запущен сервис Workflow.

Таким образом, поскольку заранее неизвестно, к какому серверу (узлу кластера) будет адресован пользователь, то нужно, чтобы на обоих узлах был запущен сервис Workflow. А поскольку оба сервиса будут обрабатывать одну базу необходимо, чтобы они были настроены в кластер Workflow.

Вывод, если необходимо, чтобы пользователи NLB кластера могли запускать бизнес-процессы, то необходимо, чтобы на узлах NLB был настроен кластер Workflow.

Однако, запуск бизнес-процессов пользователями, процедура, которая редко реализуется в конкретном решении (это по сути административная задача)*. Поэтому, достаточно оставить сервис Workflow на одном из узлов (данный сервис будет обрабатывать все процессы в базе данных), а на другом его остановить - никакого объединения в кластер Workflow в этом случае не требуется.

В случае если потребуется запустить какой-либо процесс, то пользователь может осуществить подключение к конкретному узлу, на котором запущен сервис.

-----------
* Тут возникает вопрос, а как быть с бизнес-процессами по задачам? Бизнес процессы по задачам создаются системным процессом "Экземпляр процесса Мониторинг задач", а не пользователями.

2 комментария:

  1. Как раз недавно настраивали кластер NLB для DocsVision, в связи с этим возникает два вопроса:
    1. По поводу распределения нагрузки. Если оставить сервис Workflow только на одном из узлов, то получается, что распределённой обработки процессов уже не будет, т.к. все экземпляры б-п будут обрабатываться только на одном из узлов?
    2. По поводу отказоустойчивости. Если кластер для Workflow всё-таки настроен, то при отказе одного из Workflow, обрабатываемые им процессы не начнут обрабатываться вторым рабочим workflow? Или я ошибаюсь?

    ОтветитьУдалить
  2. 1. Да, если работает только один сервис Workflow, то естественно никакой параллельной обработки не будет - сервис всего один

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

    ОтветитьУдалить