Creatio development guide
PDF

Сервис синхронизации Exchange Listener

Glossary Item Box

Общие сведения

Сервис синхронизации Exchange Listener реализует синхронизацию Creatio с MS Exchange по протоколу EWS (Exchange Web Services). В данной статье описан процесс разворачивания компонента  Exchange Listener для системы установленной on-site.

Сервис состоит из двух обязательных компонентов:

  • основной модуль Exchange Listener;
  • NoSQL СУБД Redis.

Модуль Exchange Listener инициирует исходящее подключение к EWS API с учетными данными почтового ящика и создает подписку (subscription) для получения событий при поступлении новых писем. Открытая подписка остается в памяти компонента для обеспечения максимально оперативной реакции на получение нового письма. При получении события о новой почте выполняется загрузка экземпляра письма.

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

Обязательные требования к Redis:

  • разрешен анонимный доступ;
  • выделена отдельная база данных для работы сервиса Exchange Listener.

Для разворачивания сервиса Exchange Listener достаточным условием является использование in-memory хранилища.

Рекомендуемый способ разворачивания сервиса

Для разворачивания сервиса предпочтительным способом является использование оркестратора Kubernetes и пакетного менеджера Helm.

Целевое окружение:

  1. Кластер Kubernetes. Подробно  о том, как настроить и администрировать кластер описано на сайте документации Kubernetes.
  2. Установленный пакетный менеджер Helm. Установка пакетного менеджера подробно описана на сайте документации Helm.

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

Шаг 1. Установка Redis

Установка Redis с использованием Helm детально описана на сайте GitHub.

Пример команды для установки Redis:

helm install --namespace <namespace name> --set usePassword=false --set=slave.persistence.enabled=false --set master.persistence.enabled=false --set cluster.enabled=false --name <redis_deployment_name> stable/redis

Шаг 2. Установка модуля Exchange Listener

Для установки модуля нужно скачать helm-пакет.

Доступные параметры helm-пакета описаны ниже в табл. 1.

ВАЖНО

Для более новых версий Kubernetes необходимо будет указать также версию API, добавив параметр

--set apiVersion=apps/v1

Пример команды для установки Exchange Listener с использованием адреса и относительного пути сервиса:

helm install --set env.host=<redis_host> --set ApiUrl=<kubernetes_url> --set ingress.path=<listener_path> --set apiVersion=apps/v1 --namespace <namespace name> --name exchangelistener </path/to/helm/exchangelistener.tgz>

Адрес сервиса Exchange Listener — <kubernetes_url>/<listener_path>.

Проверить доступность можно сделав запрос по адресу <kubernetes_url>/<listener_path>/api/listeners/status  (рис. 1). 

Пример команды для установки Exchange Listener с использованием Node IP и адреса порта:

helm install --set env.host==<redis_host> --set service.type=<node_IP> --set service.nodePort=<node_port> --set apiVersion=apps/v1 --namespace <namespace name> --name exchangelistener </path/to/helm/exchangelistener.tgz>

Адрес сервиса Exchange Listener — <node_IP:node_port>.

Проверить доступность можно сделав запрос по адресу <node_IP:node_port>/api/listeners/status  (рис. 1).

Рис. 1. — Пример ответа сервиса exchange listener

 Масштабирование

По умолчанию обработка запросов производится отдельными узлами типа StatefulSet из расчета 1 реплика обработчика на 50 активных почтовых ящиков. За количество реплик отвечает параметр replicaCount (табл. 1). При необходимости нужно увеличить количество обработчиков, указав необходимое значение при установке. Возможна настройка автоматического масштабирования по количеству активных подписок. Для получения подробностей по организации таких сценариев нужно сделать запрос в support@creatio.com.

 

Табл 1. — Доступные параметры helm-пакета Exchange Listener

Название параметра Описание параметра Значение по умолчанию
replicaCount Количество StatefulSet-обработчиков запросов. 2
service.type Тип сервиса (детально типы сервисо Kubernetes описаны в документации). ClusterIP
service.nodePort Если параметр service.type равен NodePort, то в этом параметре указывается внешний порт сервиса (детально тип NodePort описан в документации Kubernetes).
env.host Адрес хоста Redis
env.port Порт хоста Redis 6379
env.base Номер базы данных Redis 0
ingress.enabled Использование переопределения адресов при помощи ingress true
ApiUrl Адрес сервиса при ingress.enabled=true
ingress.path Относительный путь сервиса
log4Net.level Уровень логирования по умолчанию Info

 

© Terrasoft 2002-2020.

Был ли данный материал полезен?

Как можно улучшить эту статью?