Tenemos un clúster GlusterFS que utilizamos para nuestra función de procesamiento. Queremos integrar Windows en él, pero estamos teniendo problemas para descubrir cómo evitar el punto único de falla que es un servidor Samba que sirve un volumen GlusterFS.
Nuestro flujo de archivos funciona así:
- Los archivos son leídos por un nodo de procesamiento de Linux.
- Los archivos son procesados.
- Los resultados (pueden ser pequeños, pueden ser bastante grandes) se vuelven a escribir en el volumen de GlusterFS a medida que se realizan.
- Los resultados pueden escribirse en una base de datos, o pueden incluir varios archivos de varios tamaños.
- El nodo de procesamiento recoge otro trabajo de la cola y GOTO 1.
Gluster es excelente ya que proporciona un volumen distribuido, así como una replicación instantánea. ¡La resiliencia ante desastres es agradable! Nos gusta.
Sin embargo, como Windows no tiene un cliente GlusterFS nativo, necesitamos alguna forma para que nuestros nodos de procesamiento basados en Windows interactúen con el almacén de archivos de una manera resistente. La documentación de GlusterFS establece que la forma de proporcionar acceso a Windows es configurar un servidor Samba encima de un volumen GlusterFS montado. Eso llevaría a un flujo de archivos como este:
Eso me parece un solo punto de falla.
Una opción es agrupar Samba , pero parece estar basado en un código inestable en este momento y, por lo tanto, fuera de la ejecución.
Entonces estoy buscando otro método.
Algunos detalles clave sobre los tipos de datos que arrojamos:
- Los tamaños de archivo originales pueden ser desde unos pocos KB hasta decenas de GB.
- Los tamaños de archivo procesados pueden ser desde unos pocos KB a un GB o dos.
- Ciertos procesos, como excavar en un archivo comprimido como .zip o .tar, pueden causar MUCHAS escrituras adicionales a medida que los archivos contenidos se importan al almacén de archivos.
- Los recuentos de archivos pueden llegar a los 10 de millones.
Esta carga de trabajo no funciona con una configuración de Hadoop de "tamaño de unidad de trabajo estática". Del mismo modo, hemos evaluado los almacenes de objetos de estilo S3, pero los encontramos insuficientes.
Nuestra aplicación está escrita a medida en Ruby, y tenemos un entorno Cygwin en los nodos de Windows. Esto puede ayudarnos.
Una opción que estoy considerando es un servicio HTTP simple en un grupo de servidores que tienen montado el volumen GlusterFS. Dado que todo lo que estamos haciendo con Gluster es esencialmente operaciones GET / PUT, eso parece fácilmente transferible a un método de transferencia de archivos basado en HTTP. Póngalos detrás de un par de equilibrador de carga y los nodos de Windows pueden PONER HTTP al contenido de su pequeño corazón azul.
Lo que no sé es cómo se mantendría la coherencia de GlusterFS . La capa de proxy HTTP introduce suficiente latencia entre cuando el nodo de procesamiento informa que ha terminado con la escritura y cuando es realmente visible en el volumen de GlusterFS, que me preocupa que las etapas de procesamiento posteriores que intenten recoger el archivo no Encuéntralo. Estoy bastante seguro de que usar la direct-io-mode=enable
opción de montaje ayudará, pero no estoy seguro de si eso es suficiente . ¿Qué más debo hacer para mejorar la coherencia?
¿O debería seguir otro método por completo?
Como Tom señaló a continuación, NFS es otra opción. Entonces hice una prueba. Dado que los archivos mencionados anteriormente tienen nombres proporcionados por el cliente que debemos mantener, y pueden venir en cualquier idioma, necesitamos preservar los nombres de los archivos. Así que construí un directorio con estos archivos:
Cuando lo monte desde un sistema Server 2008 R2 con el Cliente NFS instalado, obtengo una lista de directorios como esta:
Claramente, Unicode no se conserva. Entonces, NFS no va a funcionar para mí.
fuente
ctdb
estable y listo para su uso en producción y la primera oración en el enlace que proporcionó invalida la segunda porque nunca se actualizó. Estaba planeando establecer esto, pero antes de llegar a esto cambié los trabajos a un entorno casi libre de ventanas.Respuestas:
Me gusta GlusterFS. En realidad, adoro GlusterFS. Siempre que pueda darle un ancho de banda dedicado, todo estará bien.
Una de las mejores cosas de GlusterFS es usarlo con NFS. Una de las cosas sorprendentes con las que he estado trabajando últimamente es NFS en Windows 7 y 2k8R2 .
Esto es lo que haría.
Agrupar Samba suena aterrador, e incluso si haces eso, Samba aún carece de la capacidad de comportarse de manera confiable en algunas redes de Windows (toda esa compatibilidad de dominio NT4, nunca parece ser capaz de superar eso).
Yo creo que debido a que cada nodo Gluster es en modo distribuido, replicado entonces, teóricamente, debería ser capaz de conectarse a cualquiera y permitir que la preocupación acerca de cómo mover sus datos alrededor. Como resultado, el latido del corazón debería ser lo que hace la redirección y controla con quién estás hablando.
En cuanto a su
Le sugiero que investigue el uso de XFS como sistema de archivos subyacente, ya que es bastante bueno con grandes sistemas de archivos y es compatible con GlusterFS
fuente
Tal vez pueda pensar en la solución HA ... use un LDAP para la autenticación (se puede replicar tantos servidores LDAP como desee) y coloque una IP para escuchar los servicios SMB.
Esta IP estará flotando en el servidor principal. Cuando esto está inactivo, Heartbeat puede iniciar servicios en el segundo servidor.
Estos servidores tendrán un punto de montaje para los glusterfs, y luego todos los datos estarán allí.
Es una posible solución y es muy fácil de administrar ...
fuente