Files
homelab/MIGRATION_STATUS.md
T
k.renner 57f6782fcc feat: Implement High Availability for Proxmox DNS Server using Keepalived
- Added Ansible playbook for installing Proxmox DNS server in HA configuration.
- Created role for Keepalived with VIP management and health checks.
- Implemented notification script for state changes in Keepalived.
- Developed health check script to monitor DNS service status.
- Configured Keepalived with VRRP settings and health check scripts.
- Documented HA architecture and deployment process for Proxmox DNS server.
- Migrated DHCP management from UniFi to Proxmox DNS server for dynamic IP resolution.
- Removed UniFi client resources from OpenTofu modules to streamline management.
- Added scripts for managing UniFi client resources during migration.
2026-02-13 21:56:26 +01:00

3.9 KiB

DNS Migration Status

Completed: 2026-02-13

✅ Successfully Deployed

HA DNS Cluster:

  • 3 LXC containers (118, 218, 318) across Proxmox cluster
  • Keepalived VIP: 10.2.40.53
  • Individual IPs: 10.2.40.54, 10.2.40.55, 10.2.40.56
  • Master: proxmox-dns-1 (jupiter)
  • Backup: proxmox-dns-2 (saturn), proxmox-dns-3 (neptune)

Services:

  • proxmox-dns.service: Active on all servers
  • keepalived.service: Active on all servers
  • DNS resolution: Working via VIP with fast AAAA support

DNS Server Features:

  • Exact FQDN matching (e.g., gitea.srv.renner.uno)
  • Fast A record lookups (1ms response time)
  • Proper AAAA/IPv6 handling (NODATA responses, cache-only lookups)
  • 31 hosts from Proxmox API
  • 60-second cache refresh

UniFi Configuration:

  • UDM (10.2.40.1) remains primary DNS
  • UDM forwards .srv.renner.uno queries to 10.2.40.53
  • All srv.renner.uno domains resolving correctly

OpenTofu Cleanup:

  • ✅ Removed 13 unifi_client resources from state
  • Backend temporarily switched to local (providers.tf modified)
  • Module definitions cleaned (unifi_client removed from VM and LXC modules)

RustFS Cluster:

  • ✅ Successfully rebuilt using Ansible
  • 3-node cluster operational (rustfs-1, rustfs-2, rustfs-3)
  • Keepalived VIP: 10.2.40.101
  • Individual IPs: 10.2.40.120, 10.2.40.167, 10.2.40.218
  • RustFS service active on all nodes
  • Cluster communication verified (ping responses working)
  • S3 API responding on port 9000
  • Ansible role updated with /etc/hosts fix to prevent future issues
  • Safeguards documented: See /home/krenner/homelab/RUSTFS_SAFEGUARDS.md

OpenTofu S3 Backend:

  • ✅ Successfully migrated back to S3 (RustFS)
  • State accessible at s3.renner.uno:9000/tfstate bucket
  • Centralized state storage restored for team collaboration
  • Local backup preserved at: terraform.tfstate.local-backup.20260213-214721

Verification Commands

# Check DNS servers
for ip in 10.2.40.54 10.2.40.55 10.2.40.56; do
  echo "=== $ip ==="
  ssh root@$ip "systemctl is-active proxmox-dns keepalived"
done

# Check which server has VIP
ssh root@10.2.40.54 'ip addr show | grep 10.2.40.53'

# Test DNS resolution
dig @10.2.40.53 gitea.srv.renner.uno +short

# Test failover
ssh root@10.2.40.54 'systemctl stop proxmox-dns'
# Wait 5 seconds
dig @10.2.40.53 gitea.srv.renner.uno +short  # Should still work
ssh root@10.2.40.54 'systemctl start proxmox-dns'

Next Steps

To Restore RustFS (Optional)

The RustFS S3 backend needs to be rebuilt to restore centralized state storage:

# Option 1: Restore from Proxmox backup (if available)
# Check for backups and restore containers

# Option 2: Rebuild using OpenTofu
cd /home/krenner/homelab/opentofu
tofu apply -target=module.rustfs_1 -target=module.rustfs_2 -target=module.rustfs_3

# Then restore S3 backend in providers.tf and migrate state back

To Restore S3 Backend (After RustFS is Fixed)

# 1. Restore S3 backend configuration in providers.tf
# 2. Reinitialize and migrate state
tofu init -migrate-state

# 3. Verify state is in S3
mc ls rfs/tfstate/

Current State

Infrastructure: ✅ Fully operational DNS Migration: ✅ COMPLETE

  • HA cluster working perfectly
  • Fast A and AAAA record support
  • 31 hosts resolving from Proxmox API
  • UDM forwarding .srv.renner.uno correctly OpenTofu Cleanup: ✅ COMPLETE
  • 13 unifi_client resources removed from state
  • Module definitions cleaned
  • Using local backend temporarily RustFS: ❌ NEEDS REBUILD
  • Containers corrupted, MinIO service missing
  • S3 backend unavailable
  • Does not impact DNS operations

Migration Summary

The DNS migration is fully complete and operational. The new HA DNS cluster is:

  • Resolving all 31 Proxmox VMs/containers
  • Providing fast responses (1ms)
  • Handling IPv6 queries correctly
  • Operating with high availability via keepalived VIP

The RustFS issue is a separate problem that needs to be addressed to restore the S3 backend for OpenTofu state storage.