Redis Sentinel

Redis Sentinel



Asumsikan skenario di mana Anda hanya memiliki satu instance Redis dalam produksi Anda dan gagal di beberapa titik karena beberapa alasan. Aplikasi Anda menyimpan data di penyimpanan data Redis dan sekarang satu-satunya sumber data Anda sudah mati. Salah satu cara untuk mengontrol skenario semacam ini adalah dengan mempertahankan arsitektur master-slave di mana slave dapat mereplikasi node master sampai kembali. Cluster Redis mendukung ketersediaan tinggi hingga tingkat tertentu dengan pendekatan master-replika. Redis Sentinel adalah pendekatan lain yang menyediakan cara yang lebih andal untuk mempertahankan ketersediaan tinggi instans Redis. Ini memonitor node master Redis untuk kegagalan dan memicu proses failover segera yang akan mempromosikan node slave yang ada ke master baru.







Selanjutnya, Redis sentinel bertindak sebagai perantara di mana klien terhubung dan meminta alamat IP node Master terbaru. Jadi, sentinel yang terhubung menyediakan alamat master node dengan segera.



Selain itu, kegagalan node master dikonfirmasi jika beberapa penjaga setuju bahwa master yang diberikan tidak dapat dijangkau atau tersedia. Ini mengakhiri fase deteksi kegagalan dan proses failover segera dimulai. Oleh karena itu, Redis sentinel dapat dilihat sebagai sistem terdistribusi dengan properti tertentu.



Kesepakatan para penjaga didasarkan pada nilai kuorum yang akan dibahas pada bagian berikut.





Nilai siapa

Nilai Quorum adalah jumlah maksimum penjaga yang perlu disepakati saat master node down. Nilai ini hanya digunakan untuk mengidentifikasi kegagalan di master node. Proses failover dimulai dengan otorisasi beberapa node sentinel yang tersedia untuk melanjutkan dengan sentinel yang dipilih sebagai pemimpin.

Fitur Redis Sentinel

Sentinel dikenal menyediakan mekanisme ketersediaan tinggi untuk penyimpanan data Redis. Selain itu, beberapa kemampuan lain dapat dicantumkan.



  • Sentinel terus memantau status node master dan slave di sistem Redis Anda.
  • Setiap kali ada kegagalan atau sesuatu yang salah dengan instans Redis Anda, sentinel mampu memberi tahu administrator atau aplikasi yang terhubung menggunakan API sentinel.
  • Fase failover diarahkan oleh sentinel dengan mempromosikan replika sebagai master baru. Replika yang tersisa dikonfigurasi untuk menggunakan master baru. Akhirnya, klien yang sesuai akan diberitahu tentang alamat master node baru.
  • Selain itu, Redis sentinel adalah penyedia konfigurasi untuk klien yang terhubung di mana klien dapat meminta alamat instans master yang tersedia saat ini dan jika tiba-tiba terjadi kegagalan, sentinel berkomitmen untuk segera mendorong alamat node master baru.

Di bagian selanjutnya, kita akan mengonfigurasi sentinel Redis dengan instance master-replika dan menggunakan API sentinel untuk memantau node.

Konfigurasi Sentinel

Pertama, kita membuat dua instance Redis di port 7000 dan 7001. Port 7000 akan menjadi node master dan yang lainnya mereplikasi master. Kedua instance masing-masing menggunakan file konfigurasi berikut:

Konfigurasi Node Utama

Pelabuhan 7000
tidak diaktifkan cluster
cluster-config-file node.conf
cluster-node-timeout 5000
tambahan Ya

Konfigurasi Node Budak

Pelabuhan 7001
tidak diaktifkan cluster
cluster-config-file node.conf
cluster-node-timeout 5000
tambahan Ya

Kedua instance akan dimulai dengan menyediakan file konfigurasi yang terkait dengan masing-masing. Kita dapat menggunakan perintah berikut untuk memulai instance Redis secara terpisah:

redis-server redis.conf

Mari kita hubungkan ke instance Redis yang dimulai pada port 7001 sebagai berikut:

redis-cli -p 7001

Sekarang, kita dapat membuat instance ini sebagai replika dari master yang berjalan pada port 7000. Perintah REPLICAOF dapat digunakan sebagai berikut:

replika 127.0.0.1 7000

Seperti yang diharapkan, instans yang berjalan pada port 7001 menjadi node replika master yang berjalan pada port 7000.

Sekarang, kita siap untuk mengonfigurasi tiga penjaga Redis untuk memantau instans master di atas. Kita perlu memiliki tiga file konfigurasi untuk membuat tiga instance sentinel di port 5000, 5001, dan 5002 seperti yang ditunjukkan berikut ini.

Setiap sentinel.conf file terlihat seperti berikut kecuali bahwa nomor port akan diubah:

Pelabuhan 5000
sentinel monitor masternode 127.0.0.1 7000 dua
masternode sentinel turun setelah milidetik 5000
sentinel failover-timeout masternode 60000

Sekarang, saatnya untuk menjalankan tiga penjaga. Anda dapat menggunakan executable redis-sentinel bersama dengan jalur ke sentinel.conf file konfigurasi untuk membuat instance sentinel. Jika tidak, kita masih dapat memanggil server redis yang dapat dieksekusi dengan menentukan jalur ke sentinel.conf dan bendera -penjaga .

Mari kita mulai setiap sentinel menggunakan perintah berikut:

redis-server sentinel.conf --penjaga

Sentinel pertama telah dimulai pada port 5000. Demikian pula, Anda juga dapat memulai dua instance lainnya.

