infra:operations:proxmox-maintenance
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| infra:operations:proxmox-maintenance [2026/05/27 16:36] – Revise Proxmox maintenance scope for moved services atluxity_idp.hackeriet.no | infra:operations:proxmox-maintenance [2026/06/01 17:32] (current) – Note LibreNMS alerting follow-up for klynge001 atluxity_idp.hackeriet.no | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Proxmox maintenance ====== | ====== Proxmox maintenance ====== | ||
| - | This is a runbook | + | This page documents maintenance |
| ===== Current scope ===== | ===== Current scope ===== | ||
| - | Planned hosts: | + | Hosts currently covered by this procedure: |
| * [[infra: | * [[infra: | ||
| * [[infra: | * [[infra: | ||
| - | Current goals: | ||
| - | * Bring host006 and host007 up to date. | + | ===== Last maintenance: |
| - | * Review failed services and storage health. | + | |
| - | * Keep the cluster healthy while working one host at a time. | + | |
| - | * Avoid guest-level changes unless needed for recovery. | + | |
| - | This page covers Proxmox host maintenance. Service hosts that have moved away from this cluster should be checked as external service reachability, | + | Scope: |
| - | ===== Announcement draft ===== | + | Actions performed: |
| - | Planned Proxmox maintenance | + | * Removed obsolete local backup archives on host006 |
| + | * Updated the scheduled Proxmox backup job to exclude moved/ | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Upgraded host006 and host007 to Proxmox VE 8.4.19. | ||
| + | * Rebooted host006 and host007 one at a time to activate kernel 6.8.12-28-pve. | ||
| + | * Temporarily adjusted expected votes during single-node reboot windows so the remaining node stayed quorate. | ||
| + | * Verified storage, package state, cluster quorum, guest state, and basic guest reachability after reboots. | ||
| - | I plan to do maintenance | + | Final state after maintenance: |
| - | Scope: | + | * host006: Proxmox VE 8.4.19, kernel 6.8.12-28-pve. |
| + | * host007: Proxmox VE 8.4.19, kernel 6.8.12-28-pve. | ||
| + | * Cluster: 2 nodes, expected votes 2, quorate. | ||
| + | * No pending package upgrades were listed on either node. | ||
| + | * host006 root filesystem usage was about 72% after cleanup and updates. | ||
| + | * host007 root filesystem usage was about 19% after updates. | ||
| - | * OS and Proxmox package updates | + | Follow-up actions completed after the maintenance: |
| - | * storage and backup health checks | + | |
| - | * failed service review | + | |
| - | * possible host reboots if required | + | |
| - | Expected impact: | + | * Retired Munin on host006 and host007 by disabling and stopping '' |
| + | * Cleared stale '' | ||
| + | * Disabled autostart for moved/ | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Verified that '' | ||
| - | * VMs still running on host006 or host007 may be briefly unavailable if their host is rebooted. | + | ===== What we learned ===== |
| - | * Public services such as wiki, IDP, NetBox, LibreNMS, app-01, and ingress will be checked before and after maintenance, | + | |
| - | * I will avoid guest-level changes unless needed for recovery. | + | |
| - | * I will work on one host at a time and check cluster health between steps. | + | |
| - | ===== Current | + | * The cluster is currently operating as a two-node cluster. During a single-node reboot, the remaining node can temporarily lose quorum unless expected votes is adjusted when either other node is rebooted. |
| + | * Expected votes returned to 2 after both nodes were back and joined. | ||
| + | * '' | ||
| + | * Moved/ | ||
| + | * host007 emitted GRUB/LVM warnings about a missing physical volume name '' | ||
| + | * host006 emitted a GRUB warning that the removable EFI fallback path is not updated automatically. The explicit Proxmox EFI boot entry worked and the host rebooted successfully. | ||
| - | Observed on 2026-05-27: | + | ===== Maintenance procedure ===== |
| - | * '' | + | Work one host at a time. Do not reboot both host006 and host007 |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | Current implication: | + | Before making changes on either host: |
| - | * Do not list moved services as expected reboot impact from host006 or host007. | + | < |
| - | * Use live '' | + | hostname -f |
| - | * Keep public service checks as regression checks, because DNS, routing, or documentation can still be wrong. | + | pveversion -v |
| + | uname -r | ||
| + | pvecm status | ||
| + | systemctl --failed --no-pager | ||
| + | pvesm status | ||
| + | df -h -x tmpfs -x devtmpfs | ||
| + | qm list | ||
| + | cat / | ||
| + | apt update | ||
| + | apt list --upgradable | ||
| + | test -f /var/run/reboot-required && cat / | ||
| + | </ | ||
| - | NetBox still appears to contain stale VM placement for some moved systems. Treat NetBox as inventory to clean up later, not as the final maintenance-impact source for those systems. | + | For host006, also check local storage pressure: |
| - | ===== Current Proxmox impact ===== | + | < |
| + | du -sh / | ||
| + | </ | ||
| - | Before maintenance, | + | Update flow for each host: |
| - | Observed on 2026-05-27, host006 | + | |
| + | | ||
| + | - Review | ||
| + | - Review failed units with '' | ||
| + | - Simulate package changes if the update set is large or risky. | ||
| + | - Apply updates only after reviewing the package set. | ||
| + | - Reboot only if required or clearly useful, such as after a kernel update. | ||
| + | - After reboot, wait for the node to return and confirm cluster health before touching the next host. | ||
| - | * '' | + | Suggested commands after review: |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | Observed on 2026-05-27, host007 running guests included: | + | < |
| + | apt-get -s full-upgrade | ||
| + | apt full-upgrade | ||
| + | </ | ||
| - | * '' | + | ===== Quorum during reboot ===== |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | Stopped legacy or moved VMs should remain untouched unless | + | When one node is rebooted, |
| - | + | ||
| - | ===== DNS and service guardrails ===== | + | |
| - | + | ||
| - | Live DNS checks on 2026-05-23 showed | + | |
| - | + | ||
| - | * ns0.hackeriet.no - Hackeriet hosted, resolves | + | |
| - | * ns.hyp.net - external nameserver, resolves to 194.63.248.53 and 2a01: | + | |
| - | + | ||
| - | Both authoritative nameservers served | + | |
| - | + | ||
| - | Before rebooting anything, check DNS redundancy: | + | |
| < | < | ||
| - | dig @ns0.hackeriet.no SOA hackeriet.no | + | pvecm expected 1 |
| - | dig @ns.hyp.net SOA hackeriet.no | + | pvecm status |
| </ | </ | ||
| - | The SOA serial should match. | + | After the rebooted node rejoins, confirm the cluster has returned to two nodes and expected votes 2: |
| - | + | ||
| - | Check public services as guardrails, not as direct Proxmox dependency claims: | + | |
| < | < | ||
| - | curl -I https:// | + | pvecm status |
| - | curl -I https:// | + | |
| - | curl -I https:// | + | |
| - | curl -I https:// | + | |
| - | curl -I https:// | + | |
| </ | </ | ||
| - | ===== Pre-maintenance checks ===== | + | Do not use this as an incident workaround without understanding which node has the correct cluster state. |
| - | Run on both host006 and host007 before making changes: | + | ===== Post-host checks ===== |
| + | |||
| + | After each host update or reboot: | ||
| < | < | ||
| hostname -f | hostname -f | ||
| - | pveversion -v | + | pveversion |
| + | uname -r | ||
| pvecm status | pvecm status | ||
| systemctl --failed --no-pager | systemctl --failed --no-pager | ||
| pvesm status | pvesm status | ||
| - | df -h | + | df -h -x tmpfs -x devtmpfs |
| qm list | qm list | ||
| - | cat / | ||
| - | apt update | ||
| apt list --upgradable | apt list --upgradable | ||
| - | test -f / | ||
| </ | </ | ||
| - | On host006, also check local storage pressure: | + | Check guests affected by the touched host: |
| < | < | ||
| - | du -sh /var/lib/vz/dump /var/lib/vz/ | + | qm status < |
| + | qm agent < | ||
| + | qm guest cmd < | ||
| + | qm config < | ||
| + | ping -c 2 < | ||
| + | nc -vz -w3 <ip> 22 | ||
| </ | </ | ||
| - | Host006 storage and backup context is documented at [[infra:operations: | + | Interpretation: |
| - | ===== Maintenance procedure ===== | + | * '' |
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Lack of ping or SSH does not always mean the guest is broken. Investigate only failures that contradict expectations for that guest. | ||
| - | Work one host at a time. Do not reboot both host006 and host007 at once. | + | ===== Monitoring / LibreNMS ===== |
| - | Suggested order: | + | As of 2026-06-01, host006 and host007 are monitored in LibreNMS as Proxmox hypervisors. This replaces the old Munin host monitoring for these nodes. |
| - | - Start with host006 if the main concern is storage and backup health. | + | LibreNMS records: |
| - | - Start with host007 if its running guests need to be handled first. | + | |
| - | For each host: | + | * host006.hackeriet.no: LibreNMS device ID 25. |
| + | * host007.hackeriet.no: | ||
| + | * Both devices have OS detected as '' | ||
| + | * Both devices have the LibreNMS '' | ||
| - | | + | Host-side setup: |
| - | - Confirm storage state with '' | + | |
| - | - Review running guests with '' | + | |
| - | - Confirm no unexpected critical service VM is running on the host before rebooting. | + | |
| - | - Review failed units with '' | + | |
| - | - Run '' | + | |
| - | - Review '' | + | |
| - | - Apply updates only after reviewing the package set. | + | |
| - | - Reboot only if required or clearly useful. | + | |
| - | - After reboot, wait for the node to return and confirm cluster health before touching the next host. | + | |
| - | Suggested update command, after review: | + | * '' |
| + | * SNMP listens only on the management IP of each host: | ||
| + | * host006: '' | ||
| + | * host007: '' | ||
| + | * SNMP uses SNMPv3 authPriv with the security name '' | ||
| + | * Credentials are stored in Hackerpass at '' | ||
| + | * The Proxmox LibreNMS agent-local script is installed as ''/ | ||
| + | * SNMP exposes Proxmox VM traffic through: | ||
| < | < | ||
| - | apt full-upgrade | + | extend proxmox / |
| </ | </ | ||
| - | Do not change guest VM configuration as part of host maintenance unless needed for recovery. | + | * ''/ |
| - | ===== Post-host checks ===== | + | Firewall setup: |
| - | After each host update or reboot: | + | * The Proxmox cluster firewall allows SNMP only from app-01 / LibreNMS source address '' |
| + | * The firewall rule is in ''/ | ||
| < | < | ||
| - | hostname | + | IN ACCEPT |
| - | pveversion | + | |
| - | pvecm status | + | |
| - | systemctl | + | |
| - | pvesm status | + | |
| - | df -h | + | |
| - | qm list | + | |
| </ | </ | ||
| - | Check public services as regression checks: | + | LibreNMS setup: |
| + | |||
| + | * '' | ||
| + | * The '' | ||
| + | * No LibreNMS alert rules existed when this monitoring was added. Host metrics and Proxmox application polling are live, but alert policy still needs to be defined. | ||
| + | |||
| + | Useful verification commands: | ||
| < | < | ||
| - | curl -I https://hackeriet.no/ | + | # On each Proxmox host |
| - | curl -I https:// | + | systemctl is-active snmpd |
| - | curl -I https://idp.hackeriet.no/ | + | ss -lunp | grep ':161' |
| - | curl -I https://ip.hackeriet.no/ | + | sudo -u Debian-snmp sudo /usr/local/libexec/ |
| - | curl -I https://nms.hackeriet.no/ | + | |
| + | # From the LibreNMS container on app-01 | ||
| + | snmpwalk -v3 -l authPriv -u librenms_klynge001 -a SHA -A '< | ||
| + | snmpget | ||
| + | lnms device:poll -m applications host006.hackeriet.no | ||
| </ | </ | ||
| - | Check actual services, not only DNS, when the relevant host has been touched. | + | ===== Follow-up items ===== |
| - | ===== Known caveats ===== | + | * Define LibreNMS alert rules and notification routing for klynge001 host monitoring. |
| + | * Investigate the host007 GRUB/LVM '' | ||
| + | * Investigate the host006 EFI fallback warning. | ||
| + | * Review whether the two-node quorum procedure should be part of the standard klynge001 maintenance runbook. | ||
| + | * Keep NetBox VM placement aligned with the current reality for moved service VMs. | ||
| + | * If Munin package cleanup is desired later, remove it in a separate low-risk cleanup task. | ||
| - | * host006 has about 1 TB physical storage, but Proxmox local storage is on the root filesystem. The root filesystem was previously close to full, and local backups under ''/ | + | ===== Other notes ===== |
| - | * During host006 maintenance, | + | |
| - | * Certificate automation for internal Proxmox hostnames is documented at [[infra: | + | |
| - | * NetBox placement may be stale for moved service VMs. Verify live Proxmox state with '' | + | |
| - | ===== Safety notes ===== | + | |
| - | + | * Certificate automation for internal Proxmox hostnames | |
| - | | + | |
| - | * Do not change DNS during the maintenance window unless DNS itself | + | |
| - | * There is no plan, and we should avoid, delete | + | |
| - | * Keep notes locally while working; wiki, NetBox, IDP, and public services may be affected depending on which host is down. | + | |
/srv/hackeriet-wiki/dokuwiki/data/attic/infra/operations/proxmox-maintenance.1779899793.txt.gz · Last modified: by atluxity_idp.hackeriet.no