Menyelesaikan sinkronisasi antrean RabbitMQ yang dijeda - Amazon MQ

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menyelesaikan sinkronisasi antrean RabbitMQ yang dijeda

Dalam deployment klaster Amazon MQ for RabbitMQ, pesan yang dipublikasikan untuk setiap antrean direplikasi di tiga simpul broker. Replikasi ini, disebut sebagai pencerminan, menyediakan ketersediaan tinggi (HA) untuk broker RabbitMQ. Antrean dalam deployment klaster terdiri dari replika utama di satu simpul dan satu atau lebih cermin. Setiap operasi diterapkan ke antrean cermin, termasuk pesan penambahan antrean, terlebuh dahulu diterapkan ke antrean utama lalu direplikasi di seluruh cermin.

Misalnya, pertimbangkan antrean yang dicerminkan direplikasi di tiga simpul: simpul utama (main) dan dua cermin (mirror-1 dan mirror-2). Jika semua pesan dalam antrean cermin ini berhasil disebarkan ke semua cermin, antrean akan disinkronkan. Jika simpul (mirror-1) menjadi tidak tersedia selama interval waktu tertentu, antrean tetap operasional dan dapat terus menambahkan antrean pesan. Namun, untuk menyinkronkan antrean, pesan dipublikasikan ke main, sementara mirror-1 tidak tersedia dan harus direplikasi ke mirror-1.

Untuk informasi selengkapnya tentang pencerminan, lihat Antrean Klasik yang Dicerminkan di situs RabbitMQ.

Sinkronisasi pemeliharaan dan antrean

Selama jendela pemeliharaan, Amazon MQ melakukan semua pekerjaan pemeliharaan, satu simpul pada satu waktu, untuk memastikan bahwa broker tetap operasional. Akibatnya, antrian mungkin perlu disinkronkan karena setiap simpul melanjutkan operasi. Selama sinkronisasi, pesan yang perlu direplikasi ke cermin dimuat ke dalam memori dari volume Amazon Elastic Block Store (Amazon EBS) yang sesuai untuk diproses dalam batch. Memproses pesan dalam batch memungkinkan antrean menyinkronkan lebih cepat.

Jika antrean dibuat tetap pendek dan pesan berukuran kecil, antrean berhasil disinkronkan dan melanjutkan operasi seperti yang diharapkan. Namun, jika jumlah data dalam batch mendekati batas memori simpul, simpul memicu alarm memori tinggi, menjeda sinkronisasi antrean. Anda dapat mengonfirmasi penggunaan memori dengan membandingkanRabbitMemUsed dan metrik nodeRabbitMqMemLimit broker di CloudWatch. Sinkronisasi tidak dapat diselesaikan hingga pesan dikonsumsi atau dihapus, atau jumlah pesan dalam batch dikurangi.

catatan

Mengurangi ukuran batch sinkronisasi antrean dapat mengakibatkan jumlah transaksi replikasi yang lebih tinggi.

Untuk mengatasi sinkronisasi antrean yang dijeda, ikuti langkah-langkah dalam tutorial ini, yang menunjukkan cara menerapkan kebijakan ha-sync-batch-size dan memulai ulang sinkronisasi antrean.

Prasyarat

Untuk tutorial ini, Anda harus memiliki pengguna broker Amazon MQ for RabbitMQ dengan izin administrator. Anda dapat menggunakan pengguna administrator yang dibuat ketika pertama kali membuat broker, atau pengguna lain yang mungkin telah Anda buat sesudahnya. Tabel berikut menyediakan tanda pengguna administrator yang diperlukan dan izin sebagai pola ekspresi reguler (regexp).

Tanda Baca regexp Konfigurasikan regexp Tulis regexp
administrator .* .* .*

Untuk informasi selengkapnya tentang cara membuat pengguna RabbitMQ serta mengelola tanda dan izin pengguna, lihat Amazon MQ untuk pengguna broker RabbitMQ.

Langkah 1: Menerapkan kebijakan ha-sync-batch-size

Prosedur berikut mendemonstrasikan penambahan kebijakan yang berlaku untuk semua antrean yang dibuat pada broker. Anda dapat menggunakan konsol web RabbitMQ atau API manajemen RabbitMQ. Untuk informasi selengkapnya, lihat Plugin Manajemen di situs web RabbitMQ.

