redis Sentinel 配置及使用

Sentinel选举新的matser时候需要过半的几点才能选举成功,因此我们设置了1个master,2个slave redis服务器,同时在三个服务器上面都需要配置 Sentinel,Sentinel会监控三个redis服务器,同时三个 Sentinel 之前也会互相监控。

服务器说明:三台服务器 

masterIp:192.168.43.213
slave1Ip:192.168.43.169
slave2Ip:192.168.43.39

1、master配置:master redis.conf只需要配置密码即可


# 设置密码
requirepass "123456"
masterauth 123456

2、两个slave的redis.conf的配置


# 设置密码
requirepass "123456"
masterauth 123456
# 指定主服务器,注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
slaveof 192.168.43.213 6379

3、哨兵配置:三个哨兵的配置都一样;在Redis安装目录下有一个sentinel.conf文件,copy一份进行修改

# 配置监听的主服务器,这里sentinel monitor代表监控,mymaster代表服务器的名称,可以自定义,192.168.43.213代表监控的主服务器,6379代表端口,2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作。
sentinel monitor mymaster 192.168.43.213 6379 2
# sentinel author-pass定义服务的密码,mymaster是服务名称,123456是Redis服务器密码
# sentinel auth-pass  
sentinel auth-pass mymaster 123456

4、配置完毕,按顺序先启动mater-salve1-slave2,再启动三个 Sentinel 

控制台可以看见 哨兵间互相监控

5、java链接哨兵模式使用redis

5.1引入jredis的pom依赖:

		
			redis.clients
			jedis
			2.7.1
		
		
			org.apache.commons
			commons-lang3
			3.3.2
		

java使用代码:

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
		jedisPoolConfig.setMaxTotal(10);
		jedisPoolConfig.setMaxIdle(5);
		jedisPoolConfig.setMinIdle(5);

		Set sentinels = new HashSet(Arrays.asList("192.168.43.213:26379", "192.168.43.169:26379", "192.168.43.39:26379"));
		
		
		JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels, jedisPoolConfig, "123456");
		Jedis jedis = pool.getResource();
		
		jedis.set("SentinelKey","SentinelValue2");
		System.out.println(jedis.get("SentinelKey"));

控制台输出:

关闭master服务器等几秒查看剩余两台slave服务器,有一台切换为了master

再使用上面代码测试成功,说明操作成功

5.2 Redisson连接哨兵模式使用redis

引入pom依赖:

		
			org.redisson
			redisson
			3.13.3
		

使用实例:

Config config = new Config();
		config.useSentinelServers().setMasterName("mymaster").addSentinelAddress("redis://192.168.4    
    3.213:26379","redis://192.168.43.169:26379","redis://192.168.43.39:26379").setPassword("123456");

RedissonClient client = Redisson.create(config);
		
client.getBucket("key1").set("value2");
		
String a = (String) client.getBucket("key1").get();
System.out.println(a);
		
client.shutdown();

 

你可能感兴趣的:(redis,redis哨兵,Sentinel,主从高可用,哨兵模式,redis高可用)