Redis modelo Sentinel es una solución de alta disponibilidad proporcionada por el funcionario, y la configuración es muy simple.
instalación del clúster Redis
Como se usa en el presente documento, REDIS-5.0.5, REDIS instalado en / blando / REDIS directorio, para ser el redis nuevo directorio / suave / / datos
El nodo maestro se configura
vim config / redis-6379.conf
# bind 127.0.0.1
port 6379
protected-mode no
daemonize yes
pidfile "/var/run/redis_6379.pid"
dir "/soft/redis/data"
dbfilename "dump-6379.rdb"
logfile "log-6379.log"
Configuración desde el nodo. 1
Vim config / Redis-6380.conf
# bind 127.0.0.1
port 6380
protected-mode no
daemonize yes
pidfile "/var/run/redis_6380.pid"
dir "/soft/redis/data"
dbfilename "dump-6380.rdb"
logfile "log-6380.log"
replicaof 192.168.4.176 6379
2 desde el nodo de configuración
vim config / redis-6381.conf
# bind 127.0.0.1
port 6381
protected-mode no
daemonize yes
pidfile "/var/run/redis_6381.pid"
dir "/soft/redis/data"
dbfilename "dump-6381.rdb"
logfile "log-6381.log"
replicaof 192.168.4.176 6379
Las instrucciones de configuración
# Enlazar 127.0.0.1 comentó esta configuración, de modo que otras máquinas pueden conectarse Redis
para proteger el MODO NO en modo protegido cerradas, de modo que otras máquinas pueden conectarse Redis
daemonize iniciar el modo de fondo
versión Redis-v5 replicaof sustituir las antiguas instrucciones slaveof, preguntándose ¿por replicaof reemplazar slaveof, se puede ver en estos artículos de chismes .
Iniciar este tres nodos se ejecuta bajo / soft / ReDiS directorio
Redis-config server / Redis-6379.conf
Redis-config server / Redis-6380.conf
Redis-config server / Redis-6381.conf
Abra el cliente nodo maestro para ver si la configuración es correcta
Redis-CLI -p 6379
información de replicación
Reconfiguración 3 Sentry, racimo de monitor
Sentinel nodo. 1
Vim config / Redis-Sentinel-26379.conf
port 26379
daemonize yes
pidfile "/var/run/redis-sentinel-26379.pid"
dir /tmp
logfile "log-sentinel-26379.log"
sentinel monitor mymaster 192.168.4.176 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
Sentinel nodo 2
Vim config / Redis-Sentinel-26380.conf
port 26380
daemonize yes
pidfile "/var/run/redis-sentinel-26380.pid"
dir /tmp
logfile "log-sentinel-26380.log"
sentinel monitor mymaster 192.168.4.176 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
Sentinel nodo. 3
Vim config / Redis-Sentinel-26381.conf
port 26381
daemonize yes
pidfile "/var/run/redis-sentinel-26381.pid"
dir /tmp
logfile "log-sentinel-26381.log"
sentinel monitor mymaster 192.168.4.176 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
Las instrucciones de configuración
del monitor mymaster 192.168.4.176 6379 2
mymaster es el nombre del maestro, es 192.168.4.176 principal IP del host. 2 representa la parte posterior del centinela que tiene dos principal es hacia abajo, entonces la línea principal, se recomienda a los nodos conjunto sentinel / 2 +. 1
hacia abajo-después de milisegundos
solicitudes ping para el nodo no REDIS recibe una respuesta dentro del tiempo especificado, cree que el nodo debe ser la línea de montaje
en paralelo se sincroniza
en la aplicación de conmutación por error, número máximo de nuevo servidor primario simultánea para sincronizar desde el nodo.
Inicio Sentinel
redis-centinela config / redis-centinela-26379.conf
redis-centinela config / redis-centinela-26380.conf
redis-centinela config / redis-centinela-26381.conf
configuración del resorte-boot
introducir pom.xml dependiente
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
application.properties añaden dos líneas de configuración
# 使用哨兵模式不能加以下两行配置,其他配置可以加
# spring.redis.host=192.168.4.176
# spring.redis.port=6379
spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=192.168.4.176:26379, 192.168.4.176:26380, 192.168.4.176:26381
写一个测试类运行
@RunWith(SpringRunner.class)
@SpringBootTest
public class Sentinel001 {
@Autowired
RedisTemplate redisTemplate;
@Test
public void test001() throws Exception{
while (true){
String key = "time:" + new Date().getTime();
redisTemplate.opsForValue().set(key, new Date().getTime());
TimeUnit.MILLISECONDS.sleep(100L);
System.out.println(redisTemplate.opsForValue().get(key));
}
}
}
Luego matar a la instancia principal (número de puerto 6379 de Redis) Proceso
ps -ef | grep Redis
kill -9 11110
Observe la salida de la consola Editor de código, después de un breve periodo de tiempo (alrededor de 50), el programa para reanudar el funcionamiento normal
En 6380 y 6381 realiza la replicación del nodo información, encontró que el 6381 se convirtió en un nodo maestro
Bajo 6380,6381 Ver perfil
config CAT / Redis-6380.conf
replicaof 192.168.4.176 6381
replicaof convertido 192.168.4.176 6381, en lugar de comienzo de configuración cuando 192.168.4.176 6379
config CAT / Redis-6381.conf
replicaof configuración ha sido borrada
Restart en 6379 este ejemplo redis
Redis-config server / Redis-6379.conf
6379 se convirtió en 6381 a partir de un nodo
Tiene cosas relativamente padre de pozo, RedisTemplate separados de lectura no realizada y escribir, leer y operaciones de escritura son el nodo maestro. Ejecutar el código anterior, en tres Redis cliente está ejecutando Monitor encontró que get única carrera principal, conjunto de comandos, desde el nodo que ejecuta sólo el comando set.