Layer 2 mode adalah cara paling sederhana meng-announce IP: speaker di satu node terpilih menjawab ARP/NDP untuk IP Service. Episode ini membahas L2Advertisement, leader election, mekanisme failover saat node mati, serta karakteristik dan keterbatasan mode ini.

Setelah memahami pool IP di episode 4, sekarang kita bicara soal cara meng-announce IP ke jaringan. Layer 2 mode adalah mode paling sederhana dan paling sering dipakai untuk memulai — dia tidak membutuhkan router, tidak membutuhkan BGP, dan bisa bekerja di hampir semua jaringan switch.
Namun kesederhanaan ini datang dengan trade-off yang harus kalian pahami betul: hanya satu node yang aktif menangani traffic untuk satu IP, sehingga semua traffic Service masuk lewat node tunggal itu. Episode ini membahas mekanisme ARP/NDP, leader election, failover, dan keterbatasan yang wajib kalian ingat.
Dalam Layer 2 mode, speaker di satu node terpilih meng-announce IP Service menggunakan ARP (untuk IPv4) atau NDP (untuk IPv6). Ketika perangkat di jaringan bertanya "siapa pemilik 192.168.1.200?", node terpilih menjawab dengan MAC address-nya. Dari sudut pandang jaringan, IP Service seolah-olah menempel pada sebuah node.
Setiap IP Service di-announce oleh satu node secara independen. Artinya, Service A bisa di-announce dari node 1, sedangkan Service B dari node 2. Node yang meng-announce disebut leader untuk IP tersebut.
Protokol yang dipakai (ARP/NDP) beroperasi pada lapisan kedua model OSI — lapisan data link. Tidak ada routing yang terlibat: semua perangkat dalam satu broadcast domain bisa mencapai IP Service secara langsung karena mereka tahu MAC address-nya.
L2Advertisement adalah resource yang membuat IP di-announce lewat Layer 2. Konfigurasi minimalnya mereferensikan pool:
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: l2-basic
namespace: metallb-system
spec:
ipAddressPools:
- first-poolSetelah Service mendapat IP, cek bahwa MAC address node terpilih benar-benar menjawab di jaringan:
arping -c 3 192.168.1.200
ip neigh show 192.168.1.200arping -c 3 192.168.1.200 dari mesin lain di jaringan akan dibalas oleh node leader MetalLB. Output ip neigh show 192.168.1.200 menampilkan MAC node yang meng-announce — ini adalah bukti nyata bahwa Layer 2 mode bekerja.
Untuk setiap IP Service, speaker di semua node mengikuti proses pemilihan (election). Pemenangnya menjadi leader yang meng-announce IP. Hasil election bisa dilihat dengan mudah:
kubectl get pods -n metallb-system -o wide
kubectl logs -n metallb-system -l component=speaker --tail=20Log speaker menampilkan baris seperti Announcing 192.168.1.200 from node worker-2 untuk node yang terpilih. kubectl logs -n metallb-system -l component=speaker adalah cara standar untuk memeriksa siapa leader dari setiap IP.
Inilah keunggulan utama Layer 2 mode: jika node leader mati, speaker di node lain mendeteksinya dan salah satu node menjadi leader baru secara otomatis. Failover biasanya memakan waktu beberapa detik hingga belasan detik, tergantung konfigurasi detection.
kubectl drain worker-2 --ignore-daemonsets
kubectl get pods -n metallb-system -o wideSetelah kubectl drain worker-2 --ignore-daemonsets, perhatikan bahwa announcement IP berpindah ke node lain. Satu hal penting: failover L2 bergantung pada jaringan yang mendeteksi perubahan ARP — biasanya host klien melakukan ARP lookup ulang saat koneksi terputus, sehingga failover dirasakan sebagai pemutusan sesi singkat.
Karena hanya leader yang menjawab ARP, semua traffic masuk dan keluar untuk IP tersebut melewati node leader. Traffic yang masuk diterima node leader, lalu dipakai mekanisme kube-proxy atau CNI untuk diteruskan ke pod. Node lain tidak pernah menerima traffic untuk IP itu kecuali mereka menjadi leader baru.
Implikasi langsungnya: kapasitas throughput Service dibatasi oleh bandwidth dan sumber daya node leader. Untuk skala besar, mode ini bukan pilihan terbaik — di situlah BGP mode (episode 6) unggul dengan ECMP.
Layer 2 mode tidak membutuhkan router yang mendukung BGP, tidak membutuhkan konfigurasi peering, dan bekerja di jaringan switch sederhana. Inilah alasan utama mengapa mode ini direkomendasikan untuk memulai. Konsekuensinya, IP MetalLB harus berada dalam subnet yang sama dengan perangkat yang mengaksesnya.
Perangkat klien menyimpan cache ARP, sehingga ketika leader berpindah, cache klien masih menunjuk ke MAC lama. MetalLB mengirim gratuitous ARP untuk memperbarui cache, tetapi klien yang meng-cache agresif bisa membutuhkan beberapa detik untuk mengikuti. Untuk Service dengan persistensi sesi yang ketat, pertimbangkan ini dalam desain.
Advertisements bisa mereferensikan lebih dari satu pool. Praktik ini berguna ketika kalian ingin meng-announce semua pool lewat Layer 2 dengan satu resource:
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: l2-multi
namespace: metallb-system
spec:
ipAddressPools:
- first-pool
- reserved-poolSecara default, satu node leader bisa meng-announce banyak IP sekaligus. Kontrol terhadap interface dan node mana yang boleh meng-announce akan dibahas lengkap di episode 8. Untuk sekarang, yang perlu dipahami adalah bahwa setiap IP di-announce secara independen, dan pemilihan leader dilakukan per IP.
Episode 5 menuntaskan Layer 2 mode: bagaimana ARP/NDP digunakan untuk meng-announce IP dari node leader, bagaimana leader dipilih dan failover berjalan saat node mati, serta trade-off di mana semua traffic Service harus melewati satu node.
Inti yang harus dibawa pulang:
L2Advertisement mengaktifkan announcement Layer 2 untuk pool tertentu.Di episode 6 selanjutnya kita akan membahas BGP mode — bagaimana MetalLB melakukan peering dengan router (Cisco, Juniper, Mikrotik, atau FRR), konfigurasi BGPPeer dan BGPAdvertisement, serta keunggulan ECMP yang memungkinkan traffic menyebar ke banyak node sekaligus. Ini adalah jalan keluar dari batasan single-node Layer 2.