Untuk menerapkan kebijakan ha-sync-batch-size menggunakan konsol web RabbitMQ
  1. Masuk ke konsol Amazon MQ.

  2. Di panel navigasi kiri, pilih Broker.

  3. Dari daftar broker, pilih nama broker yang ingin Anda terapkan kebijakan baru.

  4. Di halaman broker, pada bagian Koneksi, pilih URL konsol web RabbitMQ. Konsol web RabbitMQ terbuka di tab browser atau jendela baru.

  5. Login ke konsol web RabbitMQ dengan kredenisasi login administrator broker Anda.

  6. Di konsol web RabbitMQ, di bagian atas halaman, pilih Admin.

  7. Di halaman Admin, di panel navigasi kanan, pilih Kebijakan.

  8. Di halaman Kebijakan, Anda dapat melihat daftar Kebijakan pengguna broker saat ini. Di bawah Kebijakan pengguna, perluas Tambahkan / perbarui kebijakan.

    catatan

    Secara default, klaster Amazon MQ for RabbitMQ dibuat dengan kebijakan broker awal bernama ha-all-AWS-OWNED-DO-NOT-DELETE. Amazon MQ mengelola kebijakan ini untuk memastikan bahwa setiap antrean pada broker direplikasi ke ketiga simpul dan antrean tersebut disinkronkan secara otomatis.

  9. Untuk membuat kebijakan broker baru, di bawah Tambahkan / perbarui kebijakan, lakukan hal berikut:

    1. Untuk Nama, masukkan nama untuk kebijakan Anda, misalnya batch-size-policy.

    2. Untuk Pola, masukkan pola regexp .* sehingga kebijakan cocok dengan semua antrean pada broker.

    3. Untuk Terapkan ke, pilih Pertukaran dan antrean dari daftar dropdown.

    4. Untuk Prioritas, masukkan integer yang lebih besar dari semua kebijakan lain yang diterapkan ke vhost. Anda dapat menerapkan satu set definisi kebijakan ke antrean dan pertukaran RabbitMQ pada waktu tertentu. RabbitMQ memilih kebijakan yang cocok dengan nilai prioritas tertinggi. Untuk informasi selengkapnya tentang prioritas kebijakan dan cara menggabungkan kebijakan, lihat Kebijakan dalam Dokumentasi Server RabbitMQ.

    5. Untuk Definisi, tambahkan pasangan nilai kunci berikut:

      • ha-sync-batch-size=100. Pilih Nomor dari daftar dropdown.

        catatan

        Anda mungkin perlu menyesuaikan dan mengalibrasi nilai ha-sync-batch-size berdasarkan jumlah dan ukuran pesan yang tidak disinkronkan dalam antrean.

      • ha-mode=all. Pilih String dari daftar dropdown.

        penting

        Definisi ha-mode diperlukan untuk semua kebijakan terkait HA. Menghilangkan hasilnya mengakibatkan kegagalan validasi.

      • ha-sync-mode=automatic. Pilih String dari daftar dropdown.

        catatan

        Definisi ha-sync-mode diperlukan untuk semua kebijakan kustom. Jika dihilangkan, Amazon MQ secara otomatis menambahkan definisi.

    6. Pilih Buat / perbarui kebijakan.

  10. Konfirmasi bahwa kebijakan baru muncul dalam daftar Kebijakan pengguna.

