Solusi sederhana dan keren di sini adalah menempatkan ELB Anda di belakang CloudFront.
Jika server asal (ELB dalam kasus ini) melempar kesalahan 5XX (atau 4XX jika Anda suka), CloudFront dapat mengembalikan halaman kesalahan khusus , yang dapat Anda konfigurasikan CloudFront untuk mengambil dari bucket S3 dengan membuat asal kedua yang menunjuk ke bucket dan membuat routing perilaku cache (mis.) /errors/static/*
ke bucket.
Ini berfungsi lebih baik daripada Route 53 failover karena alasan penting ... cacat fatal, jika Anda mau ... browser mengerikan tentang caching pencarian DNS untuk jauh lebih lama dari yang Anda harapkan. DNS TTL tidak relevan.
Pada dasarnya, setelah browser memiliki entri DNS di tangan, itu hanya terus mencoba menggunakannya ... biasanya, sampai semua jendela browser ditutup.
Jadi, jika situs Anda digunakan untuk pengunjung yang sudah ada di situs, mereka tidak akan melihat situs pengganti.
Lebih buruk lagi, jika pengunjung mengunjungi situs Anda untuk pertama kalinya saat sedang down, mereka akan "menempel" pada halaman pemeliharaan sampai mereka menutup semua jendela browser.
Jika Anda menggunakan DNS failover, itu benar-benar hanya baik jika target failover masih aplikasi Anda, mungkin lebih jauh.
Anda dapat mematikan caching CloudFront jika Anda tidak membutuhkannya.
Anda juga dapat mengonfigurasi galat CloudFront, caching TTL ke nilai bukan nol jika Anda ingin berhenti memalu situs Anda saat sedang down dan mencoba memulihkan. Untuk halaman tertentu yang melakukan kesalahan, itu akan tetap menampilkan halaman kesalahan dan tidak mengganggu server Anda dengan lebih banyak permintaan untuk halaman itu sampai CachingTTL Kesalahan berakhir.