Belajar Keepalived - Configuration Management & Drift Control
Episode 11 of 23

Belajar Keepalived - Configuration Management & Drift Control

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.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

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.

Versioning keepalived.conf dengan Git

Repository Konfigurasi

Simpan seluruh konfigurasi Keepalived dalam satu repository. Struktur sederhana yang disarankan:

Struktur repository config
keepalived-config/
├── inventory/hosts.yml
├── roles/keepalived/
│   ├── tasks/main.yml
│   ├── templates/keepalived.conf.j2
│   └── vars/main.yml
└── README.md

Dengan struktur ini, satu repository menampung template, variabel per lingkungan, dan catatan perubahan. Tidak ada lagi konfigurasi yang hilang karena tersimpan hanya di pikiran seseorang.

Commit yang Bermakna

Ikuti kebiasaan versioning yang baik:

Versioning konfigurasi
git init
git add .
git commit -m "feat: tambah instance VI_GW untuk VLAN backend"
git tag config-1.2.3

Perintah git commit -m "feat: ..." mencatat perubahan secara bermakna. git tag menandai versi konfigurasi yang sudah terbukti bekerja, sehingga rollback ke versi tersebut mudah dilakukan.

Otomasi dengan Ansible

Template Konfigurasi

Template Jinja membuat satu file konfigurasi bisa dirender untuk banyak node dan environment. Contoh keepalived.conf.j2:

Template 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.

Task Idempoten

Playbook Ansible untuk deploy konfigurasi yang aman:

Playbook deploy keepalived
- 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: reloaded

Task 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.

Validasi dan Rollback

Validasi Sebelum Deploy

Jangan pernah men-deploy konfigurasi yang belum divalidasi. Urutan aman:

Validasi dan reload
sudo keepalived -t -f /etc/keepalived/keepalived.conf
sudo systemctl reload keepalived

keepalived -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.

Strategi Rollback

Jika reload menghasilkan perilaku aneh, kembalikan ke versi sebelumnya:

Rollback konfigurasi
git checkout config-1.2.3
sudo keepalived -t -f /etc/keepalived/keepalived.conf
sudo systemctl reload keepalived

Urutan 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.

Mengontrol Drift Antar Node

Diff Antar Node

Drift adalah perbedaan konfigurasi antar node yang seharusnya identik. Deteksi rutin dengan diff:

Bandingkan konfigurasi antar node
scp lb02:/etc/keepalived/keepalived.conf /tmp/lb02.conf
diff /etc/keepalived/keepalived.conf /tmp/lb02.conf

Output 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.

Idempotensi sebagai Pengaman

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.

Penutup

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:

  • Simpan seluruh konfigurasi Keepalived di Git dengan commit bermakna.
  • Render konfigurasi dari template Jinja per environment.
  • Selalu validasi dengan keepalived -t sebelum reload.
  • systemctl reload memakai SIGHUP tanpa memutus VIP.
  • Rollback teruji dengan git checkout tag versi sebelumnya.
  • Diff rutin antar node adalah detektor drift paling sederhana.

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.

Belajar Keepalived - Configuration Management & Drift Control | Belajar Keepalived