Solo estaba verificando el estado de mis volúmenes de glusterfs y tengo uno con entradas de cerebro dividido que no tienen ruta:
# gluster volume heal private_uploads info
Brick server01:/var/lib/glusterfs/brick01/uploads/
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
Number of entries: 2
Brick server02:/var/lib/glusterfs/brick01/uploads/
<gfid:42d62418-1be9-4f96-96c4-268230316869> - Is in split-brain
<gfid:4c0edafb-0c28-427c-a162-e530280b3396> - Is in split-brain
Number of entries: 2
Qué significa eso? ¿Cómo lo soluciono?
Estoy ejecutando GlusterFS 3.5.9:
# gluster --version
glusterfs 3.5.9 built on Mar 28 2016 07:10:17
Repository revision: git://git.gluster.com/glusterfs.git
Respuestas:
¿Qué es el cerebro dividido?
Como se menciona en la Documentación oficial sobre la administración de Split-Brain proporcionada por RedHat, split-brain es un estado en el que las inconsistencias de datos o disponibilidad que se originan del mantenimiento de dos conjuntos de datos separados con superposición en el alcance, ya sea debido a servidores en un diseño de red, o una condición de falla basada en servidores que no se comunican y sincronizan sus datos entre sí. Y es un término aplicable para replicar la configuración.
Tenga en cuenta que se dice "una condición de falla basada en servidores que no se comunican y sincronizan sus datos entre sí" , debido a cualquier probabilidad, pero eso no significa que sus nodos puedan perder la conexión. El par aún puede estar en clúster y conectado.
Tipos de cerebro dividido:
Tenemos tres tipos diferentes de cerebro dividido, y hasta donde puedo ver, el tuyo es el cerebro dividido de entrada. Para explicar tres tipos de cerebro dividido:
Datos de cerebro dividido: el contenido del archivo bajo cerebro dividido es diferente en diferentes pares de réplicas y no es posible la curación automática.
Metadata split-brain:, Los metadatos de los archivos (ejemplo, atributo extendido definido por el usuario) son diferentes y no es posible la curación automática.
Entrada de cerebro dividido: sucede cuando un archivo tiene diferentes gfids en cada par de réplicas.
¿Qué es el GFID?
El identificador de archivo interno (GFID) de GlusterFS es un uuid que es único para cada archivo en todo el clúster. Esto es análogo al número de inodo en un sistema de archivos normal. El GFID de un archivo se almacena en su xattr llamado
trusted.gfid
. Para encontrar la ruta desde GFID, le recomiendo que lea este artículo oficial proporcionado por GlusterFS.¿Cómo resolver la entrada de cerebro dividido?
Existen varios métodos para evitar que se produzca un cerebro dividido, pero para resolverlo, se deben eliminar los archivos de enlace gfid correspondientes. Los archivos gfid-link están presentes en el directorio .glusterfs en el directorio de nivel superior del ladrillo. Por cierto, tenga en cuenta que antes de eliminar los enlaces gfid, debe asegurarse de que no haya enlaces duros a los archivos presentes en ese ladrillo. Si existen enlaces duros, también debe eliminarlos. Luego puede usar el proceso de autocuración ejecutando los siguientes comandos.
Mientras tanto, para ver la lista de archivos en un volumen que están en un estado de cerebro dividido, puede usar:
También debe tener en cuenta que para los volúmenes replicados, cuando un ladrillo se desconecta y vuelve a estar en línea, se requiere una reparación automática para volver a sincronizar todas las réplicas.
Para verificar el estado de curación de volúmenes y archivos puede usar:
Como está utilizando la versión 3.5, no tiene curación automática. Entonces, después de seguir los pasos mencionados anteriormente, debe activar la autocuración. Para hacerlo:
Solo en los archivos que requieren curación:
# gluster volume heal VOLNAME
En todos los archivos:
# gluster volume heal VOLNAME full
Espero que esto te ayude a solucionar tu problema. Por favor lea los documentos oficiales para más información. Salud.
fuente
Creo que el documento es lo suficientemente claro, incluso te dio un ejemplo similar.
Y para los comandos de curación de Gluesterfs como
Entonces no necesitas preocuparte por eso.
Y como convertir GFID a ruta dice:
este script puede decirle qué nombre de archivo pertenece a qué gfid, pero ocurrió la división del cerebro, puede que no tenga un nombre de archivo.
Está ejecutando 3.5 y no tiene un cmd de curación semiautomático, por lo que es posible que deba solucionar el conflicto usted mismo manualmente, lo que normalmente significa decidir qué archivo gfid debe eliminarse.
fuente
La resolución del cerebro dividido se puede encontrar aquí . En caso de que no sirva de mucho, el manual de instrucciones aquí debería hacer el trabajo. Para el caso, veo que el artículo también es útil.
Cómo evitar el cerebro dividido.
La protección contra particiones de red se realiza mediante un algoritmo de votación de quórum. En caso de que falle un host, o haya un escenario de cerebro dividido en el que los nodos continúen ejecutándose pero ya no puedan comunicarse entre sí, el nodo o nodos restantes en la agrupación se apresuran a colocar una reserva SCSI en la unidad testigo. En el caso de un cerebro dividido, el testigo ayudará a decidir cuál de los anfitriones que tiene una copia de los datos debe asumir el control.
Algunos ejemplos.
VMware VSAN permite ejecutar un clúster de 2 nodos con la unidad testigo ejecutándose en un tercer host o en la nube. Fuente
StarWind Virtual SAN se ejecuta en una configuración de solo 2 nodos utilizando el servicio Microsoft Failover Cluster, que también contiene un mecanismo de votación de quórum para evitar el problema de cerebro dividido. Fuente
Para ambos, la red Heartbeat se utiliza para servir / monitorear la comunicación entre nodos y quórum. Para evitar un cerebro dividido, veo que es obligatorio usar canales Heartbeat redundantes.
fuente
El cerebro dividido ocurre cuando dos nodos de un grupo están desconectados. Cada nodo piensa que el otro no está funcionando.
Para solucionarlo, debe comprender por qué sus dos nodos ya no se hablan entre sí.
fuente