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 <master-name> <password>
sentinel auth-pass mymaster 123456

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

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

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

5.1引入jredis的pom依赖:

		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.7.1</version><!--版本号可根据实际情况填写 -->
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.3.2</version>
		</dependency>

java使用代码:

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

		Set<String> sentinels = new HashSet<String>(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依赖:

		<dependency>
			<groupId>org.redisson</groupId>
			<artifactId>redisson</artifactId>
			<version>3.13.3</version>
		</dependency>

使用实例:

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();

 

GitHub 加速计划 / sentine / Sentinel
36
7
下载
alibaba/Sentinel: Sentinel 是阿里巴巴开源的一款面向分布式服务架构的流量控制、熔断降级组件,提供实时监控、限流、降级和系统保护功能,适用于微服务治理场景。
最近提交(Master分支:16 天前 )
4a419818 * Improved Date formatter * change in naming conv * change in datetime format * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> 8 天前
d9398b4f 9 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