Раздел servers

Описание

Список серверов.

Раздел содержит список всех серверов текущей конфигурации и их параметров. Роли к параметрам не относятся. Привязка серверов к сайтам и ролей к серверам происходит в разделе structure.

Параметры раздела

Table 1. Параметры раздела
Спецификация Описание

Ключ: name
Обязательный: да
По умолчанию: — 

Название сайта, указываемое при настройках других элементов конфигурации.
Cтрока, может состоять из латинских букв и цифр, начинаться должно с буквы.
Рекомендуются короткие говорящие значения.

Ключ: logiface
Обязательный: да
По умолчанию: "eth0"

Алиас интерфейса на сервере, на котором поднимается нода servershell – центральная нода сервера.

Ключ: ifaces
Обязательный: да
По умолчанию: — 

Сетевые интерфейсы IPv4, доступные на сервере.

Формат:
[
  {
    "key": string,
    "value": string,
    "virtual": boolean
  },  ..
]

, где

  • key – алиас интерфейса, используемый для указания интерфейсов при настройке ролей. Все ключи должны различаться в пределах сервера.

  • value - IPv4 адрес интерфейса сервера, к которому может производиться привязка в настройках ролей. Все адреса должны различаться в пределах сервера.

  • virtual - true, если адрес виртуальный (Virtual IP). По умолчанию false. Виртуальный адрес быть указан одновременно для нескольких серверов. Виртуальный адрес используется в микросервисах ws и sg как один из вариантов реализации отказоустойчивого фасада для подключения абонентских устройств и приложений. Для виртуальных адресов может быть включена автоматизация назначения параметром virtualip_automation.

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

Значения алиасов и адреса интерфейсов должны различаться в пределах одного сервера.
На различных серверах могут повторяться только виртуальные адреса интерфейсов.
Алиасы удобно настраивать идентично на разных серверах, отмечая одинаковым алиасом адреса интерфейсов, принадлежащих одной подсети.

Ключ: descr
Обязательный: нет
По умолчанию: — 

Описание сервера.
По умолчанию значение не задано.

Ключ: erlangtcp
Обязательный: нет
По умолчанию: 4369

Порт для взаимодействия нод виртуальной машины erlang между собой.
Должен быть одинаковым у всех серверов конфигурации.

Ключ: nodesportrange
Обязательный: нет
По умолчанию: 9310:90

Диапазон портов, которые будут использоваться для ролевых нод.
Формат: PortFrom:PortCnt, где PortFrom – начальное значение порта, PortCnt – количество портов.

Ключ: globalsharepath
Обязательный: нет
По умолчанию: "/var/lib/era/files/globalshare"

Путь до каталога globalshare на сервере.
В случае, если параметр не указан, то фактически будет использоваться указанный путь по умолчанию на диске.

Ключ: sitesharepath
Обязательный: нет
По умолчанию: "/var/lib/era/files/siteshare"

Путь до каталога siteshare на сервере.
В случае, если параметр не указан, то фактически будет использоваться указанный путь по умолчанию на диске.

Ключ: localpath
Обязательный: нет
По умолчанию: "/var/lib/era/files/local"

Путь до каталога local на сервере.
В случае, если параметр не указан, то фактически будет использоваться указанный путь по умолчанию на диске.

Ключ: syncrootpath
Обязательный: нет
По умолчанию: "/var/lib/era/files/syncroot"

Путь до каталога :SYNC на сервере (синхронизируется ролью dfsync).
В случае, если параметр не указан, то фактически будет использоваться указанный путь по умолчанию на диске.

Ключ: recstorepaths
Обязательный: нет
По умолчанию: []

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

Формат:
[
  {
    "Key":"AbsPath",    ...
  },  ...
]

