modelo Redis Sentinela é uma solução de alta disponibilidade fornecidos pelo funcionário, ea configuração é muito simples.
instalação de cluster Redis
Tal como aqui utilizado, Redis-5.0.5, instalado em Redis / mole / Redis directório, para ser a / redis directório nova / mole / dados
O nó mestre é configurado
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"
Configuração a partir do nó. 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 a partir do nó de configuração
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
instruções de configuração
# Bind 127.0.0.1 comentou esta configuração, de modo que outras máquinas pode conectar Redis
protegidos de modo a proteger o MODO NO fechada, de modo que outras máquinas pode conectar Redis
daemonize modo de fundo início
versão redis-v5 replicaof substituir as instruções slaveof velhos, imaginando Por replicaof substituir slaveof, você pode olhar para estes artigos de fofoca .
Iniciar este três nós rodando sob / soft diretório / Redis
Redis-servidor config / Redis-6379.conf
redis-servidor config / Redis-6380.conf
redis-servidor config / Redis-6381.conf
Abra o cliente nó mestre para ver se a configuração é bem sucedida
Redis-cli -p 6379
informações replicação
Reconfiguração 3 Sentry, conjunto do monitor
Sentinela nó. 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
Sentinela nó 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
Sentinela nó. 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
instruções de configuração
do monitor mymaster 192.168.4.176 6379 2
mymaster é o nome do mestre, 192.168.4.176 é mestre ip host. 2 representa a parte de trás do sentinela que tem dois mestre está em baixo, então a linha principal, recomendado para definir sentinel nodes / 2 +. 1
para baixo depois-milissegundos
pedidos de ping para o nó não Redis receber uma resposta dentro do tempo especificado, acredita que o nó deve estar fora da linha de montagem
em paralelo sincroniza
na implementação de failover, número máximo de novo servidor primário simultânea para sincronizar a partir do nó.
Iniciar Sentinela
Redis-sentinela config / redis-sentinela-26379.conf
redis-sentinela config / redis-sentinela-26380.conf
redis-sentinela config / redis-sentinela-26381.conf
configuração da mola de arranque
introduzindo POM dependente
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
application.properties adicionar duas linhas de configuração
# 使用哨兵模式不能加以下两行配置,其他配置可以加
# 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));
}
}
}
Em seguida, matar o exemplo principal (número de porta de Redis 6379) Processo
ps -ef | Redis grep
kill -9 11110
Observe a saída Editor de código console, depois de um curto período de tempo (cerca de 50), o programa para retomar a operação normal
Em 6380 e 6381 realiza nó a replicação informações, descobriram que 6381 tornou-se um nó mestre
Sob 6380,6381 Ver perfil
configuração CAT / Redis-6380.conf
replicaof 192.168.4.176 6381
replicaof tornar 192.168.4.176 6381, ao invés do início de configuração quando 192.168.4.176 6379
configuração CAT / Redis-6381.conf
replicaof configuração foi deletada
Reiniciar a 6379 neste exemplo redis
Redis-servidor config / Redis-6379.conf
6379 transformado em 6381 a partir de um nó
Ele tem uma relativamente pit coisas pai, RedisTemplate separado ler a realizar e escrever, ler e operações de gravação são o nó mestre. Executar o código acima, em três Redis cliente está executando o Monitor descobriu que get único mestre prazo, comando set, a partir do nó executando apenas o comando set.