文章目录
一、搭建环境
服务器:mac
redis版本:6.2.4
二、操作步骤
未安装redis的看官们可以参照mac redis搭建主从模式,本篇默认已安装完
1、添加哨兵集群
在redis的配置目录下会存在一个redis-sentinel.conf的配置文件,该文件就是哨兵启动的配置文件(哨兵其实就是一个特殊的redis实例)。如下图:
一般来说需要配置三个以上的基数个哨兵来进行主节点选举(当然一个哨兵也是能用的)。具体的配置如下:
# 修改端口号
port 26379
# 设置redis以守护进程的方式启动
daemonize yes
pidfile "/var/run/redis-sentinel-26379.pid"
# 设置启动日志文件夹
logfile "26379.log"
# 设置数据存放目录
dir "/usr/local/redis/db/sentinel/26379"
# 重要配置
# sentinel monitor <master-name> <ip> <redis-port> <quorum>
# <quorum>属性是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效(一般这个数字是sentinel数量的一半多一,n/2 + 1)
sentinel monitor mymaster 127.0.0.1 6379 2
配置完以上的配置文件后,多复制出两个26380、26381的实例出来。如此配置就完成了
2、启动哨兵集群
哨兵的启动指令如下:
/usr/local/opt/redis/bin/redis-sentinel /usr/local/etc/redis-sentinel.conf
另外两个哨兵,只需把后面的.conf文件替换下就可以
搭建完服务后的状态如下:
该哨兵集群中包含有:一个主节点、两个从节点、三个哨兵
注意:哨兵启动前需要把主从模式的redis服务构建完成
三、测试
哨兵模式的测试主要围绕选主来展开,测试当主节点挂了之后,哨兵是否能从剩余的从节点中选举出主节点进行之后的业务处理。
本篇将用springboot结合redis的形式来进行测试,具体步骤如下:
1、引入redis依赖
<!--引入redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--这个工具包必须引入,构建连接池的时候需要用到-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
2、在aplication.properties文件中配置redis相关属性
spring.redis.database=0
spring.redis.timeout=3000
spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381
spring.redis.lettuce.pool.max-idle=50
spring.redis.lettuce.pool.min-idle=10
spring.redis.lettuce.pool.max-active=100
spring.redis.lettuce.pool.max-wait=1000
3、具体的测试代码
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
public void testSentinel() {
int i = 1;
while (true) {
try {
stringRedisTemplate.opsForValue().set("muyichen" + i, i + "");
System.out.println("设置的key:" + "muyichen" + i);
i++;
Thread.sleep(1000);
} catch (Exception e) {
log.error("错误:", e);
}
}
}
4、启动测试
启动上述测试代码,日志打印如下图:
关闭主节点后:
重新选举完从节点后:
至此一个完整的哨兵集群搭建完成~