Untuk menerapkan kebijakan ha-sync-batch-size menggunakan API manajemen RabbitMQ
  1. Masuk ke konsol Amazon MQ.

  2. Di panel navigasi kiri, pilih Broker.

  3. Dari daftar broker, pilih nama broker yang ingin Anda terapkan kebijakan baru.

  4. Di halaman broker, pada bagian Koneksi, catat URL konsol web RabbitMQ. Ini adalah titik akhir broker yang Anda gunakan dalam permintaan HTTP.

  5. Buka terminal atau jendela baris perintah baru pilihan Anda.

  6. Untuk membuat kebijakan broker baru, masukkan perintah curl baru. Perintah ini mengasumsikan antrean pada vhost / default, yang dienkode sebagai %2F.

    catatan

    Ganti nama pengguna dan kata sandi dengan kredensi login administrator broker Anda. Anda mungkin perlu menyesuaikan dan mengalibrasi nilai ha-sync-batch-size (100) berdasarkan jumlah dan ukuran pesan yang tidak disinkronkan dalam antrean. Mengganti titik akhir broker dengan URL yang Anda catat sebelumnya.

    curl -i -u username:password -H "content-type:application/json" -XPUT \ -d '{"pattern":".*", "priority":1, "definition":{"ha-sync-batch-size":100, "ha-mode":"all", "ha-sync-mode":"automatic"}}' \ https://b-589c045f-f8ln-4ab0-a89c-co62e1c32ef8.mq.us-west-2.amazonaws.com/api/policies/%2F/batch-size-policy
  7. Untuk mengonfirmasi bahwa kebijakan baru ditambahkan ke kebijakan pengguna broker, masukkan perintah curl berikut untuk daftar seluruh kebijakan broker.

    curl -i -u username:password https://b-589c045f-f8ln-4ab0-a89c-co62e1c32ef8.mq.us-west-2.amazonaws.com/api/policies

Langkah 2: Memulai ulang sinkronisasi antrean

Setelah menerapkan kebijakan ha-sync-batch-size baru untuk broker Anda, mulai ulang sinkronisasi antrean.

Untuk memulai ulang sinkronisasi antrean menggunakan konsol web RabbitMQ
catatan

Untuk membuka konsol web RabbitMQ, lihat petunjuk sebelumnya di Langkah 1 dalam tutorial ini.

  1. Di konsol web RabbitMQ, di bagian atas halaman, pilih Antrean.

  2. Di halaman Antrean, di bawah Semua antrean, temukan antrean yang dijeda. Di kolom Fitur, antrean Anda harus mencantumkan nama kebijakan baru yang Anda buat (misalnya, batch-size-policy).

  3. Untuk memulai ulang proses sinkronisasi dengan ukuran batch yang lebih kecil, pilih Mulai ulang sinkronisasi.

catatan

Jika sinkronisasi dijeda dan tidak berhasil diselesaikan, coba kurangi nilai ha-sync-batch-size dan mulai ulang sinkronisasi antrean lagi.

Langkah selanjutnya

  • Setelah antrean berhasil disinkronkan, Anda dapat memantau jumlah memori yang digunakan simpul RabbitMQ dengan melihat CloudWatch metrik AmazonRabbitMQMemUsed. Anda juga dapat melihat metrik RabbitMQMemLimit untuk memantau batas memori simpul. Untuk informasi lebih lanjut, lihat Mengakses CloudWatch metrik untuk Amazon MQ dan CloudWatch Metrik yang tersedia untuk Amazon MQ untuk broker RabbitMQ.

  • Agar sinkronisasi antrean tidak dijeda, sebaiknya buat antrean tetap pendek dan memproses pesan. Untuk beban kerja dengan ukuran pesan yang lebih besar, kami juga merekomendasikan untuk meningkatkan tipe instans broker ke ukuran instans yang lebih besar dengan lebih banyak memori. Untuk informasi selengkapnya tentang tipe instans broker dan mengedit preferensi broker, lihat Tipe instans Amazon MQ for RabbitMQ dan Mengedit preferensi broker.

  • Ketika Anda membuat broker Amazon MQ for RabbitMQ, Amazon MQ menerapkan serangkaian kebijakan default dan batasan host virtual untuk mengoptimalkan performa broker. Jika broker Anda tidak memiliki kebijakan dan batasan default yang disarankan, sebaiknya buat sendiri. Untuk informasi selengkapnya tentang cara membuat kebijakan default dan batasan vhost, lihat Broker default Amazon MQ for RabbitMQ.

  • UpdateBrokerInput— Gunakan properti broker ini untuk memperbarui tipe instans broker menggunakan API Amazon MQ.

  • Parameter dan Kebijakan (Dokumentasi Server RabbitMQ) – Pelajari lebih lanjut tentang parameter dan kebijakan RabbitMQ di situs web RabbitMQ.

  • HTTP API Manajemen RabbitMQ – Pelajari lebih lanjut tentang API manajemen RabbitMQ.