cp ./redis.conf ./redis6379.conf cp ./redis.conf ./redis6380.conf cp ./redis.conf /.redis6381.conf修改reids.conf配置文件,以redis6379.conf配置为例
自定义Redis日志文件保存位置
我的是
/Users/zhr/tools/redis/redis6379
/Users/zhr/tools/redis/redis6380
/Users/zhr/tools/redis/redis6381
打开文件
vim ./redis6379.conf
然后配置
#启用后台启动 daemonize yes #pidfile位置,配置到对应的文件下面 pidfile "/Users/zhr/tools/redis/redis6379/redis6379.pid" #端口 port 6379 #日志文件位置,配置到对应的文件下面 logfile "/Users/zhr/tools/redis/redis6379/log6379.log" #rdb备份文件名称 dbfilename "dump6379.rdb" #rdb备份文件路径,配置到对应的文件下面 dir "/Users/zhr/tools/redis/"
其它的俩conf文件依次按照上面的配置然后启动
./redis-server ./redis6379.conf ./redis-server ./redis6380.conf ./redis-server ./redis6381.conf
然后通过然后通过客户端连接,看一下那个可以新增数据,可以新增数据的那个是主节点
./redis-cli -p 6379 ./redis-cli -p 6379 ./redis-cli -p 6379
确认那个端口号连接的是主节点之后,然后在其余的从节点的conf文件下面加入这句话,然后重启所有节点
# slaveof 主节点ip 主节点端口号 slaveof 127.0.0.1 6379
重启所有节点:
方法一用客户端登录到各个节点
redis-cli -p 6379 shutdown
方法二打开进程管理结束所有Redis进程
然后再重新启动所有服务器节点
./redis-server ./redis6379.conf ./redis-server ./redis6380.conf ./redis-server ./redis6381.conf配置哨兵
在redis.conf文件的目录中可以看到sentinel.conf,然后复制三份
vim sentinel-26379.conf #Sentinel节点的端口,分别配置不同Sentinel节点端口号 port 26379 #自定义存储目录,把哨兵的日志保存到你自定义的目录中去 dir "/Users/zhr/tools/redis/sentinel" #开启守护进程启动 daemonize yes #日志文件名字配置成对应的日志文件名字 logfile "sentinel-26379.log" #当前Sentinel节点监控 127.0.0.1:6379 这个主节点的端口号和ip #2代表判断主节点失败至少需要2个Sentinel节点节点同意 #mymaster是主节点的别名 #所有的哨兵文件都配置成这样 sentinel monitor mymaster 127.0.0.1 6379 2 #每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒且没有回复,则判定不可达 #所有的哨兵文件都配置成这样 sentinel down-after-milliseconds mymaster 30000 #当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,原来的从节点会向新的主节点发起复制操作,限制每次向>新的主节点发起复制操作的从节点个数为1 #所有的哨兵文件都配置成这样 sentinel leader-epoch mymaster 1 #故障转移超时时间为180000毫秒 #所有的哨兵文件都配置成这样 sentinel failover-timeout mymaster 180000 #同理创建修改sentinel-26380.conf、sentinel-26381.conf配置文件
启动哨兵
./redis-sentinel ./sentinel-26379.conf ./redis-sentinel ./sentinel-26380.conf ./redis-sentinel ./sentinel-26381.conf
服务端至此配置完毕!!!
springboot集成特别注意在配置节点的时候,端口号是哨兵节点端口号
server:
port: 80
spring:
redis:
lettuce:
pool:
# 连接池最大连接数(使用负值表示没有限制) 默认为8
max-active: 8
# 连接池中的最大空闲连接 默认为8
max-idle: 8
# 连接池最大阻塞等待时间(使用负值表示没有限制) 默认为-1
max-wait: -1ms
# 连接池中的最小空闲连接 默认为 0
min-idle: 0
sentinel:
# 主节点的别名
master: mymaster
# sentinel服务的ip 和 哨兵的端口
nodes: 192.168.126.200:26379,192.168.126.200:26380,192.168.126.200:26381
org.springframework.boot spring-boot-starter-data-redis org.springframework.boot spring-boot-starter-web org.apache.commons commons-pool2
@RestController
@RequestMapping("/redis")
public class RedisController {
// 使用SpringBoot封装的RestTemplate对象
@Autowired
RedisTemplate redisTemplate;
@RequestMapping("/get")
public String get(String key) {
String value = redisTemplate.opsForValue().get(key);
return value;
}
@RequestMapping("/set")
public String set(String key, String value) {
redisTemplate.opsForValue().set(key, value);
return "success";
}
}
以请求新增或者获取值的接口
最主要的是可以把主节点停止掉(用redis-cli -p 6379停止或者结束主节点进程),判断哨兵是否会主动创建新的主节点
成功连接到新的主节点!!!



