Redis Sentinel

Redis Sentinel



Andaikan senario di mana anda hanya mempunyai satu contoh Redis dalam pengeluaran anda dan ia gagal pada satu ketika atas sebab tertentu. Aplikasi anda menyimpan data dalam stor data Redis dan kini satu-satunya sumber data anda telah mati. Satu cara untuk mengawal jenis senario ini ialah mengekalkan seni bina tuan-hamba di mana hamba boleh meniru nod induk sehingga ia kembali. Kelompok Redis menyokong ketersediaan tinggi sehingga tahap tertentu dengan pendekatan replika induk. Redis Sentinel ialah pendekatan lain yang menyediakan cara yang lebih dipercayai untuk mengekalkan ketersediaan tinggi kejadian Redis. Ia memantau nod induk Redis untuk kegagalan dan mencetuskan proses failover serta-merta yang akan mempromosikan nod hamba sedia ada kepada induk baharu.







Tambahan pula, Redis sentinel bertindak sebagai orang tengah di mana pelanggan menyambung dan meminta alamat IP nod Master terkini. Jadi, sentinel yang disambungkan menyediakan alamat nod induk dengan segera.



Di samping itu, kegagalan nod induk disahkan jika beberapa pengawal bersetuju bahawa induk tertentu tidak dapat dicapai atau tersedia. Ini menyimpulkan fasa pengesanan kegagalan dan proses failover bermula serta-merta. Oleh itu, sentinel Redis boleh dilihat sebagai sistem teragih dengan sifat tertentu.



Persetujuan pengawal adalah berdasarkan nilai kuorum yang akan dibincangkan dalam bahagian berikut.





Nilai Siapa

Nilai Kuorum ialah bilangan maksimum sentinel yang perlu dipersetujui apabila nod induk turun. Nilai ini hanya digunakan untuk mengenal pasti kegagalan dalam nod induk. Proses failover bermula dengan kebenaran berbilang nod sentinel yang tersedia untuk meneruskan dengan sentinel terpilih sebagai ketua.

Ciri-ciri Redis Sentinel

Sentinel terkenal kerana menyediakan mekanisme ketersediaan tinggi untuk stor data Redis. Selain itu, beberapa keupayaan lain boleh disenaraikan.



  • Sentinel sentiasa memantau status nod induk dan hamba dalam sistem Redis anda.
  • Setiap kali terdapat kegagalan atau sesuatu yang tidak kena dengan kejadian Redis anda, sentinel mampu memberitahu pentadbir atau aplikasi yang disambungkan menggunakan API sentinel.
  • Fasa failover diarahkan oleh sentinel dengan mempromosikan replika sebagai tuan baharu. Baki replika dikonfigurasikan untuk menggunakan induk baharu. Akhir sekali, pelanggan yang sepadan akan dimaklumkan tentang alamat nod induk baharu.
  • Selain itu, sentinel Redis ialah penyedia konfigurasi untuk pelanggan yang disambungkan di mana pelanggan boleh meminta alamat contoh induk yang tersedia pada masa ini dan jika keruntuhan secara tiba-tiba berlaku, sentinel komited untuk menolak alamat nod induk baharu dengan segera.

Dalam bahagian seterusnya, kami akan mengkonfigurasi sentinel Redis dengan tika replika induk dan menggunakan API sentinel untuk memantau nod.

Konfigurasi Sentinel

Mula-mula, kami mencipta dua kejadian Redis pada port 7000 dan 7001. Port 7000 akan menjadi nod induk dan satu lagi mereplikasi induk. Kedua-dua keadaan menggunakan fail konfigurasi berikut masing-masing:

Konfigurasi Nod Induk

pelabuhan 7000
no. didayakan kluster
cluster-config-file nodes.conf
kluster-nod-masa tamat 5000
tambahan ya

Konfigurasi Nod Hamba

pelabuhan 7001
no. didayakan kluster
cluster-config-file nodes.conf
kluster-nod-masa tamat 5000
tambahan ya

