Redis Sentinel

Redis Sentinel



Ipagpalagay ang isang senaryo kung saan mayroon ka lamang isang Redis instance sa iyong produksyon at nabigo ito sa ilang mga punto dahil sa ilang kadahilanan. Ang iyong application ay nag-cache ng data sa Redis data store at ngayon ang iyong tanging data source ay patay na. Ang isang paraan upang makontrol ang mga ganitong uri ng mga sitwasyon ay ang pagpapanatili ng master-slave architecture kung saan maaaring kopyahin ng mga alipin ang master node hanggang sa bumalik ito. Sinusuportahan ng mga cluster ng Redis ang mataas na kakayahang magamit hanggang sa ilang antas gamit ang master-replica na diskarte. Ang Redis Sentinel ay isa pang diskarte na nagbibigay ng mas maaasahang paraan upang mapanatili ang mataas na kakayahang magamit ng mga pagkakataon ng Redis. Sinusubaybayan nito ang Redis master node para sa mga pagkabigo at pinalitaw kaagad ang proseso ng failover na magpo-promote ng isang umiiral nang slave node sa isang bagong master.







Higit pa rito, ang Redis sentinel ay gumaganap bilang isang middle-man kung saan ang mga kliyente ay kumonekta at humihingi ng pinakabagong Master node IP address. Kaya, ang konektadong sentinel ay nagbibigay kaagad ng master node address.



Bilang karagdagan, ang isang master node failure ay nakumpirma kung maraming sentinel ang sumang-ayon na ang isang partikular na master ay hindi maabot o magagamit. Tinatapos nito ang phase detection ng kabiguan at magsisimula kaagad ang proseso ng failover. Samakatuwid, ang Redis sentinel ay makikita bilang isang distributed system na may mga partikular na katangian.



Ang kasunduan ng mga sentinel ay batay sa isang halaga ng korum na tatalakayin sa susunod na seksyon.





Kaninong Halaga

Ang Quorum value ay ang maximum na bilang ng mga sentinel na kailangang pagsunduan kapag ang master node ay down. Ginagamit lang ang value na ito upang matukoy ang isang pagkabigo sa master node. Ang proseso ng failover ay nagsisimula sa pahintulot ng maraming available na sentinel node upang magpatuloy sa isang napiling sentinel bilang pinuno.

Mga Tampok ng Redis Sentinel

Ang sentinel ay kilala sa pagbibigay ng isang mataas na availability na mekanismo para sa Redis data store. Bukod doon, maraming iba pang mga kakayahan ang maaaring ilista.



  • Patuloy na sinusubaybayan ng Sentinel ang status ng mga master at slave node sa iyong Redis system.
  • Sa tuwing may pagkabigo o may mali sa iyong mga instance ng Redis, ang sentinel ay may kakayahang abisuhan ang administrator o mga konektadong application gamit ang sentinel API.
  • Ang failover phase ay pinamumunuan ng sentinel sa pamamagitan ng pagpo-promote ng replica bilang bagong master. Na-configure ang mga natitirang replika para gamitin ang bagong master. Sa wakas, aabisuhan ang mga kaukulang kliyente tungkol sa bagong master node address.
  • Gayundin, ang Redis sentinel ay isang configuration provider para sa mga konektadong kliyente kung saan maaaring hilingin ng mga kliyente ang address ng kasalukuyang available na master instance at kung may biglang pagbagsak, ang sentinel ay nakatuon na itulak kaagad ang bagong master node address.

Sa susunod na seksyon, iko-configure namin ang mga sentinel ng Redis na may mga master-replica na instance at ginagamit ang sentinel API upang subaybayan ang mga node.

Configuration ng Sentinel

Una, gumawa kami ng dalawang instance ng Redis sa mga port 7000 at 7001. Ang Port 7000 ay magiging master node at ang isa ay ginagaya ang master. Ang parehong mga pagkakataon ay gumagamit ng mga sumusunod na config file ayon sa pagkakabanggit:

Master Node Configuration

daungan 7000
cluster-enabled no
cluster-config-file nodes.conf
cluster-node-timeout 5000
kalakip oo

Configuration ng Slave Node

daungan 7001
cluster-enabled no
cluster-config-file nodes.conf
cluster-node-timeout 5000
kalakip oo

