Disaster Recovery (DR) adalah serangkaian proses, kebijakan, dan teknologi yang dirancang untuk mengatasi atau memulihkan sistem IT setelah terjadinya trouble serius yang mengancam operasional normal. Trouble yang dimaksud bisa berupa hal-hal seperti kegagalan perangkat keras, serangan siber, Human error, atau situasi tak terduga lainnya yang dapat menyebabkan gangguan atau kerusakan pada sistem dan data.
Mungkin penjelasan dari mbah google tentang DR begitu yang intinya ketika cluster Utama mengalami down atau terjadi gangguan , trafik atau request bisa di arahkan ke cluster DR atau Backup . Berikut untuk topologi nya :

Nginx ini bisa di ganti dengan f5 lebih bagusnya
Setup DR
Untuk setup DR yang pertama di butuhkan Service openvpn di mana service tersebut agar Cluster dari GCP dan di cluster Hetzner bisa satu koneksi karena mendapat ip internal dari Openvpn tersebut . Untuk cara setup nya silahkan cari di google karena kalo di share disini kepanjangan , atau lain kali saya share juga .
Setup Nginx Reverse Proxy at AWS
Install nginx
| |
Backup Konfigurasi lama
| |
Setup Konfigurasi baru
| |
| |
Buat direktori stream.d
| |
Buat konfigurasi Reverse Proxy , dengan backend ke haproxy dari cluster GCP dan Hetzner
| |
| |
Konfigurasi tersebut , ketika server yang utama itu mati otomatis trafik di alirkan semua ke server yang kedua , Apabila server yang utama nyala lagi otomatis semua trafik akan menuju ke server utama.
Pastikan konfigurasi nginx benar
| |
Apabila sudah benar tidak ada error , restart nginx
| |
Untuk setup domain dengan instance AWS , kalian harus punya domain yang sudah ter integrasi dengan cloudflare , dengan setup seperti ini

Setup Reverse proxy with Haproxy
Install Haproxy
| |
Backup konfigurasi default
| |
Setup konfigurasi yang baru
| |
Tambahkan konfigurasi ini di paling bawah
| |
Karena saya menggunakan ingress type hostport jadi default port nya 80 , dan ingress saya bertype daemonset . Sesuaikan dengan cluster kalian
Check konfigurasi yang baru
| |
Apabila konfigurasi telah benar dan tidak ada error , restart haproxy tersebut
| |
Setelah konfigurasi semua telah disetup mari kita test
Sanity DR Traffic
Untuk pengetesan nya saya hanya memakai deployment simple nginx dengan custom index menggunakan configmap , berikut untuk sample nya
| |
Apabila mau mencoba , Silahkan sesuaikan dengan cluster kalian
Untuk pengetesan nya kita akan hit domain tersebut dari local kita dan meng check apakah traffic masuk ? apakah ada downtime ?
Untuk pengetesan ada di link ini ya
Panel kiri adalah cluster GCP ( Utama ) , Panel kanan adalah cluster Hetzner ( Backup )
Dari video tersebut log 200 muncul di panel kiri yang artinya traffic sesuai mengarah ke cluster utama , untuk validasi berikut traffic ingress request

Sekarang menuju ke skenario , skenario nya adalah seolah — olah cluster pertama mengalami down atau trouble yang lain nya . Untuk membuat trouble kita cukup stop service haproxy di cluster utama dengan command
| |
Saat stop service haproxy pastikan local telah melakukan hit terus menerus agar ketauan apakah ada downtime atau tidak
Berikut link demo nya
Dari video tersebut kita lihat , Dari Cluster utama (panel kiri) menghasilkan log yang berarti traffic ke cluster utama , setelah membuat skenario seolah — olah cluster tersebut down yang mana meng stop service haproxy nya , Log dari cluster backup (panel kanan) mulai berjalan yang mana berarti traffic semua mengarah ke cluster backup dan saat haproxy cluster utama di jalankan , traffic normal seperti biasa ke cluster utama . Untuk validasi check dashboard ingress lagi

Terjadi no traffic saat haproxy utama di stop

Terjadi traffic saat haproxy utama di stop .
Voilaaa , DR Traffic telah berhasil . Mungkin untuk setup tersebut hanya DR Traffic dengan topologi yang sangat simple , mungkin apabila sudah menuju ke prod atau dll , setup tersebut mungkin lebih komplex . Seharus nya DR dari mulai Deployment,DB semua itu sync antara cluster utama dan backup , karena untuk membuat itu cukup sangat panjang dan masih mencari bestpractice untuk sync DB nya mungkin saya bahas lain kali saja . Mohon maaf apabila ada kalimat yang susah dipaham / kurang mengerti / terlalu berbelit2 , sekian ges chersss. ☕
