Перейти к содержанию

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

В данной статье описываются принцип работы и настройка масштабирования Admin Backend на Webim Server версии 10.6.

Масштабирование компонента происходит посредством введения дополнительных инстанстов и привязки всех инстансов к Redis, что позволяет инстансам обмениваться сообщениями для синхронизации данных.

Примерная схема масштабирования Admin Backend имеет следующий вид:

Настройка масштабирования

Для запуска Admin Backend в режиме масштабирования проделайте следующие шаги:

  1. Установите Redis 7.2.4 (при доступе из РФ возможны ограничения). Предпочтительным вариантом является установка на один сервер с Admin Backend.

  2. На сервере Chat Backend в директории /etc/webim добавьте файл redis.json и заполните его по следующему образцу:

    {
      "connections": {
        "<redis_connection_name>": {
          "url": "redis://<redis_ip_address>:<redis_port>/<key>"
        }
      }
    }
    

    Здесь <redis_connection_name> - произвольное название соединения, <redis_ip_address> - IP-адрес сервера с Redis, <redis_port> - порт, используемый Redis, <key> - ключ, используемый для хранения данных.

  3. Дополните файл /etc/webim/db.json следующей конфигурацией:

    {
      "dbs":
      {
        ...
        "redis":
        {
          "connection": "<redis_connection_name>"
        }
      }
    }
    
  4. В файле /etc/webim/nginx-components.conf добавьте или приведите к виду следующее перенаправление:

    upstream admin_backend {
      server <admin_backend_instance_IP>:<admin_backend_instance_port>
      server ...
      ...
    }
    

    Здесь необходимо добавить адреса и порты всех используемых инстансов Admin Backend.

  5. Удостоверьтесь, что в конфигурационных файлах nginx верно задано значение $agent_backend. Оно должно иметь вид:

    set $agent_backend http://admin_backend
    
  6. Перезапустите Admin Backend с параметрами --redis_connection и --cluster_name:

    admin_backend [other parameters] --redis_connection <redis_connection_name> --cluster_name <cluster_name>
    

    Здесь <redis_connection_name> - имя соединения с Redis, указанное в /etc/webim/db.json, <cluster_name> - имя кластера. Значения параметров должны быть одинаковыми для всех инстансов Admin Backend!

Отключение масштабирования

Для отключения масштабирования верните к исходному виду перенаправление admin_backend и перезапустите Admin backend без параметров --redis_connection и --cluster_name. Этот набор действий является минимальным. При необходимости Вы можете откатить все изменения из инструкции.