Apa strategi yang baik untuk menjaga situs saya tetap online ketika S3 offline?


32

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?


Apa yang kamu coba?
030

Jawaban:


26

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 .


Strategi untuk memeriksa apakah sesuatu berfungsi, adalah untuk menguji apakah itu berfungsi. Hal yang sama berlaku untuk cadangan, kode, dll. Saya sarankan memiliki lingkungan pementasan Anda (jika Anda memilikinya) atau lingkungan pengembangan Anda (jika Anda memilikinya) bekerja dari situs yang direplikasi ketika Anda menjalankan tes.
Evgeny

Netflix dikenal untuk menjadikan seluruh wilayah offline untuk memeriksa apakah rencana cadangan mereka benar-benar berfungsi.
Evgeny

Saya ingat ketika Netflix dulu turun dengan Amazon ....
wogsland

10

Apa yang Anda minta adalah, pada dasarnya, ketersediaan tinggi. Untuk membuat sistem menjadi sangat tersedia, Anda perlu tiga hal:

  1. Hilangkan satu titik kegagalan
  2. Mekanisme untuk beralih dari titik akhir ke titik lain
  3. Cara mendeteksi kegagalan

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

  • Jika aplikasi Anda menulis ke ember, Anda harus memikirkan apa yang akan terjadi jika terjadi kegagalan. Sudahkah semua tulisan berhasil sampai ke ember tujuan (dan dapatkah Anda memberi tahu)? Bisakah Anda mengizinkan penulisan ke bucket tujuan (menjadikannya "primer" baru)? Perencanaan yang cermat akan menghindari skenario pembaruan otak yang hilang atau hilang.
  • Tergantung pada SLA Anda, Anda mungkin ingin poin # 2 dan # 3 menjadi otomatis atau otomatis. Itu membutuhkan perencanaan, perkakas, dan pengujian tambahan, tetapi skrip yang ditulis dengan baik akan selalu bereaksi lebih cepat dan dalam cara yang lebih dapat diprediksi daripada yang dapat dilakukan manusia (kegagalan juga memiliki kebiasaan yang mengganggu terjadi di tengah malam ketika intervensi manusia adalah sesuatu yang berbahaya.
  • Patut disebutkan bahwa replikasi lintas wilayah sekalipun tidak sepenuhnya menghilangkan titik kegagalan tunggal. Tentu, jika suatu daerah turun, Anda dilindungi. Tetapi bagaimana jika pemadaman AWS di seluruh AS terjadi? Azure mengalami pemadaman sebagian tetapi global tahun lalu dan satu di 2014 juga.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.