Ir al contenido

Clúster

Un solo servidor de OPanel es, en sí mismo, un clúster de uno. Al sumar más servidores, todos comparten la misma base de datos de la plataforma, la misma autoridad de certificación del clúster y el mismo panel — ni clientes ni personal ven servidores individuales, solo capacidad.

Cada servidor asume uno o más roles:

Rol Qué ejecuta
control El controlador: API, interfaz web, motor de tareas, facturación, la autoridad de certificación del clúster
web Los sitios: nginx, PHP-FPM por sitio
edge HTTP/HTTPS/HTTP/3 público, TLS bajo demanda, el WAF
ssh La puerta de enlace SFTP/SSH de clientes
db Bases de datos MariaDB de los clientes
cache Un pool compartido de Valkey

opanel install le da al primer servidor todos los roles. Los servidores que sumás después se unen solo con los roles que necesitan.

Un servidor que se une comparte la base de datos de la plataforma, la CA del clúster y el panel del primer servidor; los sitios nuevos van al servidor que tenga lugar dentro del pool del plan.

  1. En un servidor de control existente, crea un token de unión de un solo uso para los roles del nuevo servidor:

    Ventana de terminal
    opanel cluster token create --roles web,edge --pool default --ttl 1h

    Esto imprime el comando opanel join exacto a correr, incluyendo la dirección del controlador y la huella digital de la CA del clúster.

  2. Si el nuevo servidor tiene el rol edge, haz que todos los edges compartan los mismos certificados TLS:

    Ventana de terminal
    opanel cluster share-certificates
  3. En el servidor nuevo, un Debian 13 recién instalado con el paquete opanel, ejecuta el comando impreso como root:

    Ventana de terminal
    opanel join --controller 10.0.0.1:7444 --token opj_... --ca-sha256 <fingerprint>

    El servidor verifica al controlador contra la huella digital fijada de la CA antes de enviar el token, así que el token es inútil para cualquiera que lo intercepte camino a un destino que no sea tu controlador. Después instala los paquetes que sus roles necesitan, genera sus propias claves, recibe sus certificados y arranca sus servicios.

    Flag Para qué sirve
    --node-name Nombre del servidor en el clúster (por defecto: su hostname).
    --node-address Dirección por la que otros servidores lo alcanzan (por defecto: la dirección que usó para llegar al controlador).
    --public-ipv4, --public-ipv6 Direcciones públicas de un servidor edge, para las verificaciones de DNS de dominios.
  4. Verificalo: opanel doctor en el servidor nuevo, y GET /api/v1/nodes desde la consola lo muestra en línea y sincronizado en alrededor de un minuto.

Dale a los servidores una red privada para el tráfico de clúster — no viaja cifrado entre los edges y los servidores web. Apuntá los dominios de los clientes a las direcciones públicas de cada servidor edge, o a un balanceador de carga delante de ellos.

Los planes apuntan a un pool de nodos (por ejemplo standard, premium-nvme, eu-west); los clientes nunca eligen un servidor específico. Al crear un sitio nuevo, OPanel filtra los servidores web candidatos (rol, estado, pertenencia al pool, versión de PHP, margen de disco y memoria) y puntúa el resto según el uso reciente de CPU, memoria y disco más la cantidad de sitios, eligiendo el mejor lugar. Las bases de datos se ubican en un pool de bases de datos de la misma manera.

Los operadores mueven sitios individuales, drenan un servidor antes de un mantenimiento y actúan sobre las sugerencias del rebalanceador — los clientes solo ven una nota en el registro de actividad del sitio.

  • Mover un sitio: POST /api/v1/sites/{id}/move. Los archivos se copian en segundo plano mientras el sitio sigue sirviendo desde su servidor actual; el corte hacia el nuevo servidor tarda segundos una vez que la copia está al día. El servidor anterior conserva una copia detenida durante una ventana de reversión (24 horas por defecto) por si necesitas volver rápido.
  • Poner en cuarentena un servidor (POST /api/v1/nodes/{id}/cordon): dejar de enviarle sitios nuevos; sus sitios actuales quedan donde están.
  • Drenar un servidor (POST /api/v1/nodes/{id}/drain): ponerlo en cuarentena y mover todos sus sitios afuera, de a pocos, antes de bajarlo por mantenimiento o retirarlo. GET /api/v1/nodes/{id}/drain muestra el progreso y marca cualquier sitio cuyo movimiento haya fallado repetidamente.
  • Sacar de cuarentena (POST /api/v1/nodes/{id}/uncordon): que el servidor vuelva a recibir sitios nuevos.

Cada 15 minutos, OPanel puntúa los servidores web de cada pool según CPU, memoria, disco y cantidad de sitios. Cuando un pool se mantiene desequilibrado durante tres evaluaciones seguidas, el rebalanceador propone mover algunos sitios chicos y activos del servidor más cargado al más tranquilo. Por defecto solo sugiere estos movimientos (GET /api/v1/rebalancer/proposals) para que un operador los acepte o los descarte; activá rebalancerAutoMoves en la configuración de ubicación para que arranque un movimiento por pool en forma automática. Los sitios fijados nunca se proponen.

Ajuste de ubicación Valor por defecto Para qué sirve
maxMovesPerNode 2 Movimientos simultáneos que tocan un mismo servidor
maxMovesPerPool 4 Movimientos simultáneos en un mismo pool
rollbackWindowHours 24 Cuánto se conserva la copia previa de un sitio movido
transferMBPerSecond 100 Tope de throughput por flujo de transferencia
rebalancerThreshold 0.25 Diferencia de carga que dispara propuestas de rebalanceo
rebalancerAutoMoves apagado Dejar que el rebalanceador arranque movimientos por su cuenta