S3 кластер на Garage, как прикрутить HAProxy

Опубликовано 28 апр. 2026 г.

Такс, S3 кластер на Garage в предыдущем посте мы с тобой сообразили, самое время накрутить обвесов и сделать всё по взрослому. Как ты любишь — без хуйни.

Нежных сразу — нахуй, остальным велком.

Для начала установим балансировщик. То есть входная точка у кластер всегда будет одна, а дальше балансировщик будет раскидывать запросы по 3м нашим серверам в кластере. Если одна из нод пойдет по пизде, балансировщик это прозрачно разрулит и отдаст тебе файл в любом случае, даже без правки конфигов.

 читать первым в телеграм    читать первым в макс

Проверяем наш кластер:

docker exec -it garage-garage-1 /garage status

Работает. Дальше берем еще один сервер, который будет выступать балансировщиком. Для теста я создам в Selectel нищую виртуалочку и впихарю на нее haproxy.

Устанавливаем haproxy:

apt install haproxy

Домен для кластера я буду использовать s3.linuxfactory.ru, соответственно во всяких rclone нужно будет прописать его в параметре endpoint.

Правим конфиг /etc/haproxy/haproxy.cfg:

global
    log /dev/log local0
    maxconn 4096

defaults
    mode tcp
    timeout connect 5s
    timeout client  1m
    timeout server  1m
    option http-server-close  
	timeout http-request 10s  
	timeout queue 1m

frontend garage_front
    bind *:443 ssl crt /etc/ssl/garage.pem
    option http-buffer-request
    default_backend garage_back

backend garage_back
    balance roundrobin

    server node1 95.123.123.116:3900 check
    server node2 152.44.71.205:3900 check
    server node3 145.83.116.20:3900 check

Проверяем валидность конфиги:

haproxy -c -f /etc/haproxy/haproxy.cfg
Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Приучи себя всегда это делать, будь то nginx либо что-то другое. Однажды это спасет твою жопу от пенетрации.

Ага, хуй там плавал. Давай создадим SSL сертификат. Я конечно предпочитаю angie, чтобы он сам это сделал, но у нас haproxy, поэтому придется немного пострадать.

apt update
apt install certbot -y
systemctl stop haproxy
certbot certonly --standalone -d s3.linuxfactory.ru
cat /etc/letsencrypt/live/s3.linuxfactory.ru/fullchain.pem \
    /etc/letsencrypt/live/s3.linuxfactory.ru/privkey.pem \
    > /etc/ssl/garage.pem
chmod 600 /etc/ssl/garage.pem

По итогу получаем такую картинку:

Ну вроде всё хорошо. Еще раз проверяем валидность конфига и получаем заветное Configuration file is valid. Можем продолжать наши пиздострадания.

systemctl start haproxy

Открываем в браузере https://s3.linuxfactory.ru и видим:

Супер, до «Гаража» достучались, балансировщик автоматически разрулил нам всё и отправил запрос на какой-то из 3х серверов.

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
Да, не забываем закинуть в крон, автоматическое продление SSL сертификата, если однажды не хочешь получить тыкву:
0 3 * * * certbot renew --quiet --deploy-hook "cat /etc/letsencrypt/live/s3.linuxfactory.ru/fullchain.pem /etc/letsencrypt/live/s3.linuxfactory.ru/privkey.pem > /etc/ssl/garage.pem && systemctl reload haproxy"

Теперь можем поправить конфиг rclone и проверить:

[garage]
type = s3
provider = Other
access_key_id = GK5eba63ef8f5
secret_access_key = a0333b9e7a9d61f595d
region = garage
endpoint = https://s3.linuxfactory.ru

Проверяем доступность:

Есть контакт. S3 отдает данные и мы видим наш файл, который вчера загружали. Отлично! Ну а теперь самое время всё к хуям сломать и посмотреть что будет. На одной из нод запускаем:

cd /opt/garage
docker compose down

Проверяем статус кластера:

docker exec -it garage-garage-1 /garage status

Развалилось! Снова пиздуем в rclone и проверяем:

rclone lsd garage:
rclone ls garage:

И ничего криминального! Кластер по-прежнему работает, балансировщик успешно разрулил эту ситуацию и перенаправляет наши запросы на 2 других живых сервера. Файлы в порядке и у тебя к ним есть доступ. Что и требовалось доказать.

Поздравляю, ты только что настроил отказоустойчивый доступ к своему личному S3 кластеру, да еще и домен с SSL прикрутил. Ну мёёёдддд!

Что дальше? А дальше будем прикручивать морду, но это уже чуть позже, возможно и завтра. Развлекайся.

Комментарии