Готовые бинарные сборки
Скачать последний релиз
| Linux amd64/arm64 | MacOS amd64/arm64 | BSD amd64/arm64 | Windows amd64/arm64 |
|---|---|---|---|
✔️ |
✔️ |
✔️ |
✔️ |
Сценарии использования
-
Превратите локальную файловую систему в S3-сервер одной командой!
-
Проксирование S3-запросов к S3-хранилищу
-
Простое развёртывание S3-сервера единственной командой
-
Совместимость с протоколом в режиме
posixобеспечивает общий доступ к файлам как через POSIX, так и через S3 -
Упрощённый интерфейс для добавления поддержки новых систем хранения
Веб-интерфейс (WebGUI)
Подробнее о новом (опциональном) веб-интерфейсе для управления и просмотра содержимого: https://github.com/versity/versitygw/wiki/WebGUI
S3 через RDMA
VersityGW поддерживает S3 поверх RDMA (Remote Direct Memory Access — удалённый прямой доступ к памяти), обеспечивая высокопроизводительную передачу объектов с малой задержкой в обход сетевого стека ядра. Это особенно полезно для задач высокопроизводительных вычислений (HPC) и обработки больших объёмов данных, где сетевые накладные расходы становятся узким местом. Подробности настройки и использования см. на странице вики S3 RDMA.
vgwrdma — сервис на основе VersityGW, предоставляющий стандартный S3 API с ускорением за счёт протокола cuObject (GPUDirect Storage for Objects) от NVIDIA.
Хостинг статических сайтов
Вы можете раздавать содержимое S3-бакетов как статические сайты с индексными документами, пользовательскими страницами ошибок и правилами маршрутизации.
Чтобы включить отдельный веб-эндпоинт, используйте флаги --website :8090 --website-domain example.com — это активирует маршрутизацию в стиле виртуальных хостов: blog.example.com обслуживает бакет blog, а example.com — бакет example.com.
Если --website-domain не указан, используется режим «поймать всё»: полное имя хоста становится именем бакета (называйте бакеты как FQDN, например blog.example.com).
Полный список флагов --website-* см. в разделе Глобальные параметры.
Новости
Последние статьи вики: https://github.com/versity/versitygw/wiki/Articles
Список рассылки
Будьте в курсе последних новостей о шлюзе — подпишитесь на рассылку versitygw.
Документация
Документация проекта доступна в вики.
Нужна помощь?
Задавайте вопросы в обсуждениях сообщества. Свяжитесь с отделом продаж Versity, чтобы обсудить корпоративную поддержку.
Обзор
Versity Gateway — удобный инструмент для прозрачного преобразования команд AWS S3 в операции различных систем хранения. Шлюз устраняет разрыв между приложениями, работающими с S3, и другими системами хранения, обеспечивая расширенную совместимость и интеграцию при исключительной масштабируемости.
Сервер принимает входящие запросы S3 API и преобразует их в эквивалентные операции для серверной части (backend). Благодаря этому приложения могут работать с S3-совместимым API поверх уже существующих систем хранения. Проект позволяет использовать имеющуюся инфраструктуру и при этом беспрепятственно интегрироваться с S3-совместимыми системами, предоставляя большую гибкость и совместимость в управлении хранением данных.
Versity Gateway создан с упором на производительность, простоту и расширяемость. Архитектура шлюза построена по модульному принципу, что позволяет в будущем добавлять поддержку новых систем хранения. В настоящее время Versity Gateway поддерживает любые файловые POSIX-бэкенды общего назначения, файловую систему ScoutFS с открытым исходным кодом от Versity, Azure Blob Storage и другие S3-серверы.
Шлюз полностью не имеет состояния (stateless). Для увеличения суммарной пропускной способности можно развернуть несколько экземпляров Versity Gateway в кластере. Благодаря такой архитектуре любой запрос может быть обработан любым экземпляром шлюза, что позволяет равномерно распределять нагрузку и повышать производительность. Для оптимального распределения запросов между шлюзами в кластере можно использовать балансировщики нагрузки.
HTTP(S)-сервер и маршрутизация S3 реализованы с использованием веб-фреймворка Fiber, активно развиваемого с прицелом на производительность. Совместимость с S3 API достигается максимальным использованием официального SDK aws-sdk-go-v2.
Начало работы
См. документацию Quickstart.
Запуск шлюза с POSIX-бэкендом
mkdir /tmp/vgw /tmp/vers
ROOT_ACCESS_KEY="testuser" ROOT_SECRET_KEY="secret" ./versitygw --port :10000 --iam-dir /tmp/vgw posix --versioning-dir /tmp/vers /tmp/vgw
Эта команда запустит S3-сервер на текущем хосте, слушающий порт 10000, который будет обслуживать каталог /tmp/vgw, сохраняя предыдущие версии объектов в /tmp/vers. Оба каталога могут находиться в одной и той же файловой системе — это нормально. Опция --iam-dir включает простую систему учётных записей на основе JSON-файлов, удобную для тестирования.
Чтобы получить справку по использованию, выполните:
./versitygw --help
Формат команды:
versitygw [global options] command [command options] [arguments...]
Глобальные параметры указываются перед типом бэкенда, а параметры бэкенда — после.
Тестирование и готовность к эксплуатации
VersityGW прошёл боевую проверку и готов к промышленному использованию. Каждый pull request обязан пройти полный набор тестов, прежде чем его можно будет проверить и принять. Проверка кода всегда включает участие живого человека. Языковые модели (LLM) могут использоваться для помощи в ревью, однако никогда не являются единственным рецензентом или лицом, принимающим решения. Подробнее об организации тестирования см. в разделе Testing.
Комплексное покрытие тестами
Многоуровневая стратегия тестирования включает:
-
Unit-тесты на Go — обширные модульные тесты с обнаружением гонок данных и анализом покрытия кода, охватывающие основную функциональность, граничные случаи и обработку ошибок.
-
Интеграционные тест-скрипты — тестирование реальных сценариев на нескольких бэкендах (POSIX, S3, Azure) и различных конфигурациях.
-
Функциональные/регрессионные тесты — сквозные SDK-тесты, проверяющие полные рабочие процессы: полноцикловые операции, специфичное поведение POSIX и функциональность IAM, дополненные регрессионными тестами по мере устранения проблем.
-
Статический анализ — проверки с помощью staticcheck.
-
Системные тесты — валидация на уровне протокола с использованием стандартных S3-клиентов:
-
AWS CLI — официальные инструменты командной строки AWS
-
s3cmd — популярный S3-клиент
-
Прямое тестирование REST API с помощью curl для проверки запросов и ответов
-
-
Тестирование безопасности — тестирование конфигураций HTTP и HTTPS, сканирование уязвимостей с помощью
govulncheck, регулярное обновление зависимостей через dependabot. -
Тестирование совместимости — несколько бэкендов, сценарии версионирования, статические режимы бакетов и различные методы аутентификации.
Запуск шлюза в Docker
Используйте опубликованный образ так же, как нативный бинарный файл, передавая аргументы командной строки:
docker run --rm versity/versitygw:latest --version
Подробная документация по запуску в Docker доступна на странице Docker.
Запуск в Kubernetes
Для удобного развёртывания Versity в среде Kubernetes предоставляется Helm-чарт:
helm install versitygw oci://ghcr.io/versity/versitygw/charts/versitygw
Дополнительную информацию и параметры конфигурации см. в README чарта.
Versity даёт вам чёткое представление о своём архивном хранилище и полный контроль над ним, чтобы вы могли направить больше ресурсов на своё основное дело.