Kedua-dua keadaan akan bermula dengan menyediakan fail konfigurasi yang dikaitkan dengan setiap kejadian. Kita boleh menggunakan arahan berikut untuk memulakan kejadian Redis secara berasingan:

redis-server redis.conf

Mari sambung ke contoh Redis yang bermula pada port 7001 seperti berikut:

redis-cli -hlm 7001

Sekarang, kita boleh menjadikan contoh ini sebagai replika induk yang berjalan pada port 7000. Perintah REPLICAOF boleh digunakan seperti berikut:

replika 127.0.0.1 7000

Seperti yang dijangkakan, contoh yang berjalan pada port 7001 menjadi nod replika induk yang berjalan pada port 7000.

Kini, kami bersedia untuk mengkonfigurasi tiga pengawal Redis untuk memantau contoh induk di atas. Kita perlu mempunyai tiga fail konfigurasi untuk mencipta tiga kejadian sentinel pada port 5000, 5001 dan 5002 seperti yang ditunjukkan dalam yang berikut.

setiap satu sentinel.conf fail kelihatan seperti berikut kecuali nombor port akan ditukar:

pelabuhan 5000
sentinel monitor masternode 127.0.0.1 7000 dua
sentinel bawah-selepas-milisaat masternod 5000
sentinel failover-timeout masternode 60000

Kini, tiba masanya untuk menjalankan tiga pengawal. Anda boleh menggunakan redis-sentinel boleh laku bersama dengan laluan ke sentinel.conf fail konfigurasi untuk mencipta contoh sentinel. Jika tidak, kita masih boleh memanggil redis-server boleh laku dengan menentukan laluan ke sentinel.conf dan bendera –sentinel .

Mari mulakan setiap sentinel menggunakan arahan berikut:

redis-server sentinel.conf --sentinel

Sentinel pertama telah dimulakan pada port 5000. Begitu juga, anda boleh memulakan dua kejadian yang lain juga.

Sekarang, persediaan sentinel Redis kami telah siap dan berjalan seperti yang ditunjukkan dalam ilustrasi berikut:

Dalam bahagian berikut, kami akan meneroka lebih lanjut tentang Sentinel API dan cara kami boleh menggunakannya untuk mendapatkan maklumat yang berkaitan dengan nod induk Redis.

API Sentinel

Redis menyediakan API sentinel yang berasingan untuk memantau induk dan replika yang berkaitan, melanggan pemberitahuan dan mengubah suai tetapan sentinel. Tambahan pula, beberapa kegunaan disenaraikan di bawah.

  • Semak status kejadian induk dan hamba Redis yang dipantau
  • Butiran tentang pengawal lain
  • Terima pemberitahuan gaya tolak daripada pengawal sekiranya berlaku kegagalan

Perintah SENTINEL boleh digunakan dengan subperintah yang berkaitan untuk membuat pertanyaan, mengemas kini atau menetapkan pengawal Redis dan nod yang dipantau.

Semak Status Nod Induk

Adalah sangat penting untuk memantau atau memeriksa kesihatan nod induk dari semasa ke semasa. Perintah API sentinel berikut boleh digunakan untuk mendapatkan butiran induk:

SENTINEL MASTER < nama_tuan_dipantau >

monitor_master_name: Nama nod induk yang dinyatakan dalam fail konfigurasi sentinel yang kami buat pada langkah awal.

Mari gunakan arahan ini untuk menanyakan status induk dalam persediaan kami. Dalam kes kami, nama nod induk ialah 'masternode'.

masternod SENTINEL MASTER

Beberapa maklumat telah diambil dan beberapa daripadanya adalah penting seperti num-slave, flags, dan num-other-sentinel.

The bendera harta ditetapkan kepada tuan yang bermaksud tuan dalam keadaan sihat. Apabila nod induk turun, s_down atau o_down bendera akan dipaparkan. Harta num-sentinel-lain-lain ditetapkan kepada 2 yang bermaksud sentinel Redis sudah mengenali dua sentinel lain untuk nod induk. Selain itu, num-budak property memaparkan replika yang tersedia untuk nod induk. Dalam kes ini, ia ditetapkan kepada 1 kerana kami hanya mempunyai satu replika.

