Установка системы Yva.ai (Self-Hosted Solutions)

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

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

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

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

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

  1. Авторизоваться под пользователем root.
  2. Установить пакеты из репозитория. Для Ubuntu это будет следующая команда:
    sudo apt install jq docker docker-compose zip unzip gnupg2 pass
  3. Создать группу yva
    sudo groupadd yva
  4. Установка системы должна производиться от имени пользователя отличного от пользователя root. Для этой цели можно создать отдельного пользователя (например, yva) и предоставить ему права sudo. Для создания нового пользователя и предоставления ему прав потребуется учетная запись root или другая учетная запись с правами sudo.
    sudo useradd -g yva -G root -p password -s /bin/bash -m yva

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

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

  5. Нужно создать группу docker и добавить пользователя в неё:
    sudo groupadd docker

    sudo usermod -a -G docker yva
  6. После создания групп и добавления в них пользователей необходимо сделать re-login пользователем root.
  7. После этого нужно добавить группу в sudoers командой:
    sudo visudo

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

    %yva ALL=(ALL) NOPASSWD:ALL

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

Авторизуемся на сервере под пользователем 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.
"PLATFORM_CONSUL_JOIN" - нужно указывать внутренний IP-адрес
"PLATFORM_SERVICE_PUBLIC_IP" - - нужно указывать внутренний IP-адрес

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

Каждый сервер должен иметь уникальный hostname

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

  • 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"

Для проверки корректности заполнения файла values.json наберите команду: 

sudo jq . values.json

Если команда возвращает содержимое файла values.json, то значит файл заполнен корректно.

Далее заходим в директорию /yva-platform и создаем папку docker:

mkdir docker

Даем права на чтение/запись:

sudo chmod 777 docker/

Затем создаем файл daemon.json в папке /etc/docker:

cd /etc/docker

sudo touch daemon.json

И прописываем в файле конфиг:


 "data-root": "/yva-platform/docker"
}

Перезагружаем docker:

sudo systemctl restart docker

После этого в папке /yva-platform/docker должны появиться файлы и папки к примеру (buildkit containers image network overlay2 plugins runtimes swarm tmp trust volumes).

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

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

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

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

Для начала, необходимо настроить прокси на самом сервере. Это можно сделать через временное решение (скрипт, который работает пока запущена сессия пользователя) или через постоянную настройку в файле окружения /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

Для запуска процедуры инсталляции системы требуется запустить установочный скрипт из папки, куда планируется устанавливать yva (например /yva-platform), https://release.yva.ai/install.sh. В первую очередь запускается установка сервера с ролью mngr.Сразу после запуска на сервере mngr,запускаем установку на всех остальных. 

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

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

sudo docker ps

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