2010-07-29 15 views
9

Estoy buscando una alternativa S3 que se basa en una API RESTful, por lo que simplemente puedo insertar enlaces como http://datastore1.example.com/ID y se pueden descargar directamente. He examinado RIAK y Bitcache. Ambos parecen muy agradables: http://bitcache.org/api/rest pero tienen un problema. Quiero ser el único que puede subir datos. De lo contrario, cualquiera podría usar nuestro almacén de datos enviando una Solicitud PUT.Self hosted S3 alternativa

¿Hay alguna manera de configurar RIAK para que todos puedan "OBTENER" pero no todos pueden PONER o ELIMINAR archivos excepto yo? ¿Hay otros servicios que puedas recomendar?

Y como complemento Bounty :)

Requisitos:

  • API REST
  • clientes obtener sólo
  • ejecuta en Debian

muy bueno tener:

  • automático distribuye

EDIT: Para aclarar que no quiero ninguna conexión con S3 Tengo grandes servidores simplemente por ahí con discos duros y muy buena conexión a la red (3 Gbps) que no necesito S3 ..

Respuesta

3

Según la información que ha proporcionado, sugeriría Eucalyptus (http://open.eucalyptus.com/). Tienen un sistema de almacenamiento compatible S3.

3

El almacén de objetos distribuidos confiable RADOS, que es parte del sistema de archivos ceph, proporciona un S3 gateway.

Usamos el sistema de almacenamiento Eucalyptus, Walrus, pero tuvimos problemas confiables.

+1

De la página principal de Ceph: "Ceph está bajo un gran desarrollo y aún no es adecuado para ningún otro uso que no sea la evaluación comparativa y la revisión". ¿Estás diciendo que es más estable que el eucalipto? – Vnuk

+1

Ceph's RADOS, Gateway y RBD están listos para producción. cephFS todavía no existe, aunque parece que algunas configuraciones se están utilizando en grandes sitios de producción. (http://ceph.com/docs/master/faq/#is-ceph-production-quality) – Javier

6

Los autores de Riak recommend para poner un proxy HTTP en frente de Riak con el fin de proporcionar control de acceso. Puede elegir cualquier servidor proxy que desee (como nginx o Apache) y cualquier política de control de acceso que desee (como autorización basada en direcciones IP, autenticación HTTP básica o cookies, suponiendo que su servidor proxy pueda manejarla). Por ejemplo, en nginx, puede especificar limit_except (del mismo modo LimitExcept en Apache).

Como alternativa, también puede agregar control de acceso a Riak directamente. Se basa en Webmachine, por lo que un enfoque sería implementar is_authorized.

1

Si está buscando un sistema de archivos distribuido, ¿por qué no prueba hadoop hdfs?

http://hadoop.apache.org/common/docs/r0.17.0/hdfs_design.html

Hay una API de Java disponibles:

http://hadoop.apache.org/common/docs/r0.20.2/api/org/apache/hadoop/fs/FileSystem.html

En la actualidad, la seguridad es un problema - al menos si tiene acceso a un terminal:

http://developer.yahoo.com/hadoop/tutorial/module2.html#perms

Pero podría implementar hdfs, poner un servidor de aplicaciones (usando la API de Java) en frente a ella (GlassFish) y utilizar Jersey para construir la API REST:

http://jersey.java.net/

Si usted está interesado en construir una cosa así, por favor hágamelo saber, porque puedo ser la construcción de algo parecido bastante pronto.

Puede utilizar la distribución de Cloudera Hadoop para hacer la vida un poco más fácil:

http://www.cloudera.com/hadoop/

Greetz, J.

0

supongo que usted debe hacer su pregunta en serverfault.com, ya que está más relacionado con el sistema. De todos modos, puedo sugerirle mogileFS que se escala muy bien: http://danga.com/mogilefs/.

0

WebDAV es lo más RESTANTE posible y hay muchas implementaciones que se adaptan a diversos usos. En cualquier caso, si es REST y es HTTP, entonces cualquier esquema de autenticación que soporte el servidor debería permitirle controlar quién puede cargar.

0

Puede desarrollarlo usted mismo como una aplicación web o como parte de su aplicación existente. Consumirá solicitudes HTTP, recuperará su componente URI, lo convertirá en nombre de objeto S3 y usará getObject() para obtener su contenido (utilizando uno de los SDK S3 disponibles, por ejemplo AWS Java SDK).

Puede probar una solución alojada - s3auth.com (soy desarrollador). Es un proyecto de código abierto, y puede ver cómo se implementa este mecanismo internamente en one of its core classes. El servicio procesa la solicitud HTTP y luego la vuelve a traducir al esquema de autenticación interna de Amazon S3.