En un cluster Proxmox con dos nodos para tener HA es necesario un servicio qnetd para dar quorum
669
corosync en ambos nodos
apt update
apt install -y corosync-qdevice
which corosync-qdevice-net-certutil
id_rsa.pub de uno de los nodos en el contenedor, para que pmxve pueda generar los certificados/root/.ssh/config la ip y puerto del contenedor:Host 192.168.3.201
User root
Port 2203
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
pvecm qdevice setup 192.168.3.201
pvecm status
Votequorum information
----------------------
Expected votes: 3
Highest expected: 3
Total votes: 3
Quorum: 2
Flags: Quorate Qdevice
FROM debian:trixie-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
corosync-qnetd openssh-server ca-certificates iproute2 netcat-traditional \
&& rm -rf /var/lib/apt/lists/*
# sshd necesita este dir
RUN mkdir -p /var/run/sshd /root/.ssh && chmod 700 /root/.ssh
# Persistir llaves/estado qnetd
VOLUME ["/var/lib/corosync-qnetd", "/root/.ssh"]
# Exponemos qnetd y ssh
EXPOSE 5403/tcp 5403/udp 22/tcp
# Script de arranque: sshd en segundo plano y qnetd en foreground
RUN printf '#!/bin/sh\nset -e\nmkdir -p /var/run/sshd\n/usr/sbin/sshd\nexec /usr/bin/corosync-qnetd -f\n' > /entrypoint.sh \
&& chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
sudo mkdir -p /home/sysadmin/proxmox/qnetd/{nssdb,ssh,etc-ssh,varlib}
sudo chmod 700 /home/sysadmin/proxmox/qnetd/ssh
# agrega la clave pública del nodo PVE que hará el setup:
sudo tee -a /home/sysadmin/proxmox/qnetd/ssh/authorized_keys < /root/.ssh/id_rsa.pub
sudo chmod 600 /home/sysadmin/proxmox/qnetd/ssh/authorized_keys
sudo chown -R root:root /home/sysadmin/proxmox/qnetd
services:
qnetd:
image: rpsa/qnetd:latest
restart: unless-stopped
# Publica puertos (si no usás network_mode: host)
ports:
- "5403:5403/tcp"
- "5403:5403/udp"
- "2203:22/tcp"
# Persistencia:
# - nssdb: certificados del qnetd (CA/cluster)
# - ssh: authorized_keys y demás claves de root
# - etc-ssh: host keys para que no cambie la huella del server
# - varlib: estado extra de qnetd (opcional)
volumes:
- /home/sysadmin/proxmox/qnetd/nssdb:/etc/corosync/qnetd/nssdb
- /home/sysadmin/proxmox/qnetd/ssh:/root/.ssh
- /home/sysadmin/proxmox/qnetd/etc-ssh:/etc/ssh
- /home/sysadmin/proxmox/qnetd/varlib:/var/lib/corosync-qnetd
# Aseguramos que corran sshd + qnetd
entrypoint: ["/bin/sh","-lc","mkdir -p /var/run/sshd; /usr/sbin/sshd; exec /usr/bin/corosync-qnetd -f"]
healthcheck:
test: ["CMD", "sh", "-c", "nc -z 127.0.0.1 5403"]
interval: 30s
timeout: 5s
retries: 5
start_period: 10s
Content type
Image
Digest
sha256:c4cbb6cab…
Size
47.9 MB
Last updated
10 months ago
docker pull rpsa/qnetd