Azure Event Hubs - Pemulihan bencana geografis

Ketahanan terhadap pemadaman sumber daya pemrosesan data akibat bencana adalah persyaratan bagi banyak perusahaan dan, dalam beberapa kasus, bahkan diperlukan oleh peraturan industri.

Azure Event Hubs sudah menyebarkan risiko kegagalan bencana mesin individu atau bahkan menyelesaikan rak di seluruh kluster yang mencakup beberapa domain kegagalan dalam pusat data. Ini menerapkan deteksi kegagalan transparan dan mekanisme failover sehingga layanan akan terus beroperasi dalam tingkat layanan yang terjaga dan biasanya tanpa gangguan yang nyata jika terjadi kegagalan tersebut. Jika Anda membuat namespace Layanan Pusat Aktivitas dengan zona ketersediaan diaktifkan, Anda mengurangi risiko pemadaman lebih lanjut dan mengaktifkan ketersediaan tinggi. Dengan zona ketersediaan, risiko pemadaman lebih jauh tersebar di tiga fasilitas yang dipisahkan secara fisik, dan layanan ini memiliki cadangan kapasitas yang cukup untuk segera mengatasi hilangnya seluruh fasilitas yang lengkap dan mengerikan.

Model klaster Azure Event Hubs yang aktif dengan dukungan availability zone memberikan ketahanan terhadap kegagalan perangkat keras yang berat dan bahkan kehilangan seluruh fasilitas pusat data. Namun, mungkin ada situasi mengerikan dengan kehancuran fisik meluas yang bahkan langkah-langkah tersebut tidak cukup dapat mencegahnya.

Fitur Pemulihan bencan Geo Service Bus dirancang untuk mempermudah pemulihan dari bencana sebesar ini dan meninggalkan wilayah Azure yang gagal untuk selamanya dan tanpa harus mengubah konfigurasi aplikasi Anda. Meninggalkan wilayah Azure biasanya akan melibatkan beberapa layanan dan fitur ini, terutama bertujuan untuk membantu menjaga integritas konfigurasi aplikasi komposit.

Fitur pemulihan bencana Geo memastikan bahwa seluruh konfigurasi namespace (Antrean, Topik, Langganan, Filter) terus direplikasi dari namespace primer ke namespace sekunder saat dipasangkan, dan memungkinkan Anda untuk memulai perpindahan failover satu kali dari primer ke sekunder kapan saja. Langkah failover akan menunjuk kembali nama alias yang dipilih untuk namespace ke namespace sekunder lalu membatalkan pemasangan. Failover hampir dijalankan seketika setelah dimulai.

Penting

  • Fitur ini memungkinkan kelangsungan operasi seketika dengan konfigurasi yang sama, tetapi tidak mereplikasi data peristiwa. Kecuali bencana menyebabkan hilangnya semua zona, data peristiwa yang dipertahankan di Hub Peristiwa utama setelah failover akan dapat dipulihkan dan peristiwa bersejarah dapat diperoleh dari sana setelah akses dipulihkan. Untuk mereplikasi konten antrean dan langganan topik serta mengoperasikan namespace yang sesuai dalam konfigurasi aktif untuk mengatasi pemadaman dan bencana, jangan hanya mengandalkan set fitur pemulihan bencana Geo ini, tetapi ikuti panduan replikasi.
  • Penetapan kontrol akses berbasis peran (RBAC) Microsoft Entra ke entitas di namespace layanan utama tidak direplikasi ke namespace sekunder. Buat tugas peran secara manual di namespace layanan sekunder untuk mengamankan aksesnya.

Pemadaman dan bencana

Penting untuk diperhatikan perbedaan antara "pemadaman" dan "bencana." Pemadaman adalah ketersediaan sementara Hub Aktivitas Azure, dan dapat memengaruhi beberapa komponen layanan, seperti penyimpanan pesan, atau bahkan seluruh pusat data. Namun, setelah masalah diperbaiki, Event Hubs akan tersedia lagi. Biasanya, pemadaman tidak menyebabkan hilangnya pesan atau data lainnya. Contoh pemadaman tersebut mungkin merupakan kegagalan daya di pusat data. Beberapa pemadaman hanya kehilangan koneksi sementara karena masalah sementara atau jaringan.

