VPN en Rocks Cluster Distribution: ¿por qué y para quién?
Rocks Cluster Distribution está diseñada para construir y gestionar clústeres HPC, partiendo de CentOS/RHEL 7 y adaptando sus propios “rolls” (paquetes especializados) para todo, desde el head node hasta los compute nodes. Su gestor de paquetes es yum (o dnf en versiones más recientes), y normalmente no cuenta con entorno de escritorio en los nodos de cálculo en el head node puede haber ligeros entornos como Xfce o acceso Web (Open OnDemand). Los usuarios son administradores de sistemas e investigadores que requieren robustez, bajo overhead y configuraciones repetibles vía scripts y automatización.
En un entorno así, una VPN ha de cumplir requisitos de rendimiento (latencia mínima), facilidad de despliegue en múltiples nodos, integración con systemd y repositorios RPM, y ser lo suficientemente ligera para no interferir con la interconexión MPI o InfiniBand.
Las VPNs más aptas para tu clúster Rocks
- OpenVPN: muy estable, disponible en EPEL, bien documentada, fácil de integrar con systemd y scripts de arranque en head node y nodos de login.
- WireGuard: inclusión en kernel en backports (ELRepo), ultra ligera, baja latencia, gestión de peers mediante ficheros de configuración sencillos.
- Tinc: VPN en modo malla (mesh), ideal para topologías distribuidas, auto-descubrimiento de nodos y cifrado punto a punto, útil en clústeres con nodos repartidos en diferentes centros.
Comparativa de características
| VPN | Protocolo/Capa | Integración RPM | Rendimiento | Enlace de documentación |
|---|---|---|---|---|
| OpenVPN | TLS/SSL (UDP/TCP) | Paquete openvpn en EPEL | Muy bueno (aunque ligero overhead por TLS) | Guía oficial |
| WireGuard | Kernel module (UDP) | kmod-wireguard y wireguard-tools en ELRepo | Excelente (código mínimo y optimizado) | Quickstart |
| Tinc | Mesh VPN (UDP/TCP) | Paquete tinc en EPEL/CentOS | Bueno en mallas complejas | Documentación |
Guías de instalación y configuración
1. OpenVPN
Sobre el head node y cualquier nodo de acceso (login node):
# Habilitar repositorio EPEL yum install -y epel-release # Instalar OpenVPN y easy-rsa yum install -y openvpn easy-rsa # Copiar plantillas y generar PKI cp -r /usr/share/easy-rsa/ /etc/openvpn/ cd /etc/openvpn/easy-rsa ./easyrsa init-pki ./easyrsa build-ca nopass ./easyrsa gen-req server nopass ./easyrsa sign-req server server # Generar parámetros Diffie-Hellman ./easyrsa gen-dh # Crear fichero de configuración /etc/openvpn/server.conf cat > /etc/openvpn/server.conf << EOF port 1194 proto udp dev tun ca /etc/openvpn/easy-rsa/pki/ca.crt cert /etc/openvpn/easy-rsa/pki/issued/server.crt key /etc/openvpn/easy-rsa/pki/private/server.key dh /etc/openvpn/easy-rsa/pki/dh.pem server 10.8.0.0 255.255.255.0 keepalive 10 120 persist-key persist-tun user nobody group nogroup status /var/log/openvpn-status.log verb 3 EOF # Iniciar y habilitar servicio systemctl enable openvpn@server systemctl start openvpn@server
En los nodos de usuario, generar creds, copiar .ovpn y arrancar con openvpn --config cliente.ovpn, o bien configurar otro systemd unit.
2. WireGuard
Se recomienda usar ELRepo para kernel-backports:
# Instalar ELRepo yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm # Instalar módulo y herramientas yum install -y kmod-wireguard wireguard-tools # Cargar módulo modprobe wireguard # Generar claves en el head node mkdir -p /etc/wireguard cd /etc/wireguard wg genkey tee server_priv.key wg pubkey > server_pub.key # Configuración básica /etc/wireguard/wg0.conf cat > /etc/wireguard/wg0.conf << EOF [Interface] Address = 10.0.0.1/24 ListenPort = 51820 PrivateKey = (cat server_priv.key) # Peer ejemplo (nodo de login) [Peer] PublicKey =AllowedIPs = 10.0.0.2/32 EOF # Ajustar permisos chmod 600 /etc/wireguard/ # Iniciar interfaz wg-quick up wg0 # Habilitar en arranque systemctl enable wg-quick@wg0
En cada nodo cliente, generar su par de claves, copiar la sección [Peer] dentro de la conf del servidor y lanzar wg-quick con su propia IP (ej. 10.0.0.2/32).
3. Tinc
Ideal para mallas de nodos sin un único punto de fallo:
# Instalar tinc
yum install -y epel-release
yum install -y tinc
# Directorio de configuración
mkdir -p /etc/tinc/cluster/{hosts,links-up}
# Generar clave para este nodo
tincd -n cluster -K4096
# /etc/tinc/cluster/tinc.conf
cat > /etc/tinc/cluster/tinc.conf << EOF
Name = nodo01
AddressFamily = ipv4
Interface = tinc-cluster
EOF
# /etc/tinc/cluster/hosts/nodo01
cat > /etc/tinc/cluster/hosts/nodo01 << EOF
Address = 192.168.1.1 # IP real de nodo01
Subnet = 10.10.0.1/32
-----BEGIN RSA PUBLIC KEY-----
(cat /etc/tinc/cluster/rsa_key.pub)
-----END RSA PUBLIC KEY-----
EOF
# Archivo links-up (para arrancar túnel)
cat > /etc/tinc/cluster/links-up << EOF
ifconfig INTERFACE 10.10.0.1 netmask 255.255.255.0
EOF
chmod x /etc/tinc/cluster/links-up
# Iniciar servicio
systemctl enable tinc@cluster
systemctl start tinc@cluster
Los demás nodos “nodo02”, “nodo03” siguen el mismo patrón, intercambiando los ficheros de hosts y claves.
Conclusión
Cada VPN aporta sus ventajas: OpenVPN es la opción más universal y sencilla de desplegar desde EPEL WireGuard ofrece un rendimiento sobresaliente con poco overhead, ideal para tráfico interno MPI y Tinc brilla en mallas complejas con múltiples nodos sin punto único de fallo. Según tu topología de clúster y necesidades de latencia, elige la que mejor encaje y automatiza el despliegue con Ansible o tu herramienta favorita de roll de Rocks.
Deja una respuesta