Кто-нибудь сталкивался с системой хранения объектов, почти на 100% совместимой с Amazon S3 RESTful API?
То, что мне нужно, - это слой, который находится поверх любой файловой системы (предпочтительно POSIX), которая предоставляет RESTful API в стиле Amazon S3 для хранения (PUT
), получить (GET
), stat (HEAD
) и удалите (DELETE
) с приличной аутентификацией.
Также приветствуются коммерческие проекты / идеи.
НОТА:
Я пока пробовал Эвкалипт и Кучевые облака; из которых Eucalyptus, кажется, слепо называет себя S3-совместимым. Ответные XML-документы совершенно несовместимы, а в некоторых местах они неоднородны и не содержат никаких XML-документов. Cumulus удалось сохранить очень похожие ответные документы, но, похоже, забыл о целостности данных!
Позвольте мне объяснить последнюю часть: и Eucalyptus, и Cumulus не поддерживают проверку целостности, которую предлагает Amazon S3. Что вы можете сделать с S3, так это то, что вы можете предоставить Base64 (MD5 (FILE)) вместе с запросом PUT, который затем проверяется S3, прежде чем он ответит успешно. Эвкалипт и кучевые облака этого не поддерживают. С помощью Eucalyptus мы можем хотя бы обойти это, проверив MD5, указанный в ответном документе (не S3-совместимое поведение). В Cumulus это невозможно, так как он ничем не отвечает (например, S3). Кумулус еще больше усугубляет то, что не выдаёт ETag в HEAD
запрос.
В конце концов, мне пришлось продвигаться вперед с Eucalyptus Walrus. Даже несмотря на то, что в итоге я обнаружил некоторые фундаментальные проблемы, у всех были возможные обходные пути.
Спасибо всем за ваш ценный вклад!
Swift является механизмом хранения объектов OpenStack, а с выпуск Bexar в феврале 2011 г., он утверждает, что это экспериментальное промежуточное ПО, совместимое с S3. Поскольку OpenStack привлекает к себе много внимания (например, Canonical переводит Ubuntu на него вместо Eucalyptus в октябре этого года), возможно, стоит взглянуть на него.
Ceph от Newdream имеет S3-совместимый шлюз fastcgi, который использует ту же систему хранения объектов, что и сама файловая система Ceph. (http://ceph.newdream.net/wiki/RADOS_Gateway) Еще не готово к производству, но регулярно обновляется.
Я обнаружил, что хранилище объектов Openstack более надежно в моем тестировании, хотя оно не совместимо с S3 с библиотеками s3, которые я использовал, или с собственным java-клиентом rackspace для их службы хранения облачных файлов (который использует их собственную версию swift). Хотя у меня работал проект jclouds, который поддерживает как s3, так и Swift.
[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я работаю на Scality]
Amazon очень активно работает над своими продуктами AWS и очень часто вносит дополнения и изменения / улучшения в свой API. Тогда трудно найти почти 100% совместимый продукт (особенно в коммерческих продуктах, вероятно, продукты OSS будут более реагировать на любые изменения). Многие поставщики объектных / облачных хранилищ в течение некоторого времени игрались со своими собственными протоколами (Atmos, DDN, даже OpenStack Swift ...), но в основном все они отказались от идеи, что их собственный протокол станет столь же широко используемым, как S3. Все они (почти?) Анонсируют S3-совместимый интерфейс сейчас или в ближайшие месяцы. В конце концов, это промышленный стандарт де-факто. Единственным оставшимся соперником может быть CDMI только из-за его стандартизованного характера и того факта, что он исходит от SNIA, некоммерческой организации, не связанной с поставщиками. Но очевидно, что о нем не так много говорят и о S3.
Существует несколько вариантов интерфейса, совместимого с S3, например Mezeo, упомянутые вами (Eucalyptus и Cumulus), OpenStack (хотя, я думаю, он еще не вышел). Масштабность - еще одна из них.
Реализация Scality S3 (называемая RS2 - REST Storage Service) очень близка к S3 в том, что наши запросы / ответы согласуются с тем, что вы получите от S3. Некоторые функции, связанные с инфраструктурой S3, отсутствуют по очевидным причинам (например, выбор региона). Но необходимые команды есть: GET / PUT / DELETE объект, создание корзины и листинг; и реагирует так же, как S3.
Я бы просто добавил, чтобы ответить на вашу вторую проблему, что продукт Scality, RING, представляет собой платформу хранения программных объектов, которая решает проблемы целостности данных, о которых вы говорите, путем подсчета контрольных сумм и выполнения фоновых проверок целостности всех объектов, хранящихся в RING. Сохранение объекта - это, по сути, транзакционный запрос, и как только объект был заявлен как «успешно сохраненный», он навсегда останется с постоянными проверками целостности (например, при каждом чтении).
Не буду вдаваться в подробности. вы можете зайти на наш веб-сайт, чтобы понять, как мы избавляем администраторов хранилища от обычных кошмаров, связанных с управлением данными, и позволяем им спать по ночам, зная, что их данные доступны. Всегда. :)
С уважением, Марк Виллемад @mastachand
Вы также можете посмотреть Cloud Foundry vBlob: https://github.com/cloudfoundry/vblob
Это приложение node.js (с оболочкой Ruby для интеграции CF), которое реализует значительную часть протокола S3 поверх любой файловой системы, которую виртуальная машина может «видеть».
Старый / отвеченный вопрос, но https://github.com/basho/riak_cs был только что открыт в https://github.com/basho/riak_cs : "Riak CS - это система хранения объектов, построенная на основе Riak. Она упрощает хранение больших объектов в Riak и представляет S3-совместимый интерфейс. Она также предоставляет функции многопользовательского режима, такие как учетные записи пользователей, аутентификация, механизмы контроля доступа и отчеты об использовании аккаунта ".
Я уверен, что у вас есть так много вариантов выше, но вы должны проверить OpenStack Swift, это хранилище объектов OpenSource, а также поддерживает API-интерфейс, совместимый с S3. Он используется в качестве решения для хранения объектов для Rackspace, Hpcloud Korea Telecom и многих других.
Документация http://docs.openstack.org/developer/swift/associated_projects.html Swift3 https://github.com/fujita/swift3 Промежуточное ПО Swift3 для OpenStack Swift, обеспечивающее доступ к OpenStack Swift через API Amazon S3.
Надеюсь, поможет.
[ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: я работаю в Cloudian]
Программное обеспечение объектного хранилища Cloudian HyperStore на 100% совместимо с API Amazon S3. В нем реализованы все API-интерфейсы S3, включая коды ошибок и все функции Amazon S3.
Чтобы перечислить некоторые из них, Cloudian HyperStore поддерживает многокомпонентную загрузку, управление версиями объектов, S3-совместимый ACL, автоматическое многоуровневое использование S3 и Glacier, S3 Cross-Origin Resource Sharing (CORS), тип кодирования S3, ограничение местоположения и многое другое.
И да, с Cloudian вы можете предоставить Base64 (MD5 (FILE)) вместе с запросом PUT, который затем проверяется, прежде чем ответить успешно.
Для получения дополнительной информации проверьте это сообщение в блоге http://www.cloudian.com/blog/?p=64 и веб-сайт Cloudian по адресу http://www.cloudian.com/products/cloudian-hyperstore.php
Вы проверили s3fs? В нем нет нужной вам проверки MD5 ( http://code.google.com/p/s3fs/issues/detail?id=37&q=md5 ), но, полагаю, реализовать это будет несложно. Следует отметить, что в конечном итоге это согласуется.