Bencana didefinisikan sebagai kerugian permanen, atau kehilangan jangka panjang atas kluster Service Bus, wilayah Azure, atau pusat data. Wilayah atau pusat data mungkin atau mungkin tidak tersedia lagi, atau mungkin mengalami penurunan selama berjam-jam atau berhari-hari. Contoh bencana tersebut adalah kebakaran, banjir, atau gempa bumi. A disaster that becomes permanent might cause the loss of some messages, events, or other data. Namun, dalam kebanyakan kasus, seharusnya tidak ada kehilangan data dan pesan yang dapat dipulihkan setelah pusat data dicadangkan.

Fitur pemulihan bencana Geo Azure Service Bus adalah solusi pemulihan bencana. Konsep dan alur kerja yang dijelaskan dalam artikel ini berlaku untuk skenario bencana, dan bukan untuk kejadian sementara, atau pemadaman sementara. Untuk diskusi terperinci tentang pemulihan bencana di Microsoft Azure, lihat artikel ini.

Konsep dan istilah dasar

Fitur pemulihan bencana menerapkan metadata pemulihan bencana, dan mengandalkan namespace pemulihan bencana primer dan sekunder.

Fitur pemulihan Geo-disaster hanya tersedia untuk SKU standar, premium, dan khusus. Anda tidak perlu membuat perubahan string koneksi apa pun, karena koneksi dibuat melalui alias.

Alat berikut ini digunakan dalam artikel ini:

  • Alias: Nama untuk konfigurasi pemulihan bencana yang Anda siapkan. Alias menyediakan string koneksi Nama Domain yang Sepenuhnya Memenuhi Syarat (FQDN) yang stabil. Aplikasi menggunakan string koneksi alias ini untuk menyambungkan ke namespace.

  • Namespace primer/sekunder: Namespace yang sesuai dengan alias. Namespace primer berstatus "aktif" dan menerima pesan (ini bisa menjadi namespace yang sudah ada atau baru). Namespace sekunder berstatus "pasif" dan tidak menerima pesan. Metadata di antara keduanya disinkronkan, sehingga keduanya dapat menerima pesan dengan lancar tanpa kode aplikasi atau perubahan string koneksi. Untuk memastikan bahwa hanya namespace aktif yang menerima pesan, Anda harus menggunakan alias.

  • Metadata: Entitas seperti antrean, topik, dan langganan; dan sifat layanannya yang terkait dengan namespace. Hanya entitas dan pengaturannya yang direplikasi secara otomatis. Pesan dan acara tidak direplikasi.

  • Failover: Proses aktivasi namespace sekunder.

Pasangan ruang nama yang didukung

Kombinasi ruang nama primer dan sekunder berikut didukung:

Tingkat namespace layanan utama Tingkat namespace layanan sekunder yang diizinkan
Standard Standar, Khusus
Premium Premium
Khusus Khusus

Catatan

Anda tidak dapat memasangkan namespace yang berada di kluster khusus yang sama. Anda tidak dapat memasangkan namespace yang berada di kluster khusus yang sama.

Alur penyetelan dan failover

Bagian berikut ini adalah gambaran umum dari proses failover, dan menjelaskan cara menyiapkan failover awal.

Image showing the overview of failover process

Konfigurasi

