Установка платформы Yva.ai (автономное решение)
Для установки платформы Yva.ai вам потребуется выделенный сервер или виртуальная машина с Linux-дистрибутивом. Подробнее в статье Системные требования.
Создание и настройка пользователя
Чтобы установить платформу Yva.ai, вам нужно выполнить на всех серверах для установки следующее:
Авторизоваться под пользователем root.
Установить пакеты из репозитория. Для Ubuntu это будет следующая команда:
sudo apt install jq docker docker-compose zip unzip gnupg2 pass
CODEСоздать группу yva
sudo groupadd yva
CODEУстановка системы должна производиться от имени пользователя отличного от пользователя root. Для этой цели можно создать отдельного пользователя (например, yva) и предоставить ему права sudo. Для создания нового пользователя и предоставления ему прав потребуется учетная запись root или другая учетная запись с правами sudo.
sudo useradd -g yva -G root -p password -s /bin/bash -m yva
CODEКлюч -g yva добавляет пользователя yva в группу yva, которая должна быть предварительно создана.
Вместо password нужно указать пароль пользователя.
Нужно создать группу docker и добавить пользователя в неё:
sudo groupadd docker sudo usermod -a -G docker yva
CODEПосле создания групп и добавления в них пользователей необходимо сделать re-login пользователем root.
После этого нужно добавить группу в 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
Примечание: если в целях безопасности необходимо, чтобы доступ к данной директории был только у текущего пользователя и 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.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-2000 пользователей):
"vm_mngr_large"
"vm_exec_large"
"vm_gpdb_large"
"vm_mdbsh_large"
"vm_hbase_large"
"vm_app_large"XL установка (9 серверов, более 2000 пользователей):
"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).
Список ресурсов
Перед установкой важно убедиться, что с сервера или виртуальной машины, на которой планируется произвести установку системы доступны следующие ресурсы:
репозитории операционной системы для установки дополнительных пакетов (или через кэширующий прокси)
- для установки последней версии Docker
https://github.com/docker и https://github-releases.githubusercontent.com:443
- для установки docker-compose
докер-репозиторий Yva.ai https://cr1.yva.ai - для получения файлов сервисов
- для получения установочных скриптов
https://releases.hashicorp.com/
- для получения последней версии Consul
- для получения конфигурационных файлов для cr1
Использование прокси
Если сервер, куда планируется установка платформы, не имеет прямого доступа к интернету, то необходимо его дополнительно подготовить для использования прокси.
Для начала, необходимо настроить прокси на самом сервере. Это можно сделать через временное решение (скрипт, который работает пока запущена сессия пользователя) или через постоянную настройку в файле окружения /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.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"
}
}
}
Подробнее о docker прокси можно узнать в данной статье.
Настройка firewall
Если в сети, где будет установлена Yva.ai, требуется использование 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
После успешной установки можно переходить к Первичная настройка системы (автономное решение).