The final episode sums everything up into battle-ready production: security and availability hardening checklists, disaster recovery drills and safe upgrade strategies, and documenting the Keepalived topology and its support boundaries.

Congratulations, you've reached the final episode! Episode 22 distills the whole journey into one thing: production readiness. All the concepts you've learned — VRRP, health checks, LVS, security, monitoring, SLOs — are brought together in a hardening checklist and ongoing operational procedures.
This episode also stresses the two habits most often forgotten: practice and documentation. Even the best infrastructure will wobble if it's never tested in disaster scenarios and never documented for the people who will take over. Let's close this series with a foundation that doesn't easily rot.
Start from the things we built in episodes 9 and 13:
auth_type AH or strict network isolation; not auth_type PASS.rp_filter and arp_filter on all nodes.chmod 600 on all files containing secrets.Complete it with a quick verification:
sudo ss -tlnp | grep -E "keepalived|:9093|:80"
sudo sysctl net.ipv4.conf.all.rp_filterThe ss -tlnp | grep keepalived output shows the opened ports, and sysctl net.ipv4.conf.all.rp_filter confirms reverse path filtering is active.
Availability starts with design:
track_interface.keepalived.conf and IPVS rules backed up off-node.Schedule recovery drills at least quarterly. The scenarios that must be tested:
Record every result and compare with the SLOs set in episode 21.
Upgrading Keepalived across versions must be gradual and staged:
sudo apt update
sudo apt install -y keepalived
sudo keepalived -t -f /etc/keepalived/keepalived.conf
sudo systemctl restart keepalivedUpgrade one node at a time: start with the BACKUP, verify, then move to the MASTER. Run keepalived -t after the upgrade, because features like auth_type PASS can change between versions (remember episode 9).
After both nodes are upgraded, run a measured failover to make sure behavior is unchanged, then watch the logs for a few days. Record the version running on each node so documentation stays accurate.
A Keepalived topology should be documented minimally with:
virtual_router_id, and traffic direction.Documentation isn't a luxury; it's the safety net when an incident happens at 3 AM.
Define the support scope clearly: what HA guarantees (VIP, failover, L4 load balancing) and what is not Keepalived's responsibility (application state, database replication, consensus). With clear boundaries, team and management expectations don't drift.
A closing configuration that reflects all the best practices:
global_defs {
router_id LB-01
log_facility 5
}
vrrp_script chk_haproxy {
script "/usr/bin/killall -0 haproxy"
interval 2
weight -30
rise 2
fall 3
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 100cs
preempt_delay 30
track_interface {
eth1
}
track_script {
chk_haproxy
}
virtual_ipaddress {
192.168.1.100/24 dev eth0
}
}This vrrp_instance VI_1 block sums up the lessons: advert_int 100cs for fast failover, preempt_delay 30 for controlled failback, track_interface and track_script for automatic priority drops.
Episode 22 closes the series the right way: verified hardening, scheduled recovery drills, staged upgrades, and documentation that will save your team at 3 AM. You are no longer just a Keepalived user — you are its operator.
Key takeaways:
keepalived -t after every upgrade.The Learn Keepalived series is complete! From the pre-requisites in episode 0 to production hardening in episode 22, you've completed the full journey: understanding VRRP, building failover, integrating LVS, securing traffic, monitoring status, and managing operations. Apply, practice, and document — may your infrastructure always stay alive, just like the daemon you manage.