Dapatkan Maklumat Mengenai Replika Bersambung

Kita boleh menyemak replika yang disambungkan dengan nod induk menggunakan sub perintah SENTINEL berikut:

REPLIKA SENTINEL < nama_tuan_dipantau >

Dalam contoh ini, nama induk ialah 'masternode'.

SENTINEL replika masternode

Seperti yang dijangkakan, Sentinel mengesan nod hamba berjalan pada port 7001.

Dapatkan Maklumat Mengenai Pengawal Bersekutu

Begitu juga, kami boleh menanyakan butiran yang berkaitan dengan pengawal lain yang dikaitkan dengan nod induk semasa menggunakan subperintah SENTINEL berikut:

SENTINEL SENTINEL < nama_nod_induk >

Dalam kes ini, kami akan mengambil maklumat yang berkaitan dengan nod induk bernama 'masternode'.

SENTINEL sentinels masternode

Dapatkan Alamat Nod Induk

Seperti yang dinyatakan dalam bahagian awal, Redis sentinel ialah penyedia konfigurasi untuk pelanggan yang disambungkan. Jadi, ia mampu menyediakan alamat IP nod induk dan port yang sedang berjalan kepada pelanggan yang diminta. Subperintah API Sentinel berikut boleh digunakan untuk mendapatkan semula maklumat yang disebutkan.

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

Mari kita laksanakan arahan di atas untuk senario kita seperti berikut:

sentinel get-master-addr-by-name masternode

Kami hanya membincangkan beberapa arahan API sentinel. Beberapa subperintah lain tersedia seperti sentinel-failover, sentinel info-cache, sentinel master, dan lain-lain. Selain itu, banyak arahan tersedia untuk digunakan untuk tujuan pentadbiran juga. Dalam bahagian berikut, kami akan menumpukan pada proses failover sentinel Redis.

Proses Kegagalan Sentinel

Memandangkan sentinel kami dikonfigurasikan, kami boleh menguji fasa kegagalan. Mari hantar nod induk kita untuk tidur selama 300 saat yang menyerupai kegagalan dalam nod induk.

nyahpepijat tidur 300

Nod induk yang berjalan pada port 7000 sepatutnya tidak dapat dicapai sekarang. Jadi, pengawal yang berkaitan akan menyedari bahawa tuan tidak tersedia dengan +turun peristiwa. Kemudian, ini akan ditetapkan kepada +odown di mana 2 sentinel mengesahkan nod induk turun mengikut nilai kuorum. Akhirnya, fasa failover akan bermula dan idealnya replika itu harus dinaikkan pangkat kepada tuan baharu.

Mari semak alamat IP nod induk dan port sekali lagi.

sentinel get-master-addr-by-name masternode

Seperti yang dijangka, replika sebelum ini telah dinaikkan pangkat kepada master baru yang bermaksud proses failover sentinel berjaya. Ini menyimpulkan penggunaan dan ujian tiga persediaan sentinel kami untuk pasangan replika induk tunggal.

Kesimpulan

Redis sentinel ialah pendekatan yang paling boleh dipercayai untuk memastikan ketersediaan tinggi contoh replika induk Redis yang diberikan. Sentinel mampu memantau, memberitahu dan memulakan failover automatik tanpa campur tangan manusia. Selain itu, berbilang sentinel bersama-sama bersetuju tentang fakta bahawa nod induk tidak dapat dicapai dan nilai kuorum digunakan sebagai bilangan maksimum sentinel yang perlu dipersetujui semasa menyemak ketersediaan tika induk. Redis sentinel menawarkan API yang mudah digunakan untuk mendapatkan maklumat tentang kesihatan nod induk dan replika yang berkaitan serta melaksanakan tugas pentadbiran juga.