Anda terlebih dahulu membuat atau menggunakan namespace primer yang sudah ada, dan namespace sekunder baru, lalu memasangkan keduanya. Pemasangan ini memberi Anda alias yang dapat digunakan untuk tersambung. Karena menggunakan alias, Anda tidak perlu mengubah string koneksi. Hanya namespace baru yang dapat ditambahkan ke pemasangan failover Anda.

  1. Buat namespace primer.

  2. Buat namespace sekunder di wilayah yang berbeda. Langkah ini bersifat opsional. Anda dapat membuat namespace sekunder saat membuat pasangan di langkah berikutnya.

  3. Di portal Azure, navigasikan ke namespace primer Anda.

  4. Pilih Pemulihan Geo di menu sebelah kiri, lalu pilih Mulai pemasangan pada bar alat.

    Initiate pairing from the primary namespace

  5. Pada halaman Mulai pemasangan, ikuti langkah-langkah berikut:

    1. Pilih namespace sekunder yang sudah ada atau buat di wilayah lain. Dalam contoh ini, ruang nama yang ada dipilih.
    2. Untuk Alias, masukkan alias untuk pemasangan geo-dr.
    3. Lalu, pilih Buat.

    Select the secondary namespace

  6. Anda akan melihat halaman Geo-DR Alias. Anda juga dapat membuka halaman Geo-DR Alias dari halaman namespace primer dengan memilih Geo-recovery di menu sebelah kiri.

    Geo-DR alias page

  7. Pada halaman Alias Geo-DR, pilih Kebijakan akses bersama di menu sebelah kiri untuk mengakses string koneksi primer untuk alias. Use this connection string instead of using the connection string to the primary/secondary namespace directly.

  8. Pada halaman Gambaran Umum ini, Anda bisa melakukan tindakan berikut:

    1. Putuskan pemasangan antara namespace primer dan sekunder. Pilih Putuskan pemasangan pada bar alat.

    2. Lakukan failover secara manual ke namespace sekunder. Pilih Failover pada bar alat.

      Peringatan

      Failover akan mengaktifkan namespace sekunder dan menghapus namespace primer dari pemasangan Geo-Pemulihan Bencana. Buat namespace lain untuk memiliki pasangan pemulihan bancana-geo baru.

Akhirnya, Anda harus menambahkan beberapa pemantauan untuk mendeteksi apakah failover diperlukan. Dalam kebanyakan kasus, layanan ini adalah salah satu bagian dari ekosistem besar, sehingga failover otomatis jarang dimungkinkan, karena seringkali failover harus dilakukan selaras dengan sisa subsistem atau infrastruktur.

Contoh

Dalam salah satu contoh skenario ini, pertimbangkan solusi Point of Sale (POS) yang memancarkan pesan atau peristiwa. Hub Kejadian meneruskan peristiwa tersebut ke beberapa solusi pemetaan atau reformatting, yang kemudian meneruskan data yang dipetakan ke sistem lain untuk diproses lebih lanjut. Pada saat itu, semua sistem ini mungkin dihosting di wilayah Azure yang sama. Keputusan kapan dan bagian apa yang gagal tergantung pada aliran data dalam infrastruktur Anda.

Anda dapat mengotomatiskan failover baik dengan sistem pemantauan ataupun dengan solusi pemantauan yang dibuat khusus. Namun, otomatisasi semacam itu membutuhkan perencanaan dan pekerjaan ekstra, yang tidak dicakup dalam artikel ini.

Alur failover

Jika Anda memulai failover, diperlukan dua langkah:

  1. Jika pemadaman lain terjadi, Anda ingin dapat melakukan failover lagi. Jadi, siapkan namespace pasif lain dan perbarui pemasangan.

  2. Tarik pesan dari namespace primer sebelumnya setelah tersedia lagi. Setelah itu, gunakan namespace tersebut untuk pesan reguler di luar pengaturan pemulihan geografis Anda, atau hapus ruang nama primer yang lama.

Catatan

Hanya semantik penerusan yang gagal yang didukung. Dalam skenario ini, Anda melakukan failover, lalu memasangkan kembali dengan namespace baru. Fallback tidak didukung; misalnya, dalam kluster SQL.

Image showing the failover flow

Failover manual