Magsisimula ang parehong mga pagkakataon sa pamamagitan ng pagbibigay ng configuration file na nauugnay sa bawat isa. Maaari naming gamitin ang sumusunod na command upang simulan ang mga pagkakataon ng Redis nang hiwalay:

redis-server redis.conf

Kumonekta tayo sa instance ng Redis na nagsimula sa port 7001 tulad ng sumusunod:

redis-cli -p 7001

Ngayon, maaari nating gawing replica ang instance na ito ng master na tumatakbo sa port 7000. Maaaring gamitin ang REPLICAOF command tulad ng sumusunod:

replika ng 127.0.0.1 7000

Gaya ng inaasahan, ang instance na tumatakbo sa port 7001 ay naging replica node ng master na tumatakbo sa port 7000.

Ngayon, handa na kaming i-configure ang tatlong Redis sentinel para subaybayan ang master instance sa itaas. Kailangan nating magkaroon ng tatlong configuration file upang lumikha ng tatlong sentinel instance sa mga port 5000, 5001, at 5002 gaya ng ipinapakita sa sumusunod.

Ang bawat isa sentinel.conf Ang file ay mukhang ang sumusunod maliban na ang numero ng port ay mababago:

daungan 5000
sentinel monitor masternode 127.0.0.1 7000 dalawa
sentinel down-after-milliseconds masternode 5000
sentinel failover-timeout masternode 60000

Ngayon, oras na para patakbuhin ang tatlong sentinel. Maaari mong gamitin ang redis-sentinel executable kasama ang path sa sentinel.conf configuration file para gumawa ng sentinel instance. Kung hindi, maaari pa rin nating tawagan ang redis-server na maipapatupad sa pamamagitan ng pagtukoy sa landas patungo sa sentinel.conf at ang watawat – sentinel .

Simulan natin ang bawat sentinel gamit ang sumusunod na command:

redis-server sentinel.conf --sentinel

Ang unang sentinel ay sinimulan sa port 5000. Katulad nito, maaari mo ring simulan ang iba pang dalawang pagkakataon.

Ngayon, ang aming Redis sentinel setup ay gumagana at tumatakbo tulad ng ipinapakita sa sumusunod na paglalarawan:

Sa susunod na seksyon, mag-e-explore pa kami tungkol sa Sentinel API at kung paano namin ito magagamit para kunin ang impormasyong nauugnay sa Redis master node.

Sentinel API

Nagbibigay ang Redis ng hiwalay na sentinel API upang subaybayan ang mga nauugnay na master at replika, mag-subscribe para sa mga notification, at baguhin ang mga setting ng sentinel. Higit pa rito, ilang mga paggamit ang nakalista sa mga sumusunod.

  • Suriin ang status ng sinusubaybayang Redis master at slave instance
  • Mga detalye tungkol sa iba pang mga sentinel
  • Makatanggap ng mga push-style na notification mula sa mga sentinel sa isang kaganapan ng isang failover

Maaaring gamitin ang command na SENTINEL kasama ng mga nauugnay na subcommand nito upang mag-query, mag-update, o magtakda ng mga Redis sentinel at sinusubaybayang node.

Suriin ang Katayuan ng Master Node

Napakahalaga na subaybayan o suriin ang kalusugan ng master node paminsan-minsan. Ang sumusunod na sentinel API command ay maaaring gamitin upang kunin ang mga detalye ng master:

SENTINEL MASTER < monitored_master_name >

monitored_master_name: Ang pangalan ng master node na tinukoy sa sentinel configuration file na ginawa namin sa naunang hakbang.

Gamitin natin ang command na ito para i-query ang master status sa ating setup. Sa aming kaso, ang pangalan ng master node ay 'masternode'.

SENTINEL MASTER masternode

Ilang piraso ng impormasyon ang nakuha at ang ilan sa mga ito ay mahalaga tulad ng num-slave, flags, at num-other-sentinel.

