• redis哨兵配置


    redis哨兵配置主从

     

    redis哨兵的启动和redis实例的启动没有关系。所以可以在任何机器上启动redis哨兵。至少要保证有两个哨兵在运行,要不然宕机后哨兵会找不到主节点。

    配置步骤:

    1.在redis的配置文件中添加鉴权和验证(添加requirepass和masterauth),redis主从都需要配置,配置的密码一般相同。

    2.redis一般都在内网运行,所以注释掉#bind 127.0.0.1

    3.关闭保护模式,protected-mode 把yes改为no

    4.添加sentinel.conf配置文件:

    复制代码
    #sentinel端口
    port 26379
    #工作路径,注意路径不要和主重复
    dir "/usr/local/redis-6379"
    # 守护进程模式
    daemonize yes
    #关闭保护模式
    protected-mode no
    # 指明日志文件名
    logfile "./sentinel.log"
    #哨兵监控的master,主从配置一样,这里只用输入redis主节点的ip/port和法定人数。
    sentinel monitor mymaster 192.168.125.128 6379 1
    # master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
    sentinel down-after-milliseconds mymaster 5000
    #若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
    sentinel failover-timeout mymaster 18000
    #设置master和slaves验证密码
    sentinel auth-pass mymaster 123456 
    sentinel parallel-syncs mymaster 1//指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步
    复制代码

    Sentinel参数在运行时可以使用SENTINEL SET命令更改

    上面配置中的mymaster为该主从的名字,代码中会使用。

    通过哨兵查看集群的信息:

    复制代码
    $ redis-cli -p 26379
    sentinel master mymaster//查看master的状态 
    SENTINEL slaves mymaster //查看salves的状态
    SENTINEL sentinels mymaster //查看哨兵的状态
    SENTINEL get-master-addr-by-name mymaster//获取当前master的地址
    info sentinel//查看哨兵信息
    复制代码

    启动哨兵:

    方式一:redis-sentinel /path/to/sentinel.conf(推荐,这种方式启动和redis实例没有任何关系)
    方式二:redis-server /path/to/sentinel.conf --sentinel

    java测试代码:

    复制代码
    public static void main(String[] args) {
            Set<String> sentinels = new HashSet<String>();
            sentinels.add(new HostAndPort("192.168.125.128", 26379).toString());
            sentinels.add(new HostAndPort("192.168.125.129", 26379).toString());
            sentinels.add(new HostAndPort("192.168.125.130", 26379).toString());
            JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels);
            System.out.println("Current master: " + sentinelPool.getCurrentHostMaster().toString());
            Jedis master = sentinelPool.getResource();
            master.auth("pwdisadmin");
            master.set("username","cczz");
            Jedis master2 = sentinelPool.getResource();
            master2.auth("pwdisadmin");
            String value = master2.get("username");
            System.out.println("username: " + value);
            master2.close();
            sentinelPool.close();
            sentinelPool.destroy();
        }
    复制代码
  • 相关阅读:
    三、Python基础(5)
    三、Python基础(4)
    三、Python基础(3)
    三、Python基础(2)
    mysql 索引的使用
    Java 泛型T
    vueJS
    集群 分布式 负载均衡的区别
    nodeJS vue elementUI mock学习过程笔记,仅用于个人记录巩固
    MAP
  • 原文地址:https://www.cnblogs.com/brady-wang/p/6141431.html
Copyright © 2020-2023  润新知