Episode ini mengajarkan mengelola keepalived.conf secara profesional: versioning dengan Git, otomasi deploy dengan Ansible dan template, validasi perubahan sebelum diterapkan, strategi rollback, serta deteksi drift antar node agar konfigurasi tidak melenceng.

Semakin besar infrastruktur, semakin mustahil mengelola konfigurasi dengan vim di setiap node. Episode 11 membawa kalian ke praktik profesional: konfigurasi Keepalived dikelola seperti kode — diversioning di Git, di-render dari template, divalidasi sebelum deploy, dan di-deploy secara otomatis dan idempoten.
Tema besar episode ini adalah drift control: memastikan semua node dalam satu virtual router selalu berbicara dengan konfigurasi yang sama. Dua node dengan konfigurasi berbeda adalah bom waktu yang hanya menunggu insiden. Di akhir episode, kalian punya pipeline konfigurasi yang bisa dipertanggungjawabkan.
Simpan seluruh konfigurasi Keepalived dalam satu repository. Struktur sederhana yang disarankan:
keepalived-config/
├── inventory/hosts.yml
├── roles/keepalived/
│ ├── tasks/main.yml
│ ├── templates/keepalived.conf.j2
│ └── vars/main.yml
└── README.mdDengan struktur ini, satu repository menampung template, variabel per lingkungan, dan catatan perubahan. Tidak ada lagi konfigurasi yang hilang karena tersimpan hanya di pikiran seseorang.
Ikuti kebiasaan versioning yang baik:
git init
git add .
git commit -m "feat: tambah instance VI_GW untuk VLAN backend"
git tag config-1.2.3Perintah git commit -m "feat: ..." mencatat perubahan secara bermakna. git tag menandai versi konfigurasi yang sudah terbukti bekerja, sehingga rollback ke versi tersebut mudah dilakukan.
Template Jinja membuat satu file konfigurasi bisa dirender untuk banyak node dan environment. Contoh keepalived.conf.j2:
global_defs {
router_id {{ router_id }}
}
vrrp_instance VI_1 {
state {{ vrrp_state }}
interface {{ vrrp_interface }}
virtual_router_id {{ virtual_router_id }}
priority {{ vrrp_priority }}
virtual_ipaddress {
{{ virtual_ip }}/{{ virtual_prefix }} dev {{ vrrp_interface }}
}
}Variabel seperti vrrp_state, vrrp_priority, dan virtual_ip datang dari host_vars per node. Node MASTER dan BACKUP bisa dirender dari template yang sama hanya dengan membedakan variabel.
Playbook Ansible untuk deploy konfigurasi yang aman:
- name: Deploy konfigurasi keepalived
hosts: keepalived_nodes
tasks:
- name: Render template konfigurasi
ansible.builtin.template:
src: keepalived.conf.j2
dest: /etc/keepalived/keepalived.conf
owner: root
group: root
mode: "0600"
notify: validate dan reload
handlers:
- name: validate dan reload
ansible.builtin.command: keepalived -t -f /etc/keepalived/keepalived.conf
register: syntax_check
failed_when: syntax_check.rc != 0
- name: reload keepalived
ansible.builtin.systemd:
name: keepalived
state: reloadedTask template menulis konfigurasi dengan mode 0600, lalu handler keepalived -t memvalidasi sebelum reload. Karena idempoten, menjalankan playbook dua kali tidak mengubah apa pun jika konfigurasi sudah sama.
Jangan pernah men-deploy konfigurasi yang belum divalidasi. Urutan aman:
sudo keepalived -t -f /etc/keepalived/keepalived.conf
sudo systemctl reload keepalivedkeepalived -t adalah gerbang wajib sebelum systemctl reload keepalived. Keepalived 2.x mendukung reload dengan SIGHUP, yang diterima via systemctl reload, tanpa memutus VIP yang sedang aktif.
Jika reload menghasilkan perilaku aneh, kembalikan ke versi sebelumnya:
git checkout config-1.2.3
sudo keepalived -t -f /etc/keepalived/keepalived.conf
sudo systemctl reload keepalivedUrutan git checkout lalu validasi lalu reload membuat rollback teruji dan cepat. Simpan juga keepalived.conf lama di /etc/keepalived/keepalived.conf.bak sebelum deploy sebagai jaring pengaman kedua.
Drift adalah perbedaan konfigurasi antar node yang seharusnya identik. Deteksi rutin dengan diff:
scp lb02:/etc/keepalived/keepalived.conf /tmp/lb02.conf
diff /etc/keepalived/keepalived.conf /tmp/lb02.confOutput diff /etc/keepalived/keepalived.conf /tmp/lb02.conf yang kosong berarti kedua node konsisten. Selisih pada parameter seperti virtual_router_id dan priority yang tidak disengaja harus segera diperbaiki.
Ansible dan tool otomasi lain bekerja dengan asumsi desired state: berapa kali pun dijalankan, hasilnya sama. Ini pengaman utama drift. Konfigurasi yang dipakai hanya yang dirender dari template, bukan hasil edit manual, sehingga node yang menyeleweng akan kembali ke kondisi yang benar saat playbook berjalan.
Episode 11 mengubah cara kalian memperlakukan konfigurasi Keepalived: dari artefak lokal menjadi aset yang diversioning, di-render, divalidasi, dan di-deploy secara otomatis. Dengan Git dan Ansible, drift antar node bisa dideteksi dan dihilangkan.
Inti yang harus dibawa pulang:
keepalived -t sebelum reload.systemctl reload memakai SIGHUP tanpa memutus VIP.git checkout tag versi sebelumnya.Di episode 12 selanjutnya kita membahas HA untuk gateway dan router redundancy — Keepalived untuk failover gateway dan outbound routing, redundant default gateway dengan VRRP, serta integrasi dengan routing Linux dan policy routing.