Отказоустойчивость в Directum RX

18 2

Отказоустойчивость позволяет быстро восстановить работоспособность системы в случае сбоя. Это особенно актуально в высоконагруженных системах, где одновременно работают 500 и более сотрудников.

Рассмотрим типовые варианты для настройки отказоустойчивости в Directum RX.

Вариант 1. Веб-ферма из двух серверов

В простейшем случае обеспечить отказоустойчивость Directum RX позволяет веб-ферма из двух серверов, на каждом из которых необходимо развернуть серверные компоненты Directum RX. Таким образом, в случае сбоя одного из серверов второй продолжит работу.

Веб-ферма разворачивается на базе IIS с расширением ARR (Application Request Routing). Каждый узел веб-фермы должен удовлетворять требованиям к аппаратному и программному обеспечению для сервера приложений.

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

При необходимости количество серверов Directum RX можно увеличить.

Вариант 2 (рекомендуемый). Два сервера ARR и балансировщик

Для обеспечения большей отказоустойчивости сервера ARR можно развернуть второй сервер ARR и объединить их в NLB-кластер (Network Load Balancing). Этот вариант считается рекомендуемым, т.к. помимо веб-фермы отказоустойчивость обеспечивается еще и средствами балансировки:

С помощью правил маршрутизации веб-фермы с расширением ARR распределяется нагрузка между серверами. Это повышает не только отказоустойчивость, но и быстродействие системы.

Служба NLB обеспечивает высокую доступность и масштабируемость, объединяя в кластер от 2 и более совместно работающих серверов. В случае сбоя или отключения одного из серверов фермы клиентские запросы распределяются между работающими серверами.

Настройка отказоустойчивой архитектуры

Порядок настройки отказоустойчивой архитектуры, а также требования к программному обеспечению, различаются в зависимости от используемой ОС. Рассмотрим это на примере ОС Microsoft Windows и Linux.

Microsoft Windows

Если сервера работают на базе ОС Microsoft Windows, то для начала на каждый сервер нужно установить службы Internet Information Services (IIS), расширение ARR, а также модуль URL Rewrite. Далее с помощью компоненты Диспетчер служб IIS развернуть ферму серверов.

О сервере ARR ранее уже говорили, а вот для чего нужен модуль URL Rewrite? Он перенаправляет клиентские запросы:

  • HTTP-запросы – на HTTPS (при работе по HTTPS);
  • запросы на получение данных из файлового хранилища – с IIS на локальный адрес сервиса хранилищ;
  • запросы на получение файлов предпросмотра – с IIS к сервису хранения файлов предпросмотра.

Чтобы клиентские запросы распределялись равномерно между серверами фермы, после установки нужно настроить правила маршрутизации согласно инструкции.

После того, как настроена веб-ферма, можно переходить к настройке NLB-кластера. Для этого нужно установить службу Network Load Balancing на каждый север ARR, создать кластер и добавить в кластер все работающие сервера ARR. Все операции последовательно выполняются через Диспетчер серверов. Подробнее об этом написано здесь.

Чтобы сервисы Directum RX могли общаться друг с другом в отказоустойчивой архитектуре, на отдельный сервер вам также потребуется установить брокер сообщений RabbitMQ. Его можно поставить на сервер вместе с базой данных.

Кроме того, в отказоустойчивой архитектуре необходимо, чтобы все севера были подключены к службе Redis. Redis это единая «шина данных», которая кэширует данные серверов приложений и веб-серверов и по запросу предоставляет их. Например, служба хранит токены для подключения к сервисам хранилищ в распределенной среде. Redis можно развернуть на одном из узлов кластера вместе с сервером приложений либо на выделенном ресурсе. Служба поставляется вместе с дистрибутивом Directum RX.

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

Linux

Если сервера работают на базе ОС Linux, то отказоустойчивость обеспечивается с помощью обратного прокси-сервера (reverse proxy). Это тип прокси-сервера, который позволяет перенаправлять запросы клиентских приложений из внешней сети на один или несколько серверов, расположенных во внутренней сети. Также обратный прокси-сервер может распределять нагрузку между несколькими серверами приложений:

В качестве обратного прокси-сервера можно выбрать популярные программные продукты, например:

  • Nginx – HTTP-сервер и обратный прокси-сервер, почтовый прокси-сервер, а также TCP/UDP прокси-сервер общего назначения;
  • Nginx Plus коммерческая версия свободно распространяемого ПО Nginx;
  • HAProxy – серверное ПО, которое обеспечивается высокую доступность и балансировку нагрузки для TCP- и HTTP-приложений за счет распределения входящих запросов на несколько обслуживающих серверов.

Так как обратный прокси-сервер может работать в разных режимах, следует определиться, какой режим больше подходит для вашей архитектуры. Самый простой режим – это когда пробрасывается весь TCP-трафик. В этом случае требуется минимальная настройка прокси-сервера, и на компьютере с прокси-сервером не нужно устанавливать сертификаты. Но в таком режиме не проводится анализ передаваемых пакетов. Более сложный режим для настройки – проброс только HTTP(S)-трафика. В этом случае можно анализировать содержимое пакетов и заменять их заголовки. Если используется защищенное HTTPS-соединение, то на компьютере с прокси-сервером устанавливаются сертификаты.

Затем в зависимости от выбранного режима выполняется настройка обратного прокси-сервера. Вся настройка выполняется через конфигурационные файлы. Например, в файлах указываются IP-адреса серверов Directum RX для подключения к обратному прокси-серверу, задаются настройки перенаправления запросов, задается время отклика сервера, на котором произошел сбой и прочее. Об этом подробно вы можете узнать в документации Directum RX на примерах настройки Nginx, Nginx Plus и HAProxy.

Как только отказоустойчивая архитектура подготовлена, на выделенные сервера разворачиваем серверные компоненты Directum RX и настраиваем их на работу. Здесь порядок действий такой же, как для ОС Microsoft Windows.

* * *

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

Приятного чтения!

Павел Березин

А службы Redis и RabbitMQ тоже в свою очередь както резервируются? Или существуют только в единственном экземпляре на кластер?

 

Иван Кузнецов

Павел, В статье приведена ссылка на статью по развертыванию отказоустойчивых служб Redis и RabbitMQ для сервисов DirectumRX - https://club.directum.ru/post/255245
Так же можно ознакомиться со стаьей по Реализации отказоустойчивого Redis в рамках горизонтального масштабирования DirectumRX: https://club.directum.ru/post/222438

Авторизуйтесь, чтобы написать комментарий