No final, eu tive que seguir em frente com o Eucalyptus Walrus. Embora eu tenha acabado encontrando alguns problemas fundamentais, todos eles tinham soluções possíveis.
Obrigado a todos pelo seu valioso contributo!
Alguém se deparou com um sistema de armazenamento de objetos compatível com a API RESTful do Amazon S3 próximo a 100%?
O que eu estou procurando é uma camada sobre qualquer sistema de arquivos (preferencialmente um POSIX) que forneça a API RESTful estilo Amazon S3 para armazenar ( PUT
), recuperar ( GET
), stat ( HEAD
) e delete ( DELETE
), com autenticação decente.
Projetos / ideias comerciais também são bem-vindos.
NOTA:
Até agora, tentei e Cumulus ; dos quais o eucalipto parece estar se chamando cegamente de compatível com S3. Os documentos XML de resposta não são de todo compatíveis e são irregulares em determinados locais sem nenhum documento XML. O Cumulus conseguiu manter os documentos de resposta bastante semelhantes, mas parece ter esquecido a integridade dos dados!
Deixe-me explicar a última parte: tanto o Eucalyptus quanto o Cumulus não têm suporte para a verificação de integridade oferecida pelo Amazon S3. O que você pode fazer com o S3 é que você pode fornecer uma Base64 (MD5 (FILE)) juntamente com a solicitação PUT, que é então verificada pelo S3 antes de responder com sucesso. Eucalipto e Cumulus não suportam isso. Com o Eucalyptus, podemos pelo menos contornar isso verificando o MD5 fornecido no documento de resposta (não o comportamento compatível com S3). Em Cumulus, isso não é possível, pois não responde com nada (como S3). Ele fica ainda pior com o Cumulus, por não fornecer um ETag na solicitação HEAD
.
Swift é o mecanismo de armazenamento de objetos do OpenStack, e a partir de o lançamento do Bexar em fevereiro de 2011 , ele afirma um middleware compatível com S3 experimental. Como o OpenStack está recebendo muita atenção (Canonical está transferindo o Ubuntu para o Eucalyptus em outubro deste ano, por exemplo), pode valer a pena dar uma olhada.
[AVISO LEGAL: Eu trabalho no Scality]
A Amazon permanece muito ativa em seus produtos da AWS e faz acréscimos e alterações / aprimoramentos em suas API com muita frequência. É então difícil encontrar um produto quase 100% compatível (especialmente em produtos comerciais, provavelmente produtos OSS seriam mais reativos a quaisquer alterações). Muitos fornecedores de armazenamento de objetos / nuvem têm andado por aí com seus próprios protocolos há algum tempo (Atmos, DDN, até mesmo o Swift do OpenStack), mas eles praticamente abandonaram a idéia de seu próprio protocolo se tornar tão amplamente usado quanto o S3. Eles estão todos (quase?) Anunciando uma interface compatível com S3 agora ou nos próximos meses. Afinal de contas, é o padrão de fato da indústria. O único concorrente que resta pode ser o CDMI apenas por causa de sua natureza padronizada e o fato de vir da SNIA, uma organização sem fins lucrativos que não é fornecedora. Mas claramente não está sendo adotado ou falado tanto quanto S3.
Existem algumas opções no que diz respeito à interface compatível com S3, como o Mezeo, as que você mencionou (Eucalyptus e Cumulus), OpenStack (embora ainda não tenha saído). Scality é outro desses.
A implementação do S3 da Scality (chamada RS2 - Serviço de Armazenamento REST) está muito próxima do S3, pois nossas solicitações / respostas são consistentes com o que você obteria do S3. Algumas das funcionalidades ligadas à infraestrutura do S3 não estão presentes por razões óbvias (seleção de região, por exemplo). Mas os comandos necessários estão lá: GET / PUT / DELETE um objeto, criação e listagem de buckets; e reagir como S3 faria.
Gostaria apenas de acrescentar, para responder ao seu segundo problema, que o RING, produto da Scality, é uma plataforma de armazenamento de objetos de software que resolve os problemas de integridade de dados a que você está se referindo verificando e verificando a integridade de todos os objetos armazenados no ANEL. Armazenar um objeto é basicamente uma consulta transacional, e uma vez que um objeto tenha sido declarado como "armazenado com sucesso", ele sempre será, com verificações constantes de integridade (em todas as leituras, por exemplo).
Eu não vou entrar em detalhes. você pode acessar nosso site para entender como podemos aliviar os administradores de armazenamento dos pesadelos comuns do gerenciamento de dados e deixá-los dormir à noite sabendo que seus dados estão disponíveis. Sempre. :)
Melhor Marc Villemade @mastachand
O Ceph da Newdream tem um gateway fastcgi compatível com S3 que usa o mesmo sistema de armazenamento de objetos que o próprio Ceph Filesystem. ( link ) Ainda não está pronto para produção, mas fazendo atualizações regulares.
Eu achei o repositório de objetos do Openstack mais confiável em meus testes, mas não compatível com S3 com as bibliotecas s3 que usei ou com o próprio cliente java da rackspace para seu serviço de armazenamento cloudfiles (que usa sua própria versão do swift). Embora o projeto jclouds, que tem suporte ao s3 e ao Swift, funcionou para mim.
Você também pode ver o Cloud Foundry vBlob: link
É um aplicativo node.js (com o wrapper do Ruby para integração ao CF) que implementa um trecho justo do protocolo S3 sobre qualquer sistema de arquivos que a VM possa "ver".
A pergunta antiga / respondida, mas o link era apenas de código aberto em link :" O Riak CS é um sistema de armazenamento de objetos construído sobre o Riak. Ele facilita o armazenamento de objetos grandes no Riak e apresenta uma interface compatível com S3. Ele também fornece recursos de multilocação como o usuário contas, autenticação, mecanismos de controle de acesso e relatórios de uso por conta. "
Tenho certeza de que você tem muitas opções acima, mas você deve verificar o OpenStack Swift, é um OpenSource Object Storage e também suporta API compatível com S3. É usado como solução de armazenamento de objetos para a Rackspace, Hpcloud Korea Telecom e muitos outros.
Documentação link Swift3 link Swift3 Middleware para o OpenStack Swift, permitindo acesso ao OpenStack swift por meio da API do Amazon S3.
Espero que ajude.
[AVISO LEGAL: Eu trabalho para o Cloudian]
O software de armazenamento de objetos Cloudian HyperStore é 100% compatível com Amazon S3 API. Ele implementa todas as APIs do S3 até os códigos de erro e todos os recursos que o Amazon S3 possui.
Para listar alguns, o Cloudian HyperStore suporta upload em várias partes, controle de versão de objeto, ACL compatível com S3, hierarquização automática para S3 e Glacier, compartilhamento de recursos de origem cruzada (CORS) S3, tipo de codificação S3, restrição de local e muito mais .
E sim, com o Cloudian, você pode fornecer um Base64 (MD5 (FILE)) junto com a solicitação PUT, que será verificada antes de responder com êxito.
Para mais informações, acesse este link e o site do Cloudian em link