Redis: mirada simple e intuitiva al efecto de centinela

Sentinel también es un proceso de redis independiente. No proporciona servicios externos. Se utiliza principalmente para monitorear el funcionamiento de la base de datos maestra y la base de datos esclava. Luego, cuando la base de datos maestra falla, actualiza activamente la base de datos esclava a la base de datos maestra, evitando el cambio manual Operación.

Primero inicie una instancia de redis con el puerto 6379 como base de datos principal y luego use los dos comandos siguientes para iniciar dos servicios de redis, los puertos son 6380 y 6381 respectivamente, y están designados como bases de datos esclavas del servicio de redis en el puerto 6379:

redis-server /usr/local/etc/redis.conf --port 6380 --slaveof 127.0.0.1 6379
redis-server /usr/local/etc/redis.conf --port 6381 --slaveof 127.0.0.1 6379

Verifique la información de replicación de la base de datos maestra con el puerto 6379 Inserte la descripción de la imagen aquí
en este momento : puede encontrar que la base de datos maestra tiene dos bases de datos esclavas en este momento, los puertos son 6380 y 6381 respectivamente.

A continuación, configure el centinela y cree un archivo de configuración llamado sentinel.conf. El contenido del archivo es:

# 配置监听的主服务器
sentinel monitor masterone 127.0.0.1 6379 1
sentinel monitor 表示哨兵监控

masterone表示自己要监控的主数据库的名字,可以自定义。不过这个名字必须只能由大小写字母、数字和“.-_”这 3 个字符组成。

127.0.0.1 6379表示要监控服务的ip地址和端口号。

1表示最低通过票数,代表只有1个或1个以上的哨兵认为主数据库主观下线的时候,才会进行故障切换(failover)操作。

De la siguiente manera: Inserte la descripción de la imagen aquí
use el comando para redis-sentinel +哨兵配置文件的地址iniciar el servicio de centinela, de la siguiente manera: Inserte la descripción de la imagen aquí
genere la siguiente información:Inserte la descripción de la imagen aquí

1表示哨兵进程的运行id
2表示哨兵经常监控的主数据库
3,4表示哨兵已经自动发现了它监控的主数据库下的两个从数据库

Luego cierre la base de datos principal con el puerto 6379, de la siguiente manera: Inserte la descripción de la imagen aquí
espere un período de tiempo, el valor predeterminado es 30 segundos, el centinela aparecerá de la siguiente manera:Inserte la descripción de la imagen aquí

1的+sdown表示sentinel主观上的认为6379端口的服务已经停止了,这是sentinel自己作出的判断。
2的+odown表示sentinel客观上的认为6379端口的服务已经停止了,不过客观下线是需要一定数量的sentinel达成一致意见才能认为一个master已经停止了服务,由于此时只有一个sentinel,所以也做了客观下线。
3表示达到了failover条件,要开始执行故障恢复,等待其他sentinel的选举,挑选出一个从数据库,将其升格为主数据库。
4表示故障恢复完成。
5表示从数据库127.0.0.1:6380被升格为了主数据库。
6,7表示新的主数据库有两个从库,分别为127.0.0.1:6379 ,127.0.0.1:6381,此时127.0.0.1:6379 服务虽然已经断开,但是哨兵并没有清除该无效实例,是为了实例恢复后,方便重新加入时以从数据库的身份继续服务。
8表示发现127.0.0.1:6379服务已经宕机,等待恢复。

En este momento, verifique la información de replicación del servicio con el puerto 6380, de la siguiente manera: Inserte la descripción de la imagen aquí
puede encontrar que el servicio en el puerto 6380 es la base de datos principal en este momento, y hay una biblioteca esclava conectada, que es el servicio redis con el puerto 6381.

En este punto, reinicie el servicio 6379 y observe Inserte la descripción de la imagen aquí
la salida del centinela: puede ver que la instancia de redis con el número de puerto 6379 ha reanudado el servicio mirando la salida.

Luego, observe la información de replicación de la instancia 6380 como la base de datos principal en este momento, de la siguiente manera: Inserte la descripción de la imagen aquí
Una vez que se encuentra que la instancia de redis con el número de puerto 6379 se ha restaurado, se establece como la base de datos esclava de la instancia de servicio con el número de puerto 6380.

Por último, observe la información de replicación de la instancia de redis con el número de puerto 6379, de la siguiente manera: Inserte la descripción de la imagen aquí
puede ver que el rol de la instancia de redis con el número de puerto 6379 ya es la base de datos esclava y su base de datos principal es la instancia de servicio con el número de puerto 6380.

Supongo que te gusta

Origin blog.csdn.net/weixin_38106322/article/details/108522417
Recomendado
Clasificación