Ang mga watawat ari-arian ay nakatakda sa master na nangangahulugan na ang master ay nasa mabuting kalusugan. Sa tuwing nakababa ang master node, ang s_down o o_pababa ipapakita ang bandila. Ang pag-aari num-other-sentinels ay nakatakda sa 2 na nangangahulugang nakilala na ng Redis sentinel ang iba pang dalawang sentinel para sa master node. Bilang karagdagan, ang num-alipin ipinapakita ng property ang mga available na replika para sa master node. Sa kasong ito, nakatakda ito sa 1 dahil isa lang ang replica namin.

Kumuha ng Impormasyon Tungkol sa Mga Nakakonektang Replika

Maaari naming suriin ang mga replika na konektado sa master node gamit ang sumusunod na SENTINEL sub command:

SENTINEL REPLICAS < monitored_master_name >

Sa halimbawang ito, ang master name ay 'masternode'.

SENTINEL replicas masternode

Gaya ng inaasahan, nakita ng Sentinel ang slave node na tumatakbo sa port 7001.

Kumuha ng Impormasyon Tungkol sa Mga Kaugnay na Sentinel

Katulad nito, maaari nating i-query ang mga detalyeng nauugnay sa iba pang mga sentinel na nauugnay sa kasalukuyang master node gamit ang sumusunod na subcommand ng SENTINEL:

SENTINEL SENTINEL < master_node_name >

Sa kasong ito, kukunin namin ang impormasyong nauugnay sa master node na pinangalanang 'masternode'.

SENTINEL sentinels masternode

Kunin ang Master Node Address

Gaya ng nabanggit sa naunang seksyon, ang Redis sentinel ay isang configuration provider para sa mga konektadong kliyente. Kaya, ito ay may kakayahang magbigay ng kasalukuyang tumatakbong master node IP address at port sa mga hiniling na kliyente. Maaaring gamitin ang sumusunod na subcommand ng Sentinel API upang makuha ang nabanggit na impormasyon.

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

Isagawa natin ang utos sa itaas para sa ating senaryo tulad ng sumusunod:

sentinel get-master-addr-by-name masternode

Ilang sentinel API command lang ang tinalakay namin. Maraming iba pang mga subcommand ang available gaya ng sentinel-failover, sentinel info-cache, sentinel masters, at iba pa. Higit pa rito, maraming mga command ang magagamit din para sa mga layunin ng pangangasiwa. Sa susunod na seksyon, pagtutuunan natin ng pansin ang proseso ng Redis sentinel failover.

Proseso ng Sentinel Failover

Dahil naka-configure ang aming sentinel, maaari naming subukan ang phase-over phase. Ipa-sleep natin ang ating master node sa loob ng 300 segundo na ginagaya ang isang pagkabigo sa master node.

i-debug matulog 300

Ang master node na tumatakbo sa port 7000 ay hindi dapat maabot ngayon. Kaya, mapapansin ng mga nauugnay na sentinel na hindi available ang master sa +bumaba kaganapan. Pagkatapos, ito ay itatakda sa +odown kung saan kinumpirma ng 2 sentinel na bumaba ang master node ayon sa halaga ng korum. Sa wakas, magsisimula na ang failover phase at ideal na dapat i-promote ang replica sa bagong master.

Suriin natin muli ang master node IP address at ang port.

sentinel get-master-addr-by-name masternode

Gaya ng inaasahan, ang dating replica ay na-promote sa bagong master na nangangahulugang matagumpay ang proseso ng sentinel failover. Ito ay nagtatapos sa deployment at pagsubok ng aming tatlong sentinel setup para sa isang master-replica na pares.

Konklusyon

Ang Redis sentinel ay ang pinaka-maaasahang diskarte upang matiyak ang mataas na kakayahang magamit ng isang partikular na halimbawa ng replika ng Redis. Ang isang sentinel ay may kakayahang subaybayan, ipaalam, at simulan ang awtomatikong failover nang walang interbensyon ng tao. Gayundin, maraming sentinel ang magkakasamang sumang-ayon tungkol sa katotohanan na ang master node ay hindi maabot at ang quorum value ay ginagamit bilang maximum na bilang ng mga sentinel na kailangang napagkasunduan kapag tinitingnan ang availability ng master instance. Nag-aalok ang Redis sentinel ng isang madaling gamitin na API upang kunin ang impormasyon tungkol sa kalusugan ng master node at mga nauugnay na replika at magsagawa rin ng mga gawaing pang-administratibo.