Replicación maestro-esclavo de Redis
Una, replicación maestro-esclavo
Replicación maestro-esclavo: la replicación maestro-esclavo es la base de Redis de alta disponibilidad. Sentinel y los clústeres se basan en la replicación maestro-esclavo para lograr una alta disponibilidad. La replicación maestro-esclavo implementa principalmente la copia de seguridad de datos de varias máquinas, así como el equilibrio de carga y la recuperación de fallas simple para operaciones de lectura. Defectos: la recuperación de errores no se puede automatizar: las operaciones de escritura no se pueden equilibrar la carga; la capacidad de almacenamiento está limitada por una sola máquina.
Anfitrión | dirección IP | Paquete de software |
---|---|---|
Nodo maestro | 192.168.199.40 | redis-5.0.7.tar.gz |
Nodo esclavo1 | 192.168.199.50 | redis-5.0.7.tar.gz |
Nodo esclavo2 | 192.168.199.60 | redis-5.0.7.tar.gz |
systemctl stop firewalld
setenforce 0
Instalar Redis
[Configuración y optimización de NoSQL Redis]
Modificar el archivo de configuración de Redis (nodo maestro)
vim /etc/redis/6379.conf
bind 0.0.0.0 #70行,修改监听地址为0.0.0.0
daemonize yes #137行,开启守护进程
logfile /var/ log/redis_6379.log #172行,指定日志文件目录
dir /var/lib/redis/6379 #264行,指定工作目录
appendonly yes #700行,修改为yes开启AOF持久化功能
/etc/init.d/redis_6379 restart
Modificar el archivo de configuración de Redis (nodo esclavo)
vim /etc/redis/6379.conf
bind 0.0.0.0 #70行,修改监听地址为0.0.0.0
daemonize yes #137行,开启守护进程
logfile /var/log/redis_6379.log #172行,指定日志文件目录
dir /var/lib/redis/6379 #264行,指定工作目录
replicaof 192.168.199.40 6379 #288行,指定要同步的Master节点IP和端口
appendonly yes #700行,开启AOF持久化功能
/etc/init.d/redis_6379 restart
Verificar el efecto maestro-esclavo
Mire el registro en el nodo maestro
tail -f /var/log/redis_6379.log
Verifique el nodo esclavo en el nodo maestro
redis-cli info replication
En segundo lugar, construye el modo centinela de Redis
El inicio del centinela depende del modo maestro-esclavo, por lo que debe instalar el modo maestro-esclavo antes de pasar al modo centinela. Todos los nodos deben implementar el modo centinela. El modo centinela controlará si todos los nodos de trabajo de Redis son normales . Cuando aparece el Maestro Cuando hay un problema, porque otros nodos han perdido el contacto con el nodo maestro, votarán. Más de la mitad de los votos se considera que hay un problema con este Maestro, y luego la sala de guardia será notificado, y luego uno de los esclavos será seleccionado como el nuevo maestro.
systemctl stop firewalld
setenforce 0
Modificar el archivo de configuración del modo centinela de Redis (todos los nodos)
vim /opt/redis-5.0.7/sentinel.conf
protected-mode no #17行,关闭保护模式
port 26379 #21行,Redis哨兵默认的监听端口
daemonize yes #26行,指定sentinel为后台启动
logfile "/var/1og/sentinel.log" #36行,指定日志存放路径
dir "/var/lib/redis/6379" #65行,指定数据库存放路径
sentinel monitor mymaster 192. 168.199.40 6379 2 #84行,修改,指定该哨兵节点监控192.168.199.40:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2
个哨兵节点同意,才能判定主节点故障并进行故障转移
sentinel down-after-milliseconds mymaster 3000 #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒 )
sentinel failover-timeout mymaster 180000 #146行,故障节点的最大超时时间为180000 (180秒)
Activar el modo centinela
Empezar maestro primero, luego esclavo
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &
Ver información centinela
redis-cli -p 26379 info sentinel
Simulación de fallas
Ver el número de proceso del servidor de redis
ps -ef | grep redis
Elimine el ID de proceso del servidor redis en el nodo maestro
kill -9 8503 #Master节点上redis-server的进程号
redis-cli -p 26379 info sentinel
Tres, crea un clúster de Redis
En términos generales, un clúster de redis requiere 6 nodos, 3 maestros y 3 esclavos.
Para mayor comodidad, aquí todos los nodos se simulan en el mismo servidor: se
distinguen por números de puerto:
3 números de puerto de nodo maestro: 6000/6001/6002, y los números de puerto de nodo esclavo correspondientes: 6004/6003/6005.
cd /etc/redis/
mkdir -p redis-cluster/redis600{
0..5}
for w in {
0..5}
do
cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis600$w
cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis600$w
done
Encienda la función de clúster
其他5个文件夹的配置文件以此类推修改,注意6个端口都要不一样。
vim /etc/redis/redis-cluster/redis6000/redis.conf
#bind 127.0.0.1 #69行,注释掉bind项,默认监听所有网卡
protected-mode no #88行,修改,关闭保护模式
port 6000 #92行,修改,redis 监听端口,
daemonize yes #136行,开启守护进程,以独立进程启动
appendonly yes #700行,修改,开启AOF持久化
cluster -enabled yes #832行,取消注释,开启群集功能
cluster-config-file nodes-6379.conf #840行,取消注释,群集名称文件设置
cluster-node-timeout 15000 #846行,取消注释群集超时时间设置
Inicie el nodo redis
分别进入那六个文件夹,执行命令: redis-server redis.conf,来启动redis节点
cd /etc/redis/redis-cluster/redis6000
redis-server redis.conf
(或使用for循环来启动)
for i in {
0..5}
do
cd /etc/redis/redis-cluster/redis600$i
redis-server redis.conf
done
ps -ef | grep redis
Iniciar el clúster
redis-cli --cluster create 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 --cluster-replicas 1
# Las seis instancias se dividen en tres grupos, cada grupo tiene un maestro y un esclavo, el frente es el nodo maestro y la parte posterior es el nodo esclavo. Debe ingresar sí para crear la siguiente interacción.
-Replicas 1 significa que cada nodo maestro tiene 1 nodo esclavo.
redis-cli -p 6000 -c #加-c参数,节点之间就可以互相跳转
cluster slots #查看节点的哈希槽编号范围