Установка платформы Yva (On-Premise)

Для установки платформы Yva On-Premise потребуется выделенный сервер или виртуальная машина с Linux-дистрибутивом.  Подробнее в статье системные требования.

Процесс установки Yva.ai On-premise состоит из трех частей:

Для установки в облако Yva.ai перейдите сразу к созданию и настройке рабочего пространства.

Создание и настройка пользователя

Чтобы установить платформу Yva нужно выполнить на всех серверах для установки следующее:

Установить пакеты из репозитория. Для Ubuntu это будет следующая команда:

sudo apt install jq docker docker-compose zip unzip

Установка платформы должна производиться от имени пользователя отличного от пользователя root. Для этой цели можно создать отдельного пользователя (например, yva) и предоставить ему права sudo. Для создания нового пользователя и предоставления ему прав потребуется учетная запись root или другая учетная запись с правами sudo.

sudo useradd -g yva -G root -p password -s /bin/bash -m yva

Ключ -g yva добавляет пользователя yva в группу yva, которая должна быть предварительно создана.

Вместо password нужно указать пароль пользователя.

Создать группу можно с помощью команды:

sudo groupadd yva

Также нужно создать группу docker и добавить пользователя в неё:

sudo groupadd docker
sudo usermod -a -G docker yva

После этого нужно добавить группу в sudoers командой:

sudo visudo

Откроется редактор, используемый по умолчанию. Нужно добавить строку после строки "See sudoers(5) for more information on "#include" directives::"

%yva ALL=(ALL) ALL

Если по умолчанию в операционной системе у вас не стоит библиотека gnupg2, её нужно поставить командой:

sudo apt install gnupg2 pass

Предварительная конфигурация

Авторизуемся на сервере под пользователем yva. Теперь необходимо подготовить директорию (например, yva-platform), куда будет произведена установка. Создаем директорию и предоставляем к ней полный доступ.

sudo mkdir /yva-platform
sudo chown yva:yva /yva-platform
sudo chmod 777 /yva-platform

Примечание: если в целях безопасности необходимо, чтобы доступ к данной директории был только у текущего пользователя и root, то права можно изменить на более жесткие. 

Далее, переходим в ранее созданную директорию и создаем файл конфигурации values.json.

cd /yva-platform
touch values.json

Перед запуском процесса установки необходимо внести первичные настройки в файл конфигурации values.json. Это можно сделать с помощью любого удобного инструмента (nano, vi, vim, cat и т.д.). Важно, разметка файла должна соответствовать формату json.

{
"kv": {
"PLATFORM_CONSUL_JOIN": "IP-адрес сервера с ролью mngr",
"PLATFORM_IFS_DEFUALT_LIST": "bond en eth wl dummy",
"PLATFORM_SERVICE_PUBLIC_IFS": "bond en eth",
"PLATFORM_UPDATE_HOSTROLE": "роль сервера",
"INIT_DOCKER_USER": "пользователь для подключения к docker-репозиторию",
"INIT_DOCKER_PASS": "пароль для подключения к docker-репозиторию",
"PLATFORM_SERVICE_PUBLIC_IP": "IP-адрес сервера с ролью mngr",
"YVA_SECURE_PLAIN": "пароль администратора"
}
}

"INIT_DOCKER_USER" - предоставляется менеджером Yva.
"INIT_DOCKER_PASS" - предоставляется менеджером Yva.

Количество серверов зависят от количества пользователей. Аппаратные требования к серверам описаны в статье системные требования

Возможные роли:

  • Medium установка (3 сервера, до 500 пользователей):
    "vm_mngr_medium"
    "vm_exec_medium"
    "vm_gpdb_medium"
  • Large установка (6 серверов, 500-1500 пользователей):
    "vm_mngr_large"
    "vm_exec_large"
    "vm_gpdb_large"
    "vm_mdbsh_large"
    "vm_hbase_large"
    "vm_app_large"
  • XL установка (9 серверов, более 1500 пользователей):
    "vm_mngr_xl"
    "vm_front_xl"
    "vm_mdbs0h0_xl"
    "vm_mdbs0h1_xl"
    "vm_gpdb_xl"
    "vm_hbase_xl"
    "vm_rmq_xl"
    "vm_app_xl"
    "vm_exec_xl"

В первую очередь выполняется установка сервера с ролью mngr, затем всех остальных

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

Перед установкой важно убедиться, что с сервера или виртуальной машины, на которой планируется произвести установку платформы доступны следующие ресурсы:

Использование прокси

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