Bagian ini memperlihatkan cara kegagalan secara manual saat menggunakan portal Azure, CLI, PowerShell, C#, dll.

  1. Di portal Azure, navigasikan ke namespace primer Anda.

  2. Pilih Pemulihan geografis di menu sebelah kiri.

  3. Lakukan failover secara manual ke namespace sekunder. Pilih Failover pada bar alat.

    Peringatan

    Failover akan mengaktifkan namespace sekunder dan menghapus namespace primer dari pemasangan Geo-Pemulihan Bencana. Buat namespace lain untuk memiliki pasangan pemulihan bancana-geo baru.

Manajemen

Jika Anda membuat kesalahan; misalnya, Anda memasangkan bidang yang salah selama pengaturan awal, Anda dapat memutuskan pemasangan dua namespace kapan saja. Jika Anda ingin menggunakan namespace yang dipasangkan sebagai namespace biasa, hapus alias.

Pertimbangan

Perhatikan pertimbangan berikut untuk diingat:

  1. Secara desain, pemulihan geo-bencana Event Hubs tidak mereplikasi data, dan karena itu Anda tidak dapat menggunakan kembali nilai offset lama dari hub peristiwa utama Anda di hub peristiwa sekunder Anda. Sebaiknya mulai ulang penerima peristiwa Anda dengan salah satu metode berikut:

    • EventPosition.FromStart() - Jika Anda ingin membaca semua data di hub peristiwa sekunder Anda.
    • EventPosition.FromEnd() - Jika Anda ingin membaca semua data baru dari waktu koneksi ke hub peristiwa sekunder Anda.
    • EventPosition.FromEnqueuedTime(dateTime) - Jika Anda ingin membaca semua data yang diterima di hub acara sekunder Anda mulai dari tanggal dan waktu tertentu.
  2. Dalam perencanaan failover Anda, Anda juga harus mempertimbangkan faktor waktu. Misalnya, jika Anda kehilangan konektivitas selama lebih dari 15 hingga 20 menit, Anda mungkin memutuskan untuk memulai failover.

  3. Faktanya bahwa tidak ada data yang direplikasi berarti bahwa sesi aktif saat ini tidak direplikasi. Selain itu, deteksi duplikat dan pesan terjadwal mungkin tidak berfungsi. Sesi baru, pesan terjadwal baru, dan duplikat baru akan berfungsi.

  4. Melakukan failover atas infrastruktur terdistribusi yang kompleks harus dilatih setidaknya sekali.

  5. Menyinkronkan entitas dapat memakan waktu, sekitar 50-100 entitas per menit.

  6. Beberapa aspek bidang manajemen untuk namespace layanan sekunder menjadi baca-saja saat pasangan pemulihan geografis aktif.

  7. Bidang data namespace sekunder akan bersifat baca-saja saat pemasangan pemulihan geografis aktif. Bidang data namespace sekunder akan menerima permintaan GET untuk mengaktifkan validasi konektivitas klien dan kontrol akses.

Zona Ketersediaan

Event Hubs mendukung Zona Ketersediaan, menyediakan lokasi yang terisolasi dari fault dalam wilayah Azure. Dukungan Zona Ketersediaan hanya tersedia di wilayah Azure dengan zona ketersediaan. Baik metadata maupun data (peristiwa) direplikasi di seluruh pusat data di zona ketersediaan.

Saat membuat namespace, Anda akan melihat pesan yang disorot berikut saat Anda memilih wilayah yang memiliki zona ketersediaan.

Image showing the Create Namespace page with region that has availability zones

Catatan

Saat Anda menggunakan portal Microsoft Azure, redundansi zona melalui dukungan untuk zona ketersediaan diaktifkan secara otomatis. Anda tidak dapat menonaktifkan redundansi zona di portal. Anda dapat menggunakan perintah Azure CLI az eventhubs namespace dengan --zone-redundant=false atau menggunakan perintah PowerShell New-AzEventHubNamespace dengan -ZoneRedundant=false untuk membuat namespace dengan redundansi zona yang dinonaktifkan.

Titik Akhir Privat

Bagian ini memberikan lebih banyak pertimbangan saat menggunakan pemulihan bencana Geo dengan namespace yang menggunakan titik akhir pribadi. Untuk mempelajari tentang menggunakan titik akhir privat dengan Hub Kejadian secara umum, lihat Mengonfigurasi titik akhir privat.

