Архитектура хранилища объектов

Архитектура хранилища объектов#

Хранилище объектных данных реализовано с использованием следующих служб:

  • Сервер объектов (Object Server, или OS). Хранит данные объектов. Эти данные упаковываются в специальные контейнеры для достижения высокой производительности. Контейнеры хранятся в блочном хранилище со встроенной высокой доступностью.

  • Сервер имен (Name Server, или NS). Хранит метаданные объектов. Метаданные включают в себя имя объекта, его размер, ACL (список управления доступом), расположение, владельца, теги и т. п. Сервер имен хранит собственные данные в блочном хранилище со встроенной высокой доступностью.

  • Шлюз S3 (Gateway, или GW). Представляет собой прокси-сервер, расположенный между службами хранилища объектов и конечными пользователями. Он получает и обрабатывает запросы протокола Amazon S3, а также выполняет аутентификацию пользователей S3 и проверку ACL. Шлюз S3 использует веб-сервер NGINX для внешних подключений и не имеет собственных данных (то есть работает без сохранения состояния).

  • Сервер управления S3 (Configuration Daemon, или CFGD). Хранит данные о конфигурации кластера S3 и обеспечивает централизованное управление конфигурацией. Для обеспечения высокой доступности предусмотрена возможность организации конфигурации из нескольких синхронных серверов управления, реплицирующих между собой данные. Консенсус серверов управления достигается с помощью алгоритма Paxos.

  • Cервер политики корзин (Account Control, или ACC). Обеспечивает выполнение правил жизненного цикла и обеспечения безопасности, заданных в политиках корзин.

Каждая служба должна быть развернута на нескольких узлах кластера S3 для обеспечения масштабируемости и высокой доступности.

Службы OS, NS и ACC — это службы с сохранением состояния, для которых обеспечивается режим высокой доступности: cистема автоматически поддерживает эти службы в активном состоянии, пока в кластере S3 работает хотя бы одна машина. При отказе службы NS, OS или ACC весь кластер S3 не сможет правильно работать.

Количество экземпляров служб можно задать при развертывании кластера S3. При последующем добавлении или удалении узлов службы равномерно распределяются по серверам кластера S3. В дальнейшем количество служб может быть увеличено добавлением дополнительных служб (только для служб GW) или делением имеющихся служб.

image1