• window环境下搭建Redis+Sentinel集群环境


    要搭建Redis 环境

    主库 127.0.0.1:7501

    从库两个 127.0.0.1:7502 、 127.0.0.1:7503  

    Sentinel三个 127.0.0.1:7504、127.0.0.1:7505、127.0.0.1:7506

    一、下载及安装

    参照:http://www.runoob.com/redis/redis-install.html

    二、搭建Redis集群

    建一个文件夹Redis-sentinel,复制6个Redis-x64文件夹进去,分别命名如下:

    主库:Redis-7501

    从库:Redis-7502、Redis-7503

    Sentinel:Redis-7504、Redis-7505、Redis-7506

    三、启动主库

    修改配置文件redis.windows.conf

    port 7501  //修改端口

    启动:cmd进入文件夹Redis-7501,运行redis-server.exe redis.windows.conf

    四、启动从库

    修改配置文件redis.windows.conf

    port 7502  //修改端口

    slaveof 127.0.0.1 7501  // 设置主库

     启动:cmd进入文件夹Redis-7502,运行redis-server.exe redis.windows.conf

    同理启动 Redis-7503

    五、sentinel部署

    在文件夹Redis-7504中添加 sentinel.conf,内容如下 

    port 7504   // 设置Sentinel服务运行的端口  

    sentinel monitor mymaster 127.0.0.1 7501 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 15000

     说明:

    1.sentinel monitor mymaster 127.0.0.1 7501 2

         Sentinel监视名为mymaster的主redis实例127.0.0.1:7501,判断主实例失效至少需要2个 Sentinel进程的同意

    2.sentinel down-after-milliseconds mymaster 5000

        指定Sentinel认为Redis实例已经失效所需的毫秒数。当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。

       只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移。

       只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行。  
    3.sentinel parallel-syncs mymaster 1

       指定在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
    4.sentinel failover-timeout mymaster 15000

       如果在该时间(ms)内未能完成failover操作,则认为该failover失败

     启动:cmd进入文件夹Redis-7504,运行redis-server.exe sentinel.conf --sentinel

    六、检查Redis集群

    cmd进入文件夹Redis-7501,运行redis-cli.exe -h 127.0.0.1 -p 7501

    输入info,可看到

    ......

    role:master
    connected_slaves:2
    slave0:ip=127.0.0.1,port=7502,state=online,offset=771739,lag=1
    slave1:ip=127.0.0.1,port=7503,state=online,offset=771739,lag=1

    ......

    说明当前redis为主,有两个从库,分别为127.0.0.1:7502、127.0.0.1:7503

    七、检查sentinel

    cmd进入文件夹Redis-7504,运行redis-cli.exe -h 127.0.0.1 -p 7504

    输入info sentinel,可看到

    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=mymaster,status=ok,address=127.0.0.1:7501,slaves=2,sentinels=3

    说明有3个sentinel已经运行

    注:可shutdown127.0.0.1:7501,sentinel会在5秒后把127.0.0.1:7502修改为主库,重新启动的127.0.0.1:7501会自动成为其中一个从库

    八、C#访问

    引用ServiceStack.Text.dll、ServiceStack.Redis.dll、ServiceStack.Interfaces.dll、ServiceStack.Common.dll

    注:版本要高一些,以下测试代码,上面4个类库均在4.0以上

    1.实例化

    var hosts = "127.0.0.1:7504;127.0.0.1:7505;127.0.0.1:7506".Split(';');

    ServiceStack.Redis.RedisSentinel sentinel = new ServiceStack.Redis.RedisSentinel(hosts, "mymaster");

    var redisManager=sentinel.Start();

    2.访问

    redisManager.GetClient().Set<string>("test", "123");

    redisManager.GetClient().Get<string>(“test”);

    代码就不说明了

  • 相关阅读:
    开发人员的幽默
    SpaceBuilder 1.0RC源代码提供下载
    什么是Alpha,Beta,RC,RTM版
    SQLite数据库参数化编程时,采用命名参数的方式
    ASP.NET第四天数据库知识
    ASP.NET第五天数据库知识
    ASP.NET第五天HTML基础
    ASP.NET第二天HTML基础
    ASP.NET第四天HTML基础
    ASP.NET第一天HTML基础
  • 原文地址:https://www.cnblogs.com/biyyss_sun/p/8025231.html
Copyright © 2020-2023  润新知