Для начала, необходимо настроить прокси на самом сервере. Это можно сделать через временное решение (скрипт, который работает пока запущена сессия пользователя) или через постоянную настройку в файле окружения /etc/environment. В случае с прокси непременно необходимо исключать внутренние адреса, которые будет использовать docker и микросервисы. Эти адреса будут указаны в примерах

Пример использования в виде скрипта, который нужна запускать:

export proxy="http://пользователь:пароль@адрес:порт/"
export http_proxy="$proxy"
export https_proxy="$proxy"
export no_proxy="localhost,127.0.0.1,.service.consul,169.254.1.1,172.18.0.0/24,ip_адрес_сервера,anglefeatures"

Пример для /etc/environment:

http_proxy="http://пользователь:пароль@адрес:порт/"
https_proxy="https://пользователь:пароль@адрес:порт/"
no_proxy="localhost,127.0.0.1,.service.consul,169.254.1.1,172.18.0.0/24,ip_адрес_сервера,anglefeatures"

После настройки прокси на машине, необходимо также настроить прокси для docker. Данная настройка предполагает, что docker уже установлен. Есть 2 способа настроить прокси для docker через переменные среды и через настройку клиента.

Для настройки через переменные среды, необходимо создать файл /etc/systemd/system/docker.service.d/http-proxy.conf и наполнить его следующим содержимым:

Environment="HTTP_PROXY=http://пользователь:пароль@адрес:порт/"
Environment="HTTPS_PROXY=https://пользователь:пароль@адрес:порт/"
Environment="NO_PROXY=localhost,127.0.0.1,.service.consul,169.254.1.1,172.18.0.0/24,ip_адрес_сервера,anglefeatures"

Затем необходимо выполнить команды:

systemctl daemon-reload
systemctl restart docker

Если в процессе применения настроек возникнут ошибки, они будут отображены в логе.

Для настройки клиента, необходимо создать файл ~/.docker/config.json в домашней директории пользователя, от имени которого будет происходить запуск Yva. Если файл существует, то в него необходимо дописать ключ proxies.

{
"proxies": {
"default": {
"httpProxy": "http://пользователь:пароль@адрес:порт/",
"httpsProxy": "https://пользователь:пароль@адрес:порт/",
"noProxy": "localhost,.service.consul,169.254.1.1,127.0.0.1,172.18.0.0/24,ip_адрес_сервера,anglefeatures"
}
}
}

Подробнее о docker прокси можно узнать в данной статье.

Настройка firewall

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

Необходимые адреса:

<ip_адреса_всех_машин>
169.254.1.1
172.17.0.0/24

Необходимые порты:

443, 80, 8080, 8888 - frontend и роутеры
32768-61000 - docker
8500, 8600, 8300 - consul
53 - int-dns
5672, 15672, 4369, 5671, 25672 - RabbitMQ

Пример команды для открытия портов iptables:

sudo iptables -t filter -A INPUT -p tcp -s 169.254.1.1,172.17.0.0/24,ADD_IP_ADDRESS --match multiport --dport 53,80,443,4369,5671,5672,8080,8300,8500,8600,8888,15672,25672,32768:61000 -j ACCEPT

Вместо ADD_IP_ADDRESS добавьте IP-адресы или подсеть серверов, на которых будут установлены компоненты платформы.

Пример команды для открытия портов firewalld:

firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --reload

Установка

Перед запуском процедуры установки необходимо еще раз убедиться, что всё подготовлено. Для этого можно использовать следующий чек-лист:

  • Есть пользователь, от имени которого будет происходить установка, и это не root
  • У данного пользователя есть права sudo и существует домашняя директория
  • Создана директория, куда будет происходить установка
  • У пользователя есть права для работы с данной директорией
  • Текущее местоположение - созданная для установки директория
  • В директориях /, /tmp и установочной директории достаточно места (лучший вариант использовать большой lvm раздел для / и не подключать отдельные разделы для /tmp и директории)
  • На машине отключен firewall или настроен таким образом, чтобы не мешать процессу создания сетей docker

Для запуска процедуры инсталляции платформы требуется запустить установочный скрипт https://release.yva.ai/install.sh. Запуск установки нужно совершать одновременно на всех используемых серверах.

curl -fSs https://release.yva.ai/install.sh  | bash

Процедура установки займет некоторое время, которое зависит от параметров сервера и ширины канала интернет. Самый простой способ проверить, что установка прошла успешно - проверить состояние docker-контейнеров (не должно быть контейнеров в состоянии restarting). Для этого необходимо перезайти в учетную запись и использовать команду ниже.

sudo docker ps

После успешной установки можно переходить к первичной настройке платформы.