--- name: proxmox-cluster description: Formação de cluster Proxmox com 2+ nodes — configuração de Corosync, Quorum e preparação para High Availability. disable-model-invocation: true layer: wiki --- # Proxmox Cluster Formar cluster Proxmox 2+ nodes com Corosync, Quorum e preparação para High Availability. ## Quando Usar - Formar cluster 2-node após migration complete - Adicionar node a cluster existente - Configurar quorum e fencing - Preparar para HA (skill /proxmox-ha) ## Sintaxe ```bash /proxmox-cluster create --node-a --node-b [--cluster-name] /proxmox-cluster join --node --cluster ``` ## Exemplos ```bash # Criar cluster 2-node /proxmox-cluster create --node-a server.descomplicar.pt --node-b cluster.descomplicar.pt --cluster-name descomplicar # Adicionar 3º node /proxmox-cluster join --node pve-node3.descomplicar.pt --cluster cluster.descomplicar.pt ``` ## Knowledge Sources ### NotebookLM ```bash mcp__notebooklm__notebook_query \ notebook_id:"276ccdde-6b95-42a3-ad96-4e64d64c8d52" \ query:"proxmox cluster corosync quorum pvecm ha" ``` ## Workflow Completo ### Pre-Requisites **1. Verificar Nodes Prontos** ```bash # Ambos nodes devem ter: - Proxmox VE 8.x instalado (/proxmox-setup) - Networking configurado (NAT ou vSwitch) - PBS configurado (/pbs-config) - Mesma versão PVE - Hostnames únicos - Conectividade IP entre nodes ``` **2. Validar Conectividade** ```bash # De Node A → Node B ping -c 3 ssh root@ pveversion # De Node B → Node A ping -c 3 ssh root@ pveversion ``` **3. Sincronizar Time (CRITICAL)** ```bash # Ambos nodes devem ter NTP configurado timedatectl status # Instalar chrony se necessário apt install chrony systemctl enable --now chronyd ``` **4. Backup Pre-Cluster** ```bash # Backup configs de ambos nodes tar -czf /tmp/pre-cluster-backup.tar.gz /etc/pve /etc/network # Transfer para PBS ``` ### Fase 1: Cluster Creation (Node B) **1.1 Criar Cluster em Node B (Primeiro Node)** ```bash # SSH to Node B (cluster.descomplicar.pt) ssh root@ # Criar cluster pvecm create descomplicar # Verificar pvecm status # Expected output: # Cluster information # Name: descomplicar # Nodes: 1 # Expected votes: 1 ``` **1.2 Obter Cluster Join Info** ```bash # Obter join information (para Node A) pvecm nodes # Anot IP e nome do cluster ``` ### Fase 2: Join Node A ao Cluster **2.1 Join Node A** ```bash # SSH to Node A (server.descomplicar.pt) ssh root@ # Join cluster (fornecer IP do Node B) pvecm add # Durante processo: # - Solicita password root do Node B # - Transfere configuração cluster # - Copia /etc/pve/ # - Reinicia serviços cluster # AGUARDAR ~2-5min ``` **2.2 Verificar Join Successful** ```bash # Em Node A: pvecm status # Expected output: # Nodes: 2 # Expected votes: 2 # Quorum: 2 (Active) # Listar nodes pvecm nodes # Should show both nodes ``` **2.3 Verificar Replicação /etc/pve/** ```bash # Em Node A: ls -lah /etc/pve/ # Should see: # - nodes/ (ambos nodes) # - qemu-server/ (VMs) # - lxc/ (containers) # - storage.cfg (shared) # Teste: Criar VM em Node A via Web UI # Verificar aparece em Node B também ``` ### Fase 3: Quorum Configuration **3.1 Verificar Quorum Votes** ```bash pvecm status | grep "Expected votes" # 2-node cluster: # Expected votes: 2 # Quorum: 2 # CRITICAL: Com 2 nodes, perder 1 node = perder quorum ``` **3.2 Configurar QDevice (Opcional - 2-node clusters)** **Problema 2-node cluster:** Se 1 node falha, cluster perde quorum (não pode fazer alterações). **Solução:** Adicionar QDevice externo (3º vote) ```bash # Em VPS externo leve (ou Raspberry Pi): apt install corosync-qnetd # Em ambos PVE nodes: apt install corosync-qdevice # Configurar QDevice (em Node A ou B): pvecm qdevice setup # Verificar pvecm status # Expected votes: 3 (2 nodes + 1 qdevice) ``` **Recomendação Cluster Descomplicar:** - Iniciar sem QDevice (aceitar limitação 2-node) - Adicionar QDevice futuro se necessário - Ou adicionar 3º node físico ### Fase 4: Storage Configuration **4.1 Configurar Shared Storage (Opcional)** **Opções:** - NFS share - Ceph (mínimo 3 nodes) - ZFS replication (não shared, mas sync) **Para 2-node sem shared storage:** - VMs ficam em local storage de cada node - Live migration copia disk (mais lento mas funciona) - HA usa storage replication ou aceita downtime de boot **4.2 Configurar PBS como Shared** ```bash # PBS já configurado (/pbs-config) # Adicionar PBS storage em ambos nodes via Web UI # Datacenter → Storage → Add → Proxmox Backup Server # ID: pbs-main # Server: # Datastore: main-store # Content: VZDump backup files # Nodes: ALL ``` ### Fase 5: Networking Validation **5.1 Verificar Cluster Network** ```bash # Verificar Corosync usa network correcta cat /etc/pve/corosync.conf # Deve usar IP management (não vSwitch) # bindnetaddr: