¿Usa el nodo principal ZFS como servidor de base de datos?

9

Estoy usando un NAS de doble cabezal con respaldo ZFS para almacenamiento compartido de clúster de alta disponibilidad, basado en la arquitectura recomendada de Nexenta como se ve aquí:

ingrese la descripción de la imagen aquí

Los discos en 1 JBOD almacenarán los archivos de la base de datos para una única base de datos Postgres de 4 TB y los discos en el otro JBOD almacenan 20 TB de archivos planos binarios crudos grandes (resultados del clúster para simulaciones de colisión de objetos estelares grandes). En otras palabras, el JBOD que respalda los archivos de Postgres manejará principalmente las cargas de trabajo aleatorias, mientras que el JBOD que respalda los resultados de la simulación manejará principalmente las cargas de trabajo en serie. Ambos nodos principales tienen 256 GB de memoria y 16 núcleos. El clúster tiene aproximadamente 200 núcleos, cada uno de los cuales mantiene una sesión de Postgres, por lo que espero unas 200 sesiones simultáneas.

Me pregunto si es conveniente en mi configuración que los nodos principales de ZFS actúen simultáneamente como un par duplicado de servidores de bases de datos Postgres para mi clúster. Los únicos inconvenientes que puedo ver son:

  1. Menos flexibilidad para escalar mi infraestructura.
  2. Nivel de redundancia ligeramente inferior.
  3. Memoria limitada y recursos de CPU para Postgres.

Sin embargo, la ventaja que veo es que ZFS es bastante tonto acerca de la conmutación por error automática de todos modos y no tengo que gastar mucho trabajo para que cada servidor de base de datos de Postgres descubra si un nodo principal ha fallado, ya que fallará junto con el jefe nodo.

elleciel
fuente
PostgreSQL no se puede ejecutar en ninguna forma de modo de almacenamiento compartido. Los intentos de hacerlo fracasarán. Los intentos de eludir las protecciones para evitar que lo haga (como moverse / esconderse postmaster.pid) resultará en una grave corrupción de datos.
Craig Ringer
2
@CraigRinger Hm, ¿esto es contradictorio con wiki.postgresql.org/wiki/Shared_Storage ?
elleciel
1
Puede ejecutarlo si garantiza absolutamente que solo un administrador de correo puede acceder al directorio de datos al mismo tiempo. Un buen STONITH / esgrima es un requisito absoluto para evitar la corrupción de datos a gran escala. Personalmente no hay forma de que lo haga. Esto también elimina los beneficios de los que está hablando, descubrir cuál es el servidor principal / en vivo automáticamente, etc., porque debe administrar la conmutación por error.
Craig Ringer
2
He revisado la página wiki para que sea más clara; Gracias por mencionarlo.
Craig Ringer
1
Esto no tiene sentido. La solución de HA de Nexenta está aprovechando la agrupación RSF-1 . Parece que estás haciendo esto con ZFS en Linux sin la pieza RSF-1. Eso sí, ZFS en Linux realmente no tiene una opción de agrupación, por lo que la referencia de Nexenta no se aplica. ¿Qué tienes que ganar al tener dos nodos principales?
ewwhite

Respuestas:

0

No puede tener dos instancias de Postgres ("clústeres" en la terminología de Postgres) que actúan sobre los mismos archivos físicos.

si desea rendimiento, el particionamiento puede ayudarlo (tenga dos instancias cada una con datos diferentes)

Si desea alta disponibilidad, la solución puede ser la conmutación por error con STONITH. debe asegurarse de que luego se repare el hardware, no intente abrir la base de datos mientras el segundo nodo la está sirviendo.

Jasen
fuente