Java 哨兵配置

本文介绍了如何在Java中配置Sentinel哨兵,强调了Sentinel之间的自动发现机制,通过发布订阅功能在sentinel:hello频道进行信息交换。同时提醒在使用127.0.0.1作为IP时可能遇到的问题,尤其是在Java的JedisSentinelPool配置中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个 Sentinel 可以与其他多个 Sentinel 进行连接, 各个 Sentinel 之间可以互相检查对方的可用性, 并进行信息交换。

你无须为运行的每个 Sentinel 分别设置其他 Sentinel 的地址, 因为 Sentinel 可以通过发布与订阅功能来自动发现正在监视相同主服务器的其他 Sentinel , 这一功能是通过向频道 sentinel:hello 发送信息来实现的

ADDR=`pwd`
for i in {1..3}
do
cat > ./sentinel${i}.conf <<EOF
daemonize yes
port 800${i}
sentinel monitor mymaster 192.168.133.131 6379 2 # 这里必须是具体的地址
dir ${ADDR}
bind 0.0.0.0
protected-mode no
sentinel down-after-milliseconds mymaster 6000
sentinel failover-timeout mymaster 18000
sentinel parallel-syncs mymaster 1
logfile ${ADDR}/${i}_sentinel.log
EOF
done   
     # 最后两行手动打,哨兵的配置文件里的提示不多,可以直接参考 redis.conf 里的说明文档
     # 注意故障转移后,你的主从配置文件会被追加配置,建议拷贝一份自己的主从配置

这段脚本不会有问题,注意ip 地址,如果是127.0.0.1,那么即使在虚拟机里配置完成可用,在Java里配置JedisSentinelPool 也会有问题

    public static void main(String[] args) throws InterruptedException {
        //连接池配置
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxTotal(10);
        jedisPoolConfig.setMaxIdle(5);
        jedisPoolConfig.setMinIdle(5);
        //哨兵信息
        Set<String> sentinels = new HashSet<String>(Arrays.asList(
                "192.168.133.131:8001",
                "192.168.133.131:8002",
                "192.168.133.131:8003"
        ));
        //创建连接池 注意这里的mymaster 就是上面配置的mymaster
        JedisSentinelPool pool = new JedisSentinelPool("mymaster", sentinels, jedisPoolConfig);
        
        //获取客户端
        Jedis jedis = pool.getResource();
        //执行两个命令
        jedis.set("k1", "myvaluex");
        System.out.println(jedis.get("k1"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值