Конфигурация кластера высокой доступности JFrog Artifactory

Я настраиваю 2 сервера Artifactory (ОС WinServer).

после конфигурации все красиво и красиво, но проблема в хранилище файлов. Хранилище файлов - это место, где каждый сервер ART хранит свои пакеты (Nugets, NPM, JAR и т. Д.).

Базовая конфигурация для одного сервера:

<config version="1">
    <chain template="file-system"/>
</config>

Конфигурация кластера, по словам Гудиелинеса, следующая:

<config version="2">
    <chain template="cluster-file-system"/>
</config>

Что, предположительно, дает мне избыточность, если один сервер не работает. Но при отключении NODE1 (который формально был основным единственным сервером Artifactory) я заставил NODE2 работать, и разрешение было хорошим.

Тем не менее, при запуске сборки, которая потребляет артефактор, я получаю «Внутренняя ошибка сервера 500». Внимательно изучив ошибку, он утверждает, что какой-то пакет не найден на NODE2.

Я проверил, что в локальном "хранилище данных \ файлов" ничего нет, а на NODE1 много пакетов.

TY, ребята!


person Ilya Gurenko    schedule 13.04.2020    source источник


Ответы (2)


Artifactory HA? Конфигурации должны совпадать. Моя конфигурация binarystore.xml:

<config version="2">
    <chain template="cluster-file-system"/>
</config>

Балансировка нагрузки выполняется nginx или другим обратным прокси. Подробнее: Архитектура системы - https://www.jfrog.com/confluence/display/JFROG/System+Architecture

person Andrey Molfly    schedule 14.04.2020
comment
Спасибо, что поделились конфигурацией. Моя первая конфигурация была точно такой же, но когда NODE1 был в автономном режиме, я получил ошибку, что запрошенный пакет недоступен ... Странные вещи - person Ilya Gurenko; 14.04.2020
comment
Все файлы хранятся на главном узле. Во-вторых, их может и не быть. Кластер хранит все файлы следующим образом: n (узел) -1. - person Andrey Molfly; 14.04.2020
comment
Как тогда у меня будет избыточность? Разве кластер HA не может решить проблему единой точки отказа? если на узле 1 есть все бинарные файлы, тогда, когда он не работает, узел 2 также не будет работать .... ТБХ, я запутался ... - person Ilya Gurenko; 14.04.2020
comment
››› Как тогда я получу дублирование? 3 узла, 5 узлов, 7 узлов ... Мы использовали 3 узла. - person Andrey Molfly; 15.04.2020
comment
Вы говорите, что минимум для кластера - 3 узла? Я предположил, что, поскольку для кластера не требуется минимума, для кластера будет достаточно 2 узлов (первичный и членский). Таким образом, в соответствии с логикой хранения файлов кластера, n (node) -1, у моего вторичного узла никогда не будет реплик всех пакетов, что создаст единую точку отказа. Надеюсь, мне что-то не хватает, так как это не кажется надежным решением для кластерного поведения. Ваше здоровье - person Ilya Gurenko; 16.04.2020

Хорошо, после обсуждения с поддержкой JFrog. Похоже, что для того, чтобы Node1 и Node2 реплицировали FILESTORE (где находятся все пакеты). флаг должен быть поднят.

Это можно сделать, вызвав команду POST:

curl -u имя пользователя: пароль -X POST "https://servername:8443/artifactory/api/system/storage/optimize "

После этого, и это самое главное, сборку мусора необходимо вызвать 20 раз (по умолчанию), чтобы начать синхронизацию. Следовательно, мы должны запустить эту команду 20 раз:

curl -u имя пользователя: пароль -X POST "https://servername:8443/artifactory/api/system/storage/gc "

В качестве альтернативы существует конфигурация, которая может переопределить это значение по умолчанию. перейдите на свой сервер Artifactory, $ artifactory_home / etc / artifactory.system.property и измените этот файл, чтобы он имел следующую строку: artifactory.gc.skipFullGcBetweenMonitorIterations = 1

Это должно применяться ко всем узлам. Перезапуск службы является обязательным на всех узлах кластера.

После этого произойдет синхронизация между узлами.

person Ilya Gurenko    schedule 23.04.2020