Pasangan baru

Jika Anda mencoba melakukan pemasangan antara namespace primer dengan titik akhir pribadi dan namespace sekunder tanpa titik akhir pribadi, pemasangan akan gagal. Pemasangan akan berhasil hanya jika namespace primer dan sekunder memiliki titik akhir pribadi. Sebaiknya Anda menggunakan konfigurasi yang sama pada namespace primer dan sekunder serta pada jaringan virtual tempat titik akhir pribadi dibuat.

Catatan

Ketika Anda mencoba memasangkan namespace primer dengan titik akhir pribadi dan namespace sekunder, proses validasi hanya memeriksa apakah titik akhir pribadi ada pada namespace sekunder. Ini tidak memeriksa apakah titik akhir berfungsi atau akan berfungsi setelah failover. Anda bertanggung jawab untuk memastikan bahwa namespace sekunder dengan titik akhir pribadi akan berfungsi seperti yang diharapkan setelah failover.

Untuk menguji bahwa konfigurasi titik akhir privat sama pada namespace utama dan sekunder, kirim permintaan baca (misalnya: Dapatkan Event Hub)ke ruang nama sekunder dari luar jaringan virtual, dan verifikasi bahwa Anda menerima pesan kesalahan dari layanan.

Pasangan yang sudah ada

Jika pemasangan antara namespace primer dan sekunder sudah ada, pembuatan titik akhir pribadi pada namespace primer akan gagal. Untuk mengatasinya, buat titik akhir pribadi pada namespace sekunder terlebih dahulu, lalu buat titik akhir untuk namespace primer.

Catatan

Meskipun kami mengizinkan akses baca-saja ke namespace sekunder, pembaruan untuk konfigurasi titik akhir pribadi diizinkan.

Saat membuat konfigurasi pemulihan bencana untuk aplikasi dan Service Bus, Anda harus membuat titik akhir pribadi untuk namespace Service Bus primer dan sekunder terhadap jaringan virtual yang menghosting instans primer dan sekunder pada aplikasi Anda.

Katakanlah Anda memiliki dua jaringan virtual: VNET-1, VNET-2, serta namespace primer dan sekunder ini: EventHubs-Namespace1-Primary, EventHubs-Namespace2-Secondary. Anda perlu melakukan langkah-langkah berikut:

  • Pada EventHubs-Namespace1-Primary, buat dua titik akhir pribadi yang menggunakan subnet dari VNET-1 dan VNET-2
  • Pada EventHubs-Namespace2-Secondary, buat dua titik akhir pribadi yang menggunakan subnet yang sama dari VNET-1 dan VNET-2

Private endpoints and virtual networks

Keuntungan dari pendekatan ini adalah failover dapat terjadi pada lapisan aplikasi yang terpisah dari namespace Event Hubs. Pertimbangkan skenario berikut:

Failover hanya aplikasi: Di sini, aplikasi tidak akan keluar dari VNET-1 tetapi akan berpindah ke VNET-2. Karena kedua titik akhir pribadi dikonfigurasi pada VNET-1 dan VNET-2 untuk namespace primer dan sekunder, aplikasi akan tetap berfungsi.

Faiolver hanya namespace Event Hubs: Di sini lagi, karena kedua titik akhir pribadi dikonfigurasi pada kedua jaringan virtual untuk namespace primer dan sekunder, aplikasi akan tetap berfungsi.

Catatan

Untuk panduan tentang pemulihan bencana geo jaringan virtual, lihat Virtual Network - Kelangsungan Bisnis.

Kontrol Akses Berbasis Peran

Penetapan kontrol akses berbasis peran (RBAC) Microsoft Entra ke entitas di namespace layanan utama tidak direplikasi ke namespace sekunder. Buat tugas peran secara manual di namespace layanan sekunder untuk mengamankan aksesnya.

Langkah berikutnya

Tinjau contoh atau dokumentasi referensi berikut.