Redis8.0哨兵模式搭建

哨兵模式是基于主从复制的,假如你还没有搭建主从模式,请移步到

redis8.0主从模式

哨兵模式解决的是:主从模式下主节点挂掉后从节点无法主动成为主节点的问题

解决的问题是,主从模式下,master节点挂掉以后,从节点无法自动升级为主节点的问题。

环境搭建:

复制代码
在 /opt/installs/redis/bin下面:
mkdir sentinel-zc

复制外面的sentinel.conf 到 sentinel-zc 文件夹下面

复制代码
cp /opt/modules/redis-8.0.1/sentinel.conf sentinel-zc

修改sentinel.conf配置:

修改bind

复制代码
bind bigdata01

修改端口号:

复制代码
port 26379   第一次不需要修改
daemonize yes  表示将来的sentinel服务,后台启动
复制代码
sentinel monitor mymaster 192.168.233.128 6379 2

注意:此处的ip不能写成主机名,比如bigdata01 否则启动报错!

假如主节点server 配置了密码,需要在sentinel.conf 文件中也配置密码:大约94行左右
    sentinel auth-pass mymaster 123456

谨记: 以上这个语句必须写在 sentinel monitor mymaster 192.168.233.128 6379 2
       的下方,否则启动报错。

关于配置文件中,正式环境修改一下,咱们这里就不修改了

复制代码
pidfile /var/run/redis-sentinel.pid
logfile ""
dir /tmp

将配置文件拷贝三份,修改端口号:

复制代码
cp sentinel.conf sentinel2.conf 
cp sentinel.conf sentinel3.conf 

修改端口:

将sentinel2.conf 端口修改为 26380

另一个sentinel3.conf 修改为 26381 .

启动三台sentinel 服务:

复制代码
先启动 redis-server 服务
./redis-server redis.conf
./redis-server mastersalves/redis.conf
再次启动 redis-sentinel服务:
./redis-sentinel sentinel-zc/sentinel.conf    
./redis-sentinel sentinel-zc/sentinel2.conf
./redis-sentinel sentinel-zc/sentinel3.conf

接着在主节点的 redis.conf 下,配置从节点的 redis 的密码:

测试哨兵模式:将主节点杀死,从节点自动变为主节点:

复制代码
哨兵模式可以自动将从节点变为主节点(重点是:自动)
复制代码
假如这个时候主节点又启动起来了,会自动变为从节点,并且从主节点中同步数据。
相当于以前的主节点变从节点,从节点自动变主节点,而且两边数据会同步。记得不要忘记设置主节点密码。

从节点也可以重新变为从节点,主节点变为主节点,需要手动修改。
SLAVEOF bigdata01 6379
主节点输入命令:slaveof NO ONE   变为主节点

主节点的redis的数据默认是存储在 ./的文件夹下
启动的时候在哪里启动,数据就保存在哪里,很不方便,可以通过配置文件指定数据的位置
cd /usr/local/bin
mkdir masterdata
修改 redis.conf 
dir /usr/local/bin/masterdata

如果是哨兵模式,jedis代码做稍微的调整,当然以前的也可以使用(但是假如主节点发生了变化,代码会连接不上)。

java 复制代码
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisSentinelPool;

import java.util.HashSet;

public class JedisSentinalPoolTest {

    Jedis jedis = null;
    @Before
    public void initDB(){
      
        GenericObjectPoolConfig poolConfig = new GenericObjectPoolConfig();
        // idle 空闲的 最大空闲
        poolConfig.setMaxIdle(200);
        // 最大的连接数量
        poolConfig.setMaxTotal(1000);
        // 最小空闲
        poolConfig.setMinIdle(5);

        HashSet<String> hashSet = new HashSet<>();
        hashSet.add("bigdata01:26379");
        hashSet.add("bigdata01:26380");
        hashSet.add("bigdata01:26381");
        JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster",hashSet,poolConfig,"123456");
        jedis =  sentinelPool.getResource();

    }

    @After
    public void destroyDB(){
        // 数据库关闭
        jedis.close();
    }

    /**
     *  常见的数据库连接池有:c3p0 dbcp druid  HikariCP等
     */
    @Test
    public void testPool(){
        System.out.println(jedis.get("age"));
    }
}
相关推荐
二进制_博客3 天前
redis8.0快速搭建主从复制
redis·redis8
二进制_博客3 天前
全新redis8.0在centos7.5的安装
redis·nosql·redis8
chen_note3 个月前
Redis集群介绍——主从、哨兵、集群
redis·主从模式·集群模式·哨兵模式
超人也会哭️呀4 个月前
Redis(八):Redis高并发高可用(哨兵Sentinel)
redis·bootstrap·sentinel·哨兵·哨兵模式·高并发高可用
喝养乐多长不高6 个月前
深入探讨redis:主从复制
数据库·redis·缓存·主从模式·主从复制·全量复制·部分复制
喝养乐多长不高7 个月前
深入探讨redis:哨兵模式
数据库·redis·缓存·docker·主从复制·哨兵模式
IT成长日记9 个月前
Redis哨兵模式(Sentinel)高可用方案介绍与配置实践
redis·sentinel·高可用·哨兵模式
王彬泽1 年前
【Redis】分布式(day12)
redis·主从模式·集群模式·哨兵模式
&梧桐树夏1 年前
Redis 主从复制
redis·主从复制·哨兵模式