Apa strategi yang baik untuk menjaga situs saya tetap online ketika S3 offline?
Jika S3 US East 1 menjadi offline, bagaimana cara saya mengkonfigurasi / menyusun aplikasi agar tidak membuat seluruh situs saya offline?
Apa strategi terbaik untuk melakukan diversifikasi dalam situasi seperti ini?
amazon-web-services
amazon-s3
jcolebrand
sumber
sumber
Jawaban:
Pada bulan Maret 2015, Amazon AWS mengumumkan mereka mendukung replikasi S3 di seluruh wilayah. Saat kawasan tertentu di S3 menjadi offline, Anda bisa menayangkan file dari mirror Anda di wilayah lain.
sumber: https://aws.amazon.com/blogs/aws/new-cross-region-replication-for-amazon-s3/
Praktek menjaga infrastruktur Anda online dengan melakukan peralihan ke wilayah lain adalah hal yang rumit, tetapi S3 adalah komponen yang relatif kecil dan sederhana. Netflix memiliki artikel yang bagus tentang pengalaman mereka dengan Chaos Gorilla.
Ini juga berlaku untuk degradasi layanan, seperti peningkatan latensi. Bukan hanya ketika layanan yang Anda andalkan sepenuhnya offline. Netflix juga memiliki artikel tentang ini: Chaos Engineering Upgraded .
sumber
Apa yang Anda minta adalah, pada dasarnya, ketersediaan tinggi. Untuk membuat sistem menjadi sangat tersedia, Anda perlu tiga hal:
Hilangkan satu titik kegagalan
Dalam kasus S3, poin # 1 dibahas, seperti yang ditunjukkan Evgeny, oleh replikasi lintas-wilayah S3 .
Replikasi, bagaimanapun, tidak instan dan Anda akan ingin memeriksa apakah Anda ingin membuat replikasi aplikasi Anda sadar atau tidak. Jika terjadi pemadaman, mungkin sesuatu yang ditulis ke keranjang sumber Anda belum membuatnya (tidak direplikasi) ke keranjang tujuan. Anda harus memikirkan bagaimana aplikasi akan menangani skenario seperti itu. Itu benar-benar tergantung pada tipe data, apa yang sedang dilakukan dengannya dan (berpotensi) harapan pengguna akhir atau manajemen.
Mekanisme untuk beralih dari titik akhir ke titik lain
Untuk S3, itu berarti bahwa dalam hal terjadi pemadaman, Anda ingin aplikasi berhenti membaca dan menulis dari / ke ember A dan menggunakan ember B sebagai gantinya.
Bagaimana mencapai ini, sejauh yang saya tahu, terserah Anda untuk saat ini. Beberapa layanan AWS lainnya menawarkan fail-overs yang benar-benar transparan, tapi saya tidak mengetahui hal seperti itu untuk S3 saat ini.
Ada berbagai cara untuk mencapai ini. Salah satu contoh adalah menggunakan proxy yang akan mengarahkan lalu lintas ke ember yang sesuai. Selama pemadaman, Anda akan memperbarui / mengubah proxy untuk merutekan lalu lintas ke ember yang tidak terpengaruh oleh pemadaman. Contoh lain adalah membuat konfigurasi aplikasi Anda dinamis dan menyimpannya di penyimpanan nilai kunci. Jika aplikasi cukup sering membaca toko KV untuk properti yang diperbarui, Anda dapat beralih dari mana Anda membaca dan menulis (misalnya, Spring Cloud memiliki dukungan untuk pendengar "EnvironmentChange").
Cara mendeteksi kegagalan
Yah, itu mudah, saya pikir. Cukup atur lingkaran tulis + baca dan beri tahu segera setelah sesuatu tidak beres :)
Catatan penutup
sumber