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

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

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

  1. Авторизоваться под пользователем root.

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

    sudo apt install jq docker docker-compose zip unzip gnupg2 pass
    CODE
  3. Создать группу yva

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

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

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

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

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

    sudo groupadd docker
    
    sudo usermod -a -G docker yva
    CODE
  6. После создания групп и добавления в них пользователей необходимо сделать re-login пользователем root.

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

    sudo visudo
    CODE

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

    %yva ALL=(ALL) NOPASSWD:ALL
    CODE

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

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

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

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

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

cd /yva-platform
touch values.json
CODE

Перед запуском процесса установки необходимо внести первичные настройки в файл конфигурации 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": "пароль администратора"
    }
}
CODE

"INIT_DOCKER_USER" - предоставляется менеджером Yva.ai.
"INIT_DOCKER_PASS" - предоставляется менеджером Yva.ai.
"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
CODE

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

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

mkdir docker
CODE

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

sudo chmod 777 docker/
CODE

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

cd /etc/docker

sudo touch daemon.json
CODE

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

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

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

sudo systemctl restart docker
CODE

После этого в папке /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"
CODE

Пример для /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"
CODE

После настройки прокси на машине, необходимо также настроить прокси для 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"
CODE

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

systemctl daemon-reload
systemctl restart docker
CODE

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

Для настройки клиента, необходимо создать файл ~/.docker/config.json в домашней директории пользователя, от имени которого будет происходить запуск Yva.ai. Если файл существует, то в него необходимо дописать ключ 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"
     }
 }
}
CODE

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

Настройка firewall

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

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

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

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

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

Пример команды для открытия портов 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
CODE

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

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

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

Установка

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

  • Есть пользователь, от имени которого будет происходить установка, и это не 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
CODE

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

sudo docker ps
CODE

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