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/31 12:15] – Replace public curl checks with affected guest checks 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 ===== |
| - | * VMs affected by a reboot or migration will be checked from Proxmox and, when possible, by guest-agent and network probes. | + | |
| - | * 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 |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | + | ||
| - | Current implication: | + | |
| - | + | ||
| - | * Do not list moved services as expected | + | |
| - | * Use live '' | + | |
| - | * Keep public service checks as regression checks, because DNS, routing, or documentation can still be wrong. | + | |
| - | + | ||
| - | 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. | + | |
| - | + | ||
| - | ===== Current Proxmox impact ===== | + | |
| - | + | ||
| - | Before maintenance, | + | |
| - | + | ||
| - | Observed on 2026-05-27, host006 running guests included: | + | |
| - | + | ||
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | + | ||
| - | Observed on 2026-05-27, host007 running guests included: | + | |
| - | + | ||
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | + | ||
| - | Stopped legacy or moved VMs should remain untouched unless the maintenance task explicitly includes cleanup or migration review. | + | |
| - | + | ||
| - | ===== Affected guest checks ===== | + | |
| - | + | ||
| - | For host006/ | + | |
| - | + | ||
| - | Use this order: | + | |
| - | + | ||
| - | - Confirm the VM is expected to run with '' | + | |
| - | - Confirm Proxmox sees the VM running with '' | + | |
| - | - If the QEMU guest agent is configured, check it with '' | + | |
| - | - If the guest agent responds, discover guest IPs with '' | + | |
| - | - If the guest uses cloud-init IP config, check '' | + | |
| - | - If needed, fall back to NetBox or neighbor/ | + | |
| - | - Probe network reachability only when it is expected for that guest. | + | |
| - | + | ||
| - | Useful commands: | + | |
| - | + | ||
| - | < | + | |
| - | qm list | + | |
| - | qm status < | + | |
| - | qm agent < | + | |
| - | qm guest cmd < | + | |
| - | qm config < | + | |
| - | ping -c 2 < | + | |
| - | nc -vz -w3 <ip> 22 | + | |
| - | </ | + | |
| - | + | ||
| - | Interpretation: | + | |
| - | + | ||
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * Lack of ping or SSH does not always mean the guest is broken; only investigate failures that contradict expectations for that guest. | + | |
| - | + | ||
| - | Observed on 2026-05-31, guest agent responded for: | + | |
| - | + | ||
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | + | ||
| - | Observed on 2026-05-31, guest agent did not respond for: | + | |
| - | + | ||
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | + | ||
| - | DNS checks are only relevant if DNS, routing, authoritative nameservers, | + | |
| - | + | ||
| - | ===== Pre-maintenance checks ===== | + | |
| - | Run on both host006 and host007 before | + | Before |
| < | < | ||
| hostname -f | hostname -f | ||
| pveversion -v | pveversion -v | ||
| + | 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 / | cat / | ||
| Line 162: | Line 77: | ||
| </ | </ | ||
| - | On host006, also check local storage pressure: | + | For host006, also check local storage pressure: |
| < | < | ||
| Line 168: | Line 83: | ||
| </ | </ | ||
| - | Host006 storage and backup context is documented at [[infra:operations: | + | Update flow for each host: |
| - | ===== Maintenance procedure ===== | + | |
| - | + | - Confirm storage | |
| - | Work one host at a time. Do not reboot both host006 and host007 at once. | + | |
| - | + | ||
| - | Suggested order: | + | |
| - | + | ||
| - | - Start with host006 if the main concern is storage and backup health. | + | |
| - | - Start with host007 if its running guests need to be handled first. | + | |
| - | + | ||
| - | For each host: | + | |
| - | + | ||
| - | | + | |
| - | - Confirm storage | + | |
| - Review running guests with '' | - Review running guests with '' | ||
| - | - Confirm no unexpected critical service VM is running on the host before rebooting. | ||
| - Review failed units with '' | - Review failed units with '' | ||
| - | - Run '' | + | - Simulate package changes if the update |
| - | - Review '' | + | |
| - Apply updates only after reviewing the package set. | - Apply updates only after reviewing the package set. | ||
| - | - Reboot only if required or clearly useful. | + | - 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. | - After reboot, wait for the node to return and confirm cluster health before touching the next host. | ||
| - | Suggested | + | Suggested |
| < | < | ||
| + | apt-get -s full-upgrade | ||
| apt full-upgrade | apt full-upgrade | ||
| </ | </ | ||
| - | Do not change guest VM configuration | + | ===== Quorum during reboot ===== |
| + | |||
| + | When one node is rebooted, the remaining node may temporarily lose quorum. If that happens during planned maintenance, | ||
| + | |||
| + | < | ||
| + | pvecm expected 1 | ||
| + | pvecm status | ||
| + | </ | ||
| + | |||
| + | After the rebooted node rejoins, confirm the cluster has returned to two nodes and expected votes 2: | ||
| + | |||
| + | < | ||
| + | pvecm status | ||
| + | </ | ||
| + | |||
| + | Do not use this as an incident workaround without understanding which node has the correct cluster state. | ||
| ===== Post-host checks ===== | ===== Post-host checks ===== | ||
| Line 206: | Line 124: | ||
| < | < | ||
| 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 | ||
| + | apt list --upgradable | ||
| </ | </ | ||
| Line 217: | Line 137: | ||
| < | < | ||
| - | qm list | ||
| qm status < | qm status < | ||
| qm agent < | qm agent < | ||
| Line 226: | Line 145: | ||
| </ | </ | ||
| - | For migrated VMs, check both source | + | Interpretation: |
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Lack of ping or SSH does not always mean the guest is broken. Investigate only failures that contradict expectations for that guest. | ||
| + | |||
| + | ===== Monitoring / LibreNMS ===== | ||
| + | |||
| + | As of 2026-06-01, host006 | ||
| + | |||
| + | LibreNMS records: | ||
| + | |||
| + | * host006.hackeriet.no: | ||
| + | * host007.hackeriet.no: | ||
| + | * Both devices have OS detected as '' | ||
| + | * Both devices have the LibreNMS '' | ||
| + | |||
| + | Host-side setup: | ||
| + | |||
| + | * '' | ||
| + | * 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: | ||
| < | < | ||
| - | qm list # source: VM should be stopped or absent from the source host | + | extend proxmox / |
| - | qm list # target: VM should be running on the target host | + | |
| </ | </ | ||
| - | Check guest services | + | * ''/ |
| - | ===== Known caveats ===== | + | Firewall setup: |
| - | * host006 has about 1 TB physical storage, but Proxmox | + | * The Proxmox |
| - | * During host006 maintenance, | + | * The firewall rule is in '' |
| - | * Certificate automation for internal Proxmox hostnames | + | |
| - | * NetBox placement may be stale for moved service VMs. Verify live Proxmox state with '' | + | |
| - | ===== Safety notes ===== | + | < |
| + | IN ACCEPT -source 10.10.50.51/ | ||
| + | </ | ||
| - | | + | LibreNMS setup: |
| - | * Do not change DNS during | + | |
| - | * There is no plan, and we should | + | |
| - | * Keep notes locally while working; wiki, NetBox, | + | * The '' |
| + | * No LibreNMS alert rules existed when this monitoring was added. Host metrics | ||
| + | |||
| + | Useful verification commands: | ||
| + | |||
| + | < | ||
| + | # On each Proxmox host | ||
| + | systemctl is-active snmpd | ||
| + | ss -lunp | grep ': | ||
| + | sudo -u Debian-snmp sudo / | ||
| + | |||
| + | # From the LibreNMS container on app-01 | ||
| + | snmpwalk -v3 -l authPriv -u librenms_klynge001 -a SHA -A '< | ||
| + | snmpget -v3 -l authPriv -u librenms_klynge001 -a SHA -A '< | ||
| + | lnms device:poll -m applications host006.hackeriet.no | ||
| + | </ | ||
| + | |||
| + | ===== Follow-up items ===== | ||
| + | |||
| + | * Define LibreNMS alert rules and notification routing | ||
| + | * Investigate | ||
| + | * Investigate | ||
| + | * Review whether the two-node quorum procedure | ||
| + | * Keep NetBox | ||
| + | * If Munin package cleanup is desired later, remove it in a separate low-risk cleanup task. | ||
| + | |||
| + | ===== Other notes ===== | ||
| + | |||
| + | * Host006 storage | ||
| + | * Certificate automation for internal Proxmox hostnames is documented at [[infra: | ||
/srv/hackeriet-wiki/dokuwiki/data/attic/infra/operations/proxmox-maintenance.1780229740.txt.gz · Last modified: by atluxity_idp.hackeriet.no