Отказоустойчивость позволяет быстро восстановить работоспособность системы в случае сбоя. Это особенно актуально в высоконагруженных системах, где одновременно работают 500 и более сотрудников.
Рассмотрим типовые варианты для настройки отказоустойчивости в Directum RX.
В простейшем случае обеспечить отказоустойчивость Directum RX позволяет веб-ферма из двух серверов, на каждом из которых необходимо развернуть серверные компоненты Directum RX. Таким образом, в случае сбоя одного из серверов второй продолжит работу.
Веб-ферма разворачивается на базе IIS с расширением ARR (Application Request Routing). Каждый узел веб-фермы должен удовлетворять требованиям к аппаратному и программному обеспечению для сервера приложений.
Сервер ARR позволяет использовать правила маршрутизации, балансировать нагрузку запросов, поступающих к серверу, и выступает в роли прокси-сервера для разгрузки сервера приложений и веб-сервера.
При необходимости количество серверов Directum RX можно увеличить.
Для обеспечения большей отказоустойчивости сервера ARR можно развернуть второй сервер ARR и объединить их в NLB-кластер (Network Load Balancing). Этот вариант считается рекомендуемым, т.к. помимо веб-фермы отказоустойчивость обеспечивается еще и средствами балансировки:
С помощью правил маршрутизации веб-фермы с расширением ARR распределяется нагрузка между серверами. Это повышает не только отказоустойчивость, но и быстродействие системы.
Служба NLB обеспечивает высокую доступность и масштабируемость, объединяя в кластер от 2 и более совместно работающих серверов. В случае сбоя или отключения одного из серверов фермы клиентские запросы распределяются между работающими серверами.
Порядок настройки отказоустойчивой архитектуры, а также требования к программному обеспечению, различаются в зависимости от используемой ОС. Рассмотрим это на примере ОС Microsoft Windows и Linux.
Если сервера работают на базе ОС Microsoft Windows, то для начала на каждый сервер нужно установить службы Internet Information Services (IIS), расширение ARR, а также модуль URL Rewrite. Далее с помощью компоненты Диспетчер служб IIS развернуть ферму серверов.
О сервере ARR ранее уже говорили, а вот для чего нужен модуль URL Rewrite? Он перенаправляет клиентские запросы:
Чтобы клиентские запросы распределялись равномерно между серверами фермы, после установки нужно настроить правила маршрутизации согласно инструкции.
После того, как настроена веб-ферма, можно переходить к настройке NLB-кластера. Для этого нужно установить службу Network Load Balancing на каждый север ARR, создать кластер и добавить в кластер все работающие сервера ARR. Все операции последовательно выполняются через Диспетчер серверов. Подробнее об этом написано здесь.
Чтобы сервисы Directum RX могли общаться друг с другом в отказоустойчивой архитектуре, на отдельный сервер вам также потребуется установить брокер сообщений RabbitMQ. Его можно поставить на сервер вместе с базой данных.
Кроме того, в отказоустойчивой архитектуре необходимо, чтобы все севера были подключены к службе Redis. Redis – это единая «шина данных», которая кэширует данные серверов приложений и веб-серверов и по запросу предоставляет их. Например, служба хранит токены для подключения к сервисам хранилищ в распределенной среде. Redis можно развернуть на одном из узлов кластера вместе с сервером приложений либо на выделенном ресурсе. Служба поставляется вместе с дистрибутивом Directum RX.
Теперь архитектура подготовлена, осталось развернуть и настроить компоненты Directum RX на серверах фермы согласно инструкции. В ходе настройки указываются общий адрес Redis, отпечаток сертификата для шифрования Cookie и для проверки токена доступа к сервисам Directum RX и другие обязательные настройки.
Если сервера работают на базе ОС Linux, то отказоустойчивость обеспечивается с помощью обратного прокси-сервера (reverse proxy). Это тип прокси-сервера, который позволяет перенаправлять запросы клиентских приложений из внешней сети на один или несколько серверов, расположенных во внутренней сети. Также обратный прокси-сервер может распределять нагрузку между несколькими серверами приложений:
В качестве обратного прокси-сервера можно выбрать популярные программные продукты, например:
Так как обратный прокси-сервер может работать в разных режимах, следует определиться, какой режим больше подходит для вашей архитектуры. Самый простой режим – это когда пробрасывается весь TCP-трафик. В этом случае требуется минимальная настройка прокси-сервера, и на компьютере с прокси-сервером не нужно устанавливать сертификаты. Но в таком режиме не проводится анализ передаваемых пакетов. Более сложный режим для настройки – проброс только HTTP(S)-трафика. В этом случае можно анализировать содержимое пакетов и заменять их заголовки. Если используется защищенное HTTPS-соединение, то на компьютере с прокси-сервером устанавливаются сертификаты.
Затем в зависимости от выбранного режима выполняется настройка обратного прокси-сервера. Вся настройка выполняется через конфигурационные файлы. Например, в файлах указываются IP-адреса серверов Directum RX для подключения к обратному прокси-серверу, задаются настройки перенаправления запросов, задается время отклика сервера, на котором произошел сбой и прочее. Об этом подробно вы можете узнать в документации Directum RX на примерах настройки Nginx, Nginx Plus и HAProxy.
Как только отказоустойчивая архитектура подготовлена, на выделенные сервера разворачиваем серверные компоненты Directum RX и настраиваем их на работу. Здесь порядок действий такой же, как для ОС Microsoft Windows.
* * *
В статье представлены типовые настройки отказоустойчивой архитектуры с целью ознакомления. Как правило, в организациях эти схемы адаптируют под индивидуальные условия: рассчитывают мощность и количество серверов в зависимости от числа одновременно работающих сотрудников. Для более глубокого погружения в тему отказоустойчивости мы также рекомендуем вам ознакомиться со справкой и следующими материалами:
Приятного чтения!
А службы Redis и RabbitMQ тоже в свою очередь както резервируются? Или существуют только в единственном экземпляре на кластер?
Павел, В статье приведена ссылка на статью по развертыванию отказоустойчивых служб Redis и RabbitMQ для сервисов DirectumRX.
Так же можно ознакомиться со статьей по Реализации отказоустойчивого Redis в рамках горизонтального масштабирования DirectumRX.
Авторизуйтесь, чтобы написать комментарий