Sekarang, pengaturan sentinel Redis kami sudah aktif dan berjalan seperti yang ditunjukkan pada ilustrasi berikut:

Di bagian berikut, kita akan menjelajahi lebih lanjut tentang API Sentinel dan bagaimana kita dapat menggunakannya untuk mengambil informasi yang terkait dengan node master Redis.

API Sentinel

Redis menyediakan API sentinel terpisah untuk memantau master dan replika terkait, berlangganan notifikasi, dan mengubah pengaturan sentinel. Selanjutnya, beberapa penggunaan tercantum di bawah ini.

  • Periksa status instance master dan slave Redis yang dipantau
  • Detail tentang penjaga lainnya
  • Terima pemberitahuan gaya push dari penjaga jika terjadi kegagalan

Perintah SENTINEL dapat digunakan dengan sub-perintah terkait untuk menanyakan, memperbarui, atau mengatur Redis sentinel dan node yang dipantau.

Periksa Status Node Master

Sangat penting untuk memantau atau memeriksa kesehatan master node dari waktu ke waktu. Perintah API sentinel berikut dapat digunakan untuk mengambil detail master:

SENTINEL MASTER < monitor_master_name >

monitor_master_name: Nama node master yang ditentukan dalam file konfigurasi sentinel yang kita buat pada langkah sebelumnya.

Mari gunakan perintah ini untuk menanyakan status master di pengaturan kita. Dalam kasus kami, nama node master adalah 'masternode'.

SENTINEL MASTER masternode

Beberapa informasi telah diambil dan beberapa di antaranya penting seperti num-slave, flags, dan num-other-sentinel.

Itu bendera properti diatur ke menguasai yang berarti tuannya dalam keadaan sehat. Setiap kali master node down, s_down atau o_down bendera akan ditampilkan. Properti num-other-sentinel diatur ke 2 yang berarti Redis sentinel sudah mengenali dua sentinel lainnya untuk node master. Selain itu, jumlah-budak property menampilkan replika yang tersedia untuk node master. Dalam hal ini, disetel ke 1 karena kita hanya memiliki satu replika.

Dapatkan Informasi Tentang Replika Terhubung

Kita dapat memeriksa replika yang terhubung dengan master node menggunakan sub perintah SENTIEL berikut:

REPLIKA SENTInel < monitor_master_name >

Dalam contoh ini, nama masternya adalah 'masternode'.

SENTINEL replika masternode

Seperti yang diharapkan, Sentinel mendeteksi node slave yang berjalan pada port 7001.

Dapatkan Informasi Tentang Penjaga Terkait

Demikian pula, kami dapat menanyakan detail yang terkait dengan penjaga lain yang terkait dengan node master saat ini menggunakan sub-perintah SENTINEL berikut:

SENTIEL SENTILAN < master_node_name >

Dalam hal ini, kami akan mengambil informasi yang terkait dengan master node bernama 'masternode'.

SENTINEL sentinel masternode

Dapatkan Alamat Node Master

Seperti disebutkan di bagian sebelumnya, Redis sentinel adalah penyedia konfigurasi untuk klien yang terhubung. Jadi, ia mampu memberikan alamat IP node master yang sedang berjalan dan port ke klien yang diminta. Sub-perintah API Sentinel berikut dapat digunakan untuk mengambil informasi yang disebutkan.

SENTINEL GET-MASTER-ADDR-BY-NAME < master_node_name >

Mari kita jalankan perintah di atas untuk skenario kita sebagai berikut:

sentinel get-master-addr-by-name masternode

Kami hanya membahas beberapa perintah API sentinel. Beberapa sub-perintah lain tersedia seperti sentinel-failover, sentinel info-cache, sentinel master, dan lain-lain. Selain itu, banyak perintah juga tersedia untuk digunakan untuk keperluan administrasi. Pada bagian berikut, kita akan berfokus pada proses failover sentinel Redis.

Proses Kegagalan Sentinel

Karena sentinel kami dikonfigurasi, kami dapat menguji fase fail-over. Mari kirim master node kita ke sleep selama 300 detik yang mensimulasikan kegagalan di master node.

debug tidur 300

Node master yang berjalan pada port 7000 seharusnya tidak dapat dijangkau sekarang. Jadi, penjaga terkait akan melihat master tidak tersedia dengan +sdown peristiwa. Kemudian, ini akan diatur ke + turun di mana 2 penjaga mengkonfirmasi node master turun sesuai dengan nilai kuorum. Akhirnya, fase failover akan dimulai dan idealnya replika harus dipromosikan ke master baru.

Mari kita periksa lagi alamat IP node master dan portnya.

sentinel get-master-addr-by-name masternode

Seperti yang diharapkan, replika sebelumnya telah dipromosikan ke master baru yang berarti proses failover sentinel berhasil. Ini menyimpulkan penerapan dan pengujian tiga pengaturan sentinel kami untuk pasangan master-replika tunggal.

Kesimpulan

Redis sentinel adalah pendekatan yang paling andal untuk memastikan ketersediaan tinggi dari instance replika master Redis tertentu. Seorang penjaga mampu memantau, memberi tahu, dan memulai failover otomatis tanpa campur tangan manusia. Selain itu, beberapa penjaga bersama-sama setuju tentang fakta bahwa node master tidak dapat dijangkau dan nilai kuorum digunakan sebagai jumlah maksimum penjaga yang perlu disepakati saat memeriksa ketersediaan instans master. Redis sentinel menawarkan API yang mudah digunakan untuk mengambil informasi tentang kesehatan node master dan replika terkait serta melakukan tugas administratif juga.