Вступ
Garage — це відкритий розподілений сервіс об’єктного сховища, спеціально розроблений для самостійного розгортання. Він реалізує Amazon S3 API, що забезпечує сумісність із широким спектром існуючих інструментів та додатків. На відміну від традиційних рішень для об’єктного зберігання, Garage побудовано з акцентом на простоту, стійкість та ефективність використання ресурсів.
Основні переваги Garage S3
Легкість та ефективність ресурсів
Garage розроблено для роботи на скромному обладнанні, що робить його ідеальним для домашніх лабораторій, малого бізнесу та периферійних розгортань. Він може ефективно працювати на ARM-пристроях, таких як Raspberry Pi, споживаючи мінімум CPU та RAM.
Географічне розподілення
Однією з найяскравіших особливостей Garage є вбудована підтримка географічного розподілу. Ви можете розгортати вузли в різних локаціях, забезпечуючи доступність даних навіть якщо цілі сайти виходять з ладу. Це робить його ідеальним для сценаріїв розподіленої інфраструктури.
Сумісність з S3
Garage реалізує значну частину S3 API, дозволяючи використовувати знайомі інструменти, такі як s3cmd, AWS CLI, rclone та багато рішень для резервного копіювання без модифікацій. Ця сумісність забезпечує легку міграцію та інтеграцію з існуючими робочими процесами.
Відсутність зовнішніх залежностей
На відміну від багатьох розподілених систем зберігання, Garage не потребує зовнішніх сервісів координації, таких як ZooKeeper чи etcd. Він використовує власний алгоритм консенсусу, спрощуючи розгортання та зменшуючи точки відмови.
Гнучка реплікація
Garage дозволяє налаштовувати коефіцієнти реплікації окремо для кожного бакета, надаючи детальний контроль над надмірністю даних та ефективністю сховища. Ви можете балансувати між вартістю зберігання та захистом даних відповідно до ваших потреб.
Відкритий вихідний код
Garage повністю відкритий під ліцензією AGPL-3.0, даючи вам повний контроль над вашими даними та інфраструктурою без прив’язки до постачальника.
Встановлення Garage в Docker
Передумови
Перед початком переконайтеся, що у вас є:
- Встановлений Docker на вашій системі
- Базове розуміння роботи з командним рядком
- Принаймні 1 ГБ вільного дискового простору для тестування
Крок 1: Створення структури каталогів
Спочатку створіть каталоги для зберігання конфігурації та даних Garage:
mkdir -p ~/garage/{data,meta}
Крок 2: Створення файлу конфігурації
Створіть файл конфігурації <em>~/garage/garage.toml</em>
:
metadata_dir = "/var/lib/garage/meta"
data_dir = "/var/lib/garage/data"
replication_mode = "none"
rpc_bind_addr = "[::]:3901"
rpc_public_addr = "127.0.0.1:3901"
rpc_secret = "1799bccfd7411eddcf9ebd316bc1f5287ad12a68094e1c6ac6abde7e6feae1ec"
[s3_api]
s3_region = "garage"
api_bind_addr = "[::]:3900"
root_domain = ".s3.garage.localhost"
[s3_web]
bind_addr = "[::]:3902"
root_domain = ".web.garage.localhost"
index = "index.html"
[admin]
api_bind_addr = "[::]:3903"
Важливо: Згенеруйте власний rpc_secret
за допомогою:
openssl rand -hex 32
Крок 3: Запуск контейнера Garage
Запустіть контейнер Garage наступною командою:
docker run -d \\
--name garage \\
-p 3900:3900 \\
-p 3901:3901 \\
-p 3902:3902 \\
-p 3903:3903 \\
-v ~/garage/garage.toml:/etc/garage.toml \\
-v ~/garage/data:/var/lib/garage/data \\
-v ~/garage/meta:/var/lib/garage/meta \\
dxflrs/garage:v0.9.4 \\
server
Крок 4: Ініціалізація кластера
Перевірте ідентифікатор вузла:
docker exec garage garage node id
Вивід покаже ваш ідентифікатор вузла. Використайте його для налаштування кластера:
docker exec garage garage layout assign -z dc1 -c 1G<br>docker exec garage garage layout show<br>docker exec garage garage layout apply --version 1
Крок 5: Створення облікових даних доступу
Створіть пару ключів для доступу S3:
docker exec garage garage key create my-key
Збережіть показані Access Key ID та Secret Access Key.
Крок 6: Створення бакета
Створіть ваш перший бакет:
docker exec garage garage bucket create my-bucket
Надайте вашому ключу доступ до бакета:
docker exec garage garage bucket allow --read --write my-bucket --key my-key
Крок 7: Тестування налаштування
Встановіть AWS CLI, якщо ви ще цього не зробили, потім налаштуйте його:
aws configure set aws_access_key_id<br>aws configure set aws_secret_access_key
Завантажте тестовий файл:
echo "Привіт Garage!" > test.txt
aws s3 cp test.txt s3://my-bucket/ --endpoint-url http://localhost:3900
Переглянути вміст бакета:
aws s3 ls s3://my-bucket/ --endpoint-url http://localhost:3900
Конфігурація Docker Compose
Для зручнішого управління можна використовувати Docker Compose. Створіть файл docker-compose.yml
:
version: '3.8'
services:
garage:
image: dxflrs/garage:v0.9.4
container_name: garage
command: server
ports:
- "3900:3900"
- "3901:3901"
- "3902:3902"
- "3903:3903"
volumes:
- ./garage.toml:/etc/garage.toml
- ./data:/var/lib/garage/data
- ./meta:/var/lib/garage/meta
restart: unless-stopped
Запустіть сервіс:
docker-compose up -d
Висновок
Garage надає практичну, легку альтернативу комерційним рішенням для об’єктного зберігання. Розгортання на базі Docker полегшує тестування та роботу в різних середовищах. Незалежно від того, чи ви будуєте домашню лабораторію, налаштовуєте сховище для резервного копіювання чи експериментуєте з розподіленими системами, Garage пропонує привабливе поєднання простоти та можливостей.
Для продакшн-розгортань розгляньте можливість запуску кількох вузлів для надмірності та ознайомтесь з офіційною документацією для розширених параметрів конфігурації.