, где

  • Key – ключ, используемый для указания путей на сервере при настройке ролей;

  • AbsPath – абсолютный путь на сервере к каталогу или его алиас (например, alias://paths/c).

Ключ: logging_default_level
Обязательный: нет
По умолчанию: empty

Уровень логирования по умолчанию, применяемый в нодах, обслуживаемых на данном сервере.

Текущий уровень логирования конкретной ноды можно изменить с помощью API и из приложения администратора мастер-домена. Такие изменения сбрасываются при перезапуске соответствующей ноды.

Если уровень не задан, то применяется значение этого параметра из конфигурационных настроек текущего сайта.

Возможные значения:

  • CRASH

  • ERROR

  • WARNING

  • INFO

  • TRACE

  • DEBUG

Ключ: sip_stat_timeout_callinfo
Обязательный: нет
По умолчанию: 1200

Время хранения в секундах статистической информации о вызовах. Применяется для мониторинговых запросов /api/monitor/v1/trace/calls.
По умолчанию данные сохраняются на 20 минут.
Чем больше время - тем дольше по времени от момента совершения звонка могут быть предоставлены данные запросом мониторинга. Одновременно с этим требуется больше оперативной памяти в нодах сип-сигнализации.

Если значение не задано, то применяется значение этого параметра из конфигурационных настроек текущего сайта.

Возможные значения от 0 до 86400. 0 - сохранение не производится.

Ключ: sip_stat_timeout_closure
Обязательный: нет
По умолчанию: 12600

Время хранения в секундах статистической информации о связках между Call-Id телефонных вызовов одного сеанса для вычисления замыкания. Используется при построении диаграмм вызова.
Также сохраняет информацию о связях Call-Id вызовов с доменами системы для обеспечения возможности построения диаграмм в рабочих доменах по их собственным вызовам.
По умолчанию данные сохраняются на 3.5 часа.
Чем больше время - тем дольше по времени от момента совершения звонка могут быть построены замыкания и диаграммы по SIP-сигнализации сеанса. Одновременно с этим требуется больше оперативной памяти в нодах сип-сигнализации.

Если значение не задано, то применяется значение этого параметра из конфигурационных настроек текущего сайта.

Возможные значения от 0 до 86400. 0 - сохранение не производится.

Ключ: virtualip_automation
Обязательный: нет
По умолчанию: false

Выключатель сервиса назначения виртуальных IP-адресов серверам кластера.
Значение применяется для тех серверов, для которых не назначен аналогичный параметр сервера или сайта.
Если параметр не назначен, то применяется аналогичный параметр сайта и или глобальный параметр.

Применяется совместно с параметром ifaces для интерфейсов, которым выставлен атрибут 'virtual'.
Каждый сервер использует локальные bash-скрипты, размещенные в каталоге '/var/lib/era_files/local/virtualip/':

  • set_ip_up.sh - добавление виртуальных адресов, корректировка ARP-таблицы шлюза.

  • set_ip_down.sh - удаление виртуальных адресов.

Пример скрипта set_ip_up.sh
#!/bin/bash
ip address add 192.168.0.212/24 dev enp8s0 label enp8s0:1
ip address add 172.29.1.212/24 dev ztbto2zz label ztbto2zz:1

arping -s 192.168.0.212 192.168.0.1 -f
Пример скрипта set_ip_down.sh
#!/bin/bash
ip address del 192.168.0.212/24 dev enp8s0 label enp8s0:1
ip address del 172.29.1.212/24 dev ztbto2zz label ztbto2zz:1
Скрипты должны добавлять все указанные в параметре ifaces сервера виртуальные адреса.

Для активации сервиса необходимо одновременно:

  • Наличие виртуальных адресов в списке интерфейсов ifaces сервера;

  • Отсутствие конфликта по виртуальным IP-адресам с другими серверами. Конфликтом является неполное пересечение виртуальных адресов.

  • Наличие обоих bash-скриптов '/var/lib/era_files/local/virtualip/set_ip_up.sh' и '/var/lib/era_files/local/virtualip/set_ip_down.sh';

  • Активированная автоматизация назначения виртуального IP-адреса (данный параметр).

Логирование работы сервиса производится в логе env/env_*.log серверной ноды.

Один и тот же набор одинаковых виртуальных адресов может задаваться для произвольного количества серверов, образующих замкнутую группу автоматизации назначения виртуальных адресов.
Если сервер в группе один, то он безальтернативно исполнит скрипт добавления виртуальных адресов.
Если серверов несколько, то среди них будет выбран только один с поднятыми виртуальными адресами. Начальный приоритет определяется значениями параметра virtualip_order).

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

На выполнение bash-скриптов отводится 5 секунд. В случае таймаута процесс прекращается.
Попытки добавления и удаления виртуальных интерфейсов сопровождаются последующей проверкой их наличия (всех для операции добавления, или хотя бы одного для операции удаления).
При неудачах в течение 30 секунд делаются еще 2 попытки.

Если деактивировать режим автоматизации, то выполняется bash-скрипт on_disable.sh.
В нем можно повторить тело скрипта set_ip_down.sh, и тогда интерфейсы удалятся в момент отключения автоматизации (активации соответствующей конфигурации).
Если файл отсутствует, тогда при отключении автоматизации интерфейсы останутся в неизменном состоянии.
Файл может иметь также другое специфическое содержание.

Ключ: virtualip_order
Обязательный: нет
По умолчанию: empty

Порядковый номер сервера в группе автоматизации назначения виртуальных IP-адресов.
Если значение не задано, то приоритет определяется статически случайным образом (хеш-функция от имени ноды).
Более приоритетны серверы с заданным значением.

Takeover не используется. То есть вне зависимости от значений параметра, более приоритеным считается тот, кто дольше всех подключен к кластеру. Приоритеты используются в случае конфликта и при перезапуске лидера группы.

Пример значения поля

{
  ...
  "servers": [
    {
      "descr": "Central server1. Srv2",
      "erlangtcp": 4369,
      "ifaces": [
        {
          "key": "eth0",
          "value": "192.168.0.124"
        }
      ],
      "logiface": "eth0",
      "name": "worksrv1",
      "recstorepaths": [
        {
          "key": "main5",
          "value": "alias://paths/h"
        },
        {
          "key": "main4",
          "value": "alias://paths/g"
        }
      ]
    },
    {
      "descr": "admin srv 101 ipshnik. Srv2",
      "erlangtcp": 4369,
      "ifaces": [
        {
          "key": "eth0",
          "value": "192.168.0.123"
        }
      ],
      "logiface": "eth0",
      "name": "lwm123",
      "recstorepaths": [
        {
          "key": "main4",
          "value": "alias://paths/f"
        }
      ],
      "sitesharepath": "alias://paths/e"
    },
    {
      "descr": "admin srv 101 ipshnik. Srv22222",
      "erlangtcp": 4369,
      "ifaces": [
        {
          "key": "eth0",
          "value": "192.168.0.127"
        }
      ],
      "logiface": "eth0",
      "name": "lwm101",
      "recstorepaths": [
        {
          "key": "main4",
          "value": "alias://paths/f"
        }
      ],
      "sitesharepath": "alias://paths/e"
    }
  ],
  ...
}