• Redis在Windows下单机集群部署和哨兵模式部署


    集群模式部署

    Redis版本

    5.0.10

    端口

    6371,6372,6373,6374,6375,6376.

    配置文件

    将Redis安装6份,或者将redis安装后的文件复制6份

    修改各个redis包中的redis.windows.conf文件

    修改79行

    port 6371

    取消注释707行

    cluster-enabled yes

    取消注释715行

    cluster-config-file nodes-6371.conf

    取消注释721行

    cluster-node-timeout 15000

    6个redis的端口号不同。
    如果cluster-enabled 不为yes, 那么在使用JedisCluster集群代码获取的时候,会报错。
    cluster-node-timeout 调整为15000,那么在创建集群的时候,不会超时。
    cluster-config-file nodes-6371.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。

    在各个redis目录下编写start.bat文件

    内容如下:

    title redis-6371
    redis-server.exe redis.windows.conf

    启动各个Redis下的start.bat文件

    组成集群

    找一个redis-cli执行:
    注意:现在已经不需要使用Ruby了

    redis-cli --cluster create 127.0.0.1:6371 127.0.0.1:6372 127.0.0.1:6373 127.0.0.1:6374 127.0.0.1:6375 127.0.0.1:6376 --cluster-replicas 1

    上述命令 --replicas 1 表示每个主节点拥有从节点个数为1。
    master节点(主节点)不能少于3个,所以我们用了6个redis(3主+3从)

    测试效果

    找一个cli执行:
    命令 redis-cli –c –h ”地址” –p “端口号” ; -c 表示集群

    redis-cli -c -h 127.0.0.1 -p 6371

    查看集群信息

    cluster info

    查看各结点主从关系

    cluster nodes

    查看当前结点信息

    info replication

    插入数据

    显示Redirected to slot表示是使用集群方式插入的数据

    nodejs使用ioredis操作集群

    const Redis = require("ioredis");
    
    const cluster = new Redis.Cluster([
      {
        port: 6380,
        host: "127.0.0.1",
      },
      {
        port: 6381,
        host: "127.0.0.1",
      },
    ]);
    
    cluster.set("foo", "bar");
    cluster.get("foo", (err, res) => {
      // res === 'bar'
    });

    哨兵模式部署

    Redis版本

    5.0.10

    端口

    主:6380
    从:6381,6382
    哨兵:6383,6384,6385

    配置文件

    新建文件

    只需要装一个redis,在安装目录下新建6个配置文件

    主服务器配置文件

    (复制原来的redis.windows.conf文件)
    redis.windows6380.conf

    port 6379
    bind 127.0.0.1

    从服务器配置文件

    redis.windows6381.conf

    port 6380
    bind 127.0.0.1
    slaveof 127.0.0.1 6379 // 设置master服务器为6379

    redis.windows6382.conf

    port 6381
    bind 127.0.0.1
    slaveof 127.0.0.1 6379 // 设置master服务器为6379

    哨兵配置文件

    1. port :当前Sentinel服务运行的端口
    2. sentinel monitor mymaster 127.0.0.1 6379 2:Sentinel去监视一个名为mymaster的主redis实例,这个主实例的IP地址为本机地址127.0.0.1,端口号为6379,而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行
    3. sentinel down-after-milliseconds mymaster 5000:指定了Sentinel认为Redis实例已经失效所需的毫秒数。当 实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行
    4. sentinel parallel-syncs mymaster 1:指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
    5. sentinel failover-timeout mymaster 15000:如果在该时间(ms)内未能完成failover操作,则认为该failover失败

    sentinel6383.conf内容:

    port 26379
    sentinel myid 88a3f92f656984fd84c183b6b183d5d264ddc485
    sentinel monitor mymaster 127.0.0.1 6381 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 15000

    sentinel6384.conf内容:

    port 26479
    sentinel myid 6c4798231532356aacf132f1aa952f022f41012e
    sentinel monitor mymaster 127.0.0.1 6381 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 15000

    sentinel6385.conf内容:

    port 26579
    sentinel myid fad25e089080be8dddadd3f20e44f888b1f8d48a
    sentinel monitor mymaster 127.0.0.1 6379 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 15000

    启动

    启动一主二从三哨兵

    redis-server.exe redis.windows6380.conf
    redis-server.exe redis.windows6381.conf
    redis-server.exe redis.windows6382.conf

    redis-server.exe sentinel6383.conf --sentinel
    redis-server.exe sentinel6384.conf --sentinel
    redis-server.exe sentinel8385.conf --sentinel

    测试效果

    查看服务器状态:

    redis-cli.exe -h 127.0.0.1 -p 6380

    查看哨兵状态:

    redis-cli.exe -h 127.0.0.1 -p 6384

    nodejs使用ioredis操作哨兵

    const redis = new Redis({
      sentinels: [
        { host: "localhost", port: 6383 },
        { host: "localhost", port: 6384 },
        { host: "localhost", port: 6385 }
      ],
      name: "mymaster",
    });
    
    redis.set("foo", "bar");

    参考

    ioredis文档
    https://www.npmjs.com/package/ioredis
    集群博客
    https://www.cnblogs.com/thirteen-zxh/p/9187875.html
    https://blog.csdn.net/woheniccc/article/details/79611050
    哨兵博客
    https://www.cnblogs.com/justdoyou/p/10253668.html

  • 相关阅读:
    JQuery POST请求乱码...
    open source e-business software
    about tomcat ssl
    使用汉文博士检索汉字
    使用汉文博士检索词条
    安装并运行汉文博士
    汉文博士正式版发布
    汉文博士新测试版0.5.3.2081发布
    汉文博士新测试版0.5.3.2020发布
    汉文博士新测试版0.5.3.2010发布
  • 原文地址:https://www.cnblogs.com/aojun/p/15210858.html
Copyright © 2020-2023  润新知