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

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

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

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

![Схема масштабирования admin-backend](https://webim.ru/kb/img/devops/scaling/admin-backend-scaling/admin-backend-scaling.webp){ style="width: 541px; max-width: 100%" }

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

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

  1. [Установите](https://redis.io/docs/install/install-redis/) **Redis** 7.2.4 (при доступе из РФ возможны ограничения). Предпочтительным вариантом является установка на один сервер с **Admin Backend**.

  1. На сервере **Admin Backend** в директории `/etc/webim` создайте файл `redis.json` (если он ещё не существует) и добавьте в него конфигурацию соединения с **Redis** по следующему образцу:

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

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

  1. Если в `redis.json` описано несколько подключений, заранее выберите имя подключения, которое будете использовать при запуске **Admin Backend** (параметр `--redis-connection`).

  1. В файле `/etc/webim/nginx-components.conf` добавьте или приведите к виду следующее перенаправление:

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

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

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

    ```
    set $agent_backend http://admin_backend
    ```

  1. Перезапустите **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/redis.json`, `<cluster_name>` - имя кластера. Значения параметров должны быть одинаковыми для всех экземпляров **Admin Backend**!

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

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

---

Источник: https://webim.ru/kb/devops/scaling/admin-backend-scaling.html
