Автор разработал собственный балансировщик для S3, чтобы исключить ручную правку конфигураций при миграции данных между кластерами Ceph. Ранее каждый кластер имел свои адреса и ключи, что усложняло обслуживание при смене оборудования или переездах ЦОД.
Балансировщик определяет целевой кластер, извлекая ключ доступа из заголовка или URL запроса. Маршруты хранятся в таблице, которую ведет панель управления CAM. При отсутствии ключа балансировщик запрашивает данные у CAM с ограничением до 20 запросов в секунду.
Для анонимных запросов и временных ключей STS маршрутизация идет по имени бакета. Балансировщик хранит снимки маршрутов в оперативной памяти и обновляет их через CAM каждые 5 секунд. При недоступности панели система продолжает работать на последнем сохраненном снимке.
Система поддерживает multisite-конфигурации, объединяя кластеры в группы. Балансировщик отслеживает отставание реплик и синхронизацию метаданных. Для работы с большими объектами используется потоковая передача с буфером, а таймауты для multipart-загрузок увеличены до 15 минут.
Отказоустойчивость обеспечивается развертыванием нескольких реплик балансировщика на разных узлах. Распределение трафика выполняет L4-балансировщик на базе Katran. При выходе узла из строя планировщик переносит реплику, а неисправные узлы автоматически исключаются из обработки запросов.






