redis 5.0.x 部署

PS:对于使用者来说,Redis5.0和4.0都是一样的,但是redis 4.0的集群部署需要额外安装ruby的东西,5.0中则集成到了redis-cli,部署起来更方便

1.1 安装Redis

本章基于CentOS 7.9.2009编写而成,由于Linux发行版众多,安装过程可能有些许不同,仅供参考

1、下载Redis源码:wget http://download.redis.io/releases/redis-5.0.13.tar.gz

2、解压:tar xzf redis-5.0.13.tar.gz

3、cd redis-5.0.13/deps/

4、make hiredis lua jemalloc linenoise(编译依赖的库)

5、cd ..

6、编译:make -j 4(4表示使用4核编译,默认是1核,请根据实际情况修改参数)

1.2 部署单机版Redis

1、使用cd命令切换目录到Redis主目录下

2、创建一个文件夹用于存放单机版的数据和配置:mkdir single

3、拷贝一份配置文件到single文件夹:cp redis.conf single/redis.conf

4、切换到single目录:cd single/

5、使用你熟悉的编辑器修改redis.conf文件

第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6379(端口号)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6379.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第171行:logfile ${redis.home}/single/redis.log(日志路径)

 

 第218行:RDB持久化配置,全部注释掉并加上save ""表示关闭RDB持久化

 #save 900 1(每900秒内有1个key修改则进行持久化)

 #save 300 10(每300秒内有10个key修改则进行持久化)

 #save 60 10000(每60秒内有10000个key修改则进行持久化)

 save ""

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第263行:dir ${redis.home}/single/

 

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

6、在single目录下新建一个文件:touch start.sh并加入以下内容

 #!/bin/sh

 #注意:这个目录是指你实际的redis安装目录,比如/home/iceberg/Program/redis-5.0.13

 cd /home/iceberg/Program/redis-5.0.13

 src/redis-server single/redis.conf &

授予其可执行权限chmod 777 start.sh,运行即可启动

7、关闭redis

不要使用Kill -9的方法强制关闭Redis,不仅是Redis,任何程序都不应该使用这个方式关闭!这会使得程序预设的清理代码不执行!!!

在single目录下新建一个文件:touch stop.sh并加入以下内容

 #!/bin/sh

 #注意:这个目录是指你实际的redis安装目录,比如/home/iceberg/Program/redis-5.0.13

 cd /home/iceberg/Program/redis-5.0.13

 src/redis-cli -p 6379 shutdown

 #如果配置了密码要加上-a 你的密码

 #src/redis-cli -p 6379 -a 123456 shutdown

8、redisson配置(redis客户端配置)

(1)包含密码

{

    "singleServerConfig": {

        "address""redis://127.0.0.1:6379",

        "timeout"5000,

        "password""123456",

        "pingConnectionInterval"2000

    },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

    "transportMode""NIO"

}

(2)不包含密码

{

    "singleServerConfig": {

        "address""redis://127.0.0.1:6379",

        "timeout": 5000,

        "pingConnectionInterval": 2000

    },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

    "transportMode""NIO"

}

1.3 部署主从版Redis

1、使用cd命令切换目录到Redis主目录下

2、创建一个文件夹用于存放主从版的数据和配置:mkdir replication

3、进入目录:cd replication

4、创建两个文件夹:mkdir master slave

5、切换到主目录,把配置文件分别拷贝到master和slave,cp redis.conf replication/master/redis.conf、cp redis.conf replication/slave/redis.conf

6、使用你熟悉的编辑器修改redis.conf文件

(1)主redis配置

 第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6379(端口号,主从的端口号必须不一样)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6379.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第171行:logfile ${redis.home}/replication/master/redis.log

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第263行:dir ${redis.home}/replication/master/

 

 #如何设置密码的话,下边两个配置必须同时存在或同时注释掉,且密码必须相同

 第288行:masterauth (设置redis的密码,注释掉表示不需要)

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

(2)从redis配置

 第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6380(端口号,主从的端口号必须不一样)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6380.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第171行:logfile ${redis.home}/replication/slave/redis.log

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第263行:dir ${redis.home}/replication/slave/

 

 第281行:slaveof (配置主节点的ip和端口号)

 

 #如何设置密码的话,下边两个配置必须同时存在或同时注释掉,且密码必须相同

 第288行:masterauth (设置redis的密码,注释掉表示不需要)

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

7、启动和关闭脚本与单机版类似,把目录改成主从对应的目录,配置对端口号即可

8、配置

(1)包含密码

{

   "masterSlaveServersConfig":{

      "readMode":"MASTER",

      "slaveAddresses":[

         "redis://127.0.0.1:6381",

         "redis://127.0.0.1:6380"

      ],

      "masterAddress""redis://127.0.0.1:6379",

      "timeout"5000,

      "password""123456",

      "pingConnectionInterval"2000

   },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

   "transportMode":"NIO"

}

(2)不包含密码

{

   "masterSlaveServersConfig":{

      "readMode":"MASTER",

      "slaveAddresses":[

         "redis://127.0.0.1:6381",

         "redis://127.0.0.1:6380"

      ],

      "masterAddress""redis://127.0.0.1:6379",

      "timeout"5000,

      "pingConnectionInterval"2000

   },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

   "transportMode":"NIO"

}

1.4 部署哨兵版Redis

1、使用cd命令切换目录到Redis主目录下

2、创建一个文件夹用于存放哨兵版的数据和配置:mkdir sentinel

3、首先配置好主从节点,并启动(主从的相关配置请参考第三节)

4、创建三个文件夹:mkdir sentinel1 sentinel2 sentinel3

5、复制sentinel.conf到三个文件夹中(注意这里的配置文件不是redis.conf!)

6、sentinel.conf需要修改的地方如下(注意这里的配置文件不是redis.conf!)

(1)sentinel1

#取消注释,允许远程连接

 第17行:protected-mode no

 

 第21行:port 26379(端口号)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第50行:dir ${redis.home}/replication/sentinel1/(数据存储目录)

 

 第69行:sentinel monitor mymaster 10.60.44.87 6379 2(配置哨兵监控哪个主节点,mymaster是主节点的别名,2表示主从切换至少需要2台哨兵节点同意,一般为n/2+1,n表示哨兵节点数)

 

 #配置密码,注释掉表示不需要密码

 第71行:sentinel auth-pass mymaster 123456

 

 #额外增加配置

 #后台运行该redis节点

 daemonize yes

 #日志存储路径

 logfile "${redis.home}/sentinel/sentinel1/redis.log"

(2)sentinel2

 #取消注释,允许远程连接

 第17行:protected-mode no

 

 第21行:port 26380(端口号)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第50行:dir ${redis.home}/replication/sentinel2/(数据存储目录)

 

 第69行:sentinel monitor mymaster 10.60.44.87 6379 2(配置哨兵监控哪个主节点,mymaster是主节点的别名,2表示主从切换至少需要2台哨兵节点同意,一般为n/2+1,n表示哨兵节点数)

 

 #配置密码,注释掉表示不需要密码

 第71行:sentinel auth-pass mymaster 123456

 

 #额外增加配置

 #后台运行该redis节点

 daemonize yes

 #日志存储路径,${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 logfile "${redis.home}/replication/sentinel2/redis.log"

(3)sentinel3

 #取消注释,允许远程连接

 第17行:protected-mode no

 

 第21行:port 26381(端口号)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第50行:dir ${redis.home}/replication/sentinel3/(数据存储目录)

 

 第69行:sentinel monitor mymaster 10.60.44.87 6379 2(配置哨兵监控哪个主节点,mymaster是主节点的别名,2表示主从切换至少需要2台哨兵节点同意,一般为n/2+1,n表示哨兵节点数)

 

 #配置密码,注释掉表示不需要密码

 第71行:sentinel auth-pass mymaster 123456

 

 #额外增加配置

 #后台运行该redis节点

 daemonize yes

 #日志存储路径,${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 logfile "${redis.home}/replication/sentinel3/redis.log"

7、在sentinel1文件夹中新建一个文件,touch start.sh,填入以下内容

 #!/bin/sh

 #注意:这个目录是指你实际的redis安装目录

 cd /home/iceberg/Program/redis-5.0.13

 src/redis-sentinel sentinel/sentinel1/sentinel.conf &

授予其可执行权限chmod 777 start.sh,运行即可启动

其他哨兵把sentinel1改成sentinel2或sentinel3即可

8、关闭Redis与单机版类似,把目录改成哨兵对应的目录,配置对端口号即可

9、配置

(1)包含密码的配置

{

   "sentinelServersConfig":{

      "readMode":"MASTER",

      "sentinelAddresses":[

         "redis://127.0.0.1:26379",

         "redis://127.0.0.1:26389"

      ],

      "masterName":"mymaster",

      "password""123456",

      "pingConnectionInterval"2000

   },

   "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

   "transportMode":"NIO"

}

(2)不包含密码的配置

{

   "sentinelServersConfig":{

      "readMode":"MASTER",

      "sentinelAddresses":[

         "redis://127.0.0.1:26379",

         "redis://127.0.0.1:26389"

      ],

      "masterName":"mymaster",

      "pingConnectionInterval"2000

   },

   "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

   "transportMode":"NIO"

}

1.5 配置集群版Redis

1、使用cd命令切换目录到Redis主目录下

2、创建一个文件夹用于存放集群版的数据和配置:mkdir cluster

3、新建六个文件夹(Redis集群最少三主三从),mkdir master1 master2 master3 slave1 slave2 slave3 ,并复制redis.conf文件进去(这里假设的是一台机器的情况,如果你是用六台机器部署,就建一个文件夹就好)

5、集群相关配置如下

(1)master1

第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6381(端口号)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6381.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第171行:logfile ${redis.home}/cluster/master1/redis.log

 

 #注意:${redis.home}替换成redis的安装目录,比如/home/iceberg/Program/redis-5.0.13

 第263行:dir ${redis.home}/cluster/master1/

 

 #如何设置密码的话,下边两个配置必须同时存在或同时注释掉,且密码必须相同

 第288行:masterauth (设置redis的密码,注释掉表示不需要)

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

 

 # 开启集群模式

 第814行:cluster-enable yes

 

 #集群内部配置文件

 第822行:cluster-config-file “nodes-6381.conf”

(2)master2

第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6382(端口号,主从的端口号必须不一样)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6382.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录

 第171行:logfile ${redis.home}/cluster/master2/redis.log

 

 #注意:${redis.home}替换成redis的安装目录

 第263行:dir ${redis.home}/cluster/master2/

 

 #下边两个配置必须同时存在,且密码必须相同

 第288行:masterauth (设置redis的密码,注释掉表示不需要)

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

 

 # 开启集群模式

 第814行:cluster-enable yes

 

 #集群内部配置文件

 第822行:cluster-config-file “nodes-6382.conf”

(3)master3

 第69行:bind 127.0.0.1(注释掉)

 

 第88行:protected-mode no

 

 第92行:port 6383(端口号,主从的端口号必须不一样)

 

 第136行:daemonize yes(后台运行)

 

 第158行:pidfile /var/run/redis_6383.pid(后边的数字改成跟端口号一致)

 

 #注意:${redis.home}替换成redis的安装目录

 第171行:logfile ${redis.home}/cluster/master3/redis.log

 

 第218行:RDB持久化配置,全部注释掉并加上save ""表示关闭RDB持久化

 #save 900 1(每900秒内有1个key修改则进行持久化)

 #save 300 10(每300秒内有10个key修改则进行持久化)

 #save 60 10000(每60秒内有10000个key修改则进行持久化)

 save ""

 

 #注意:${redis.home}替换成redis的安装目录

 第263行:dir ${redis.home}/cluster/master3/

 

 #下边两个配置必须同时存在,且密码必须相同

 第288行:masterauth (设置redis的密码,注释掉表示不需要)

 第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

 

 #注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

 第672行:appendonly yes(开启AOF持久化)

 

 # 开启集群模式

 第814行:cluster-enable yes

 

 #集群内部配置文件

 第822行:cluster-config-file “nodes-6383.conf”

(4)slave1

第69行:bind 127.0.0.1(注释掉)

第88行:protected-mode no

第92行:port 6391(端口号,主从的端口号必须不一样)

第136行:daemonize yes(后台运行)

第158行:pidfile /var/run/redis_6391.pid(后边的数字改成跟端口号一致)

#注意:${redis.home}替换成redis的安装目录

第171行:logfile ${redis.home}/cluster/slave1/redis.log

#注意:${redis.home}替换成redis的安装目录

第263行:dir ${redis.home}/cluster/slave1/

#下边两个配置必须同时存在,且密码必须相同

第288行:masterauth (设置redis的密码,注释掉表示不需要)

第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

#注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

第672行:appendonly yes(开启AOF持久化)

# 开启集群模式

第814行:cluster-enable yes

#集群内部配置文件

第822行:cluster-config-file “nodes-6391.conf”

(5)slave2

第69行:bind 127.0.0.1(注释掉)

第88行:protected-mode no

第92行:port 6392(端口号,主从的端口号必须不一样)

第136行:daemonize yes(后台运行)

第158行:pidfile /var/run/redis_6392.pid(后边的数字改成跟端口号一致)

#注意:${redis.home}替换成redis的安装目录

第171行:logfile ${redis.home}/cluster/slave2/redis.log

#注意:${redis.home}替换成redis的安装目录

第263行:dir ${redis.home}/cluster/slave2/

#下边两个配置必须同时存在,且密码必须相同

第288行:masterauth (设置redis的密码,注释掉表示不需要)

第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

#注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

第672行:appendonly yes(开启AOF持久化)

# 开启集群模式

第814行:cluster-enable yes

#集群内部配置文件

第822行:cluster-config-file “nodes-6392.conf”

(6)slave3

第69行:bind 127.0.0.1(注释掉)

第88行:protected-mode no

第92行:port 6393(端口号,主从的端口号必须不一样)

第136行:daemonize yes(后台运行)

第158行:pidfile /var/run/redis_6393.pid(后边的数字改成跟端口号一致)

#注意:${redis.home}替换成redis的安装目录

第171行:logfile ${redis.home}/cluster/slave3/redis.log

#注意:${redis.home}替换成redis的安装目录

第263行:dir ${redis.home}/cluster/slave3/

#下边两个配置必须同时存在,且密码必须相同

第288行:masterauth (设置redis的密码,注释掉表示不需要)

第500行:requirepass foobared(设置redis的密码,注释掉表示不需要)

#注意:如果之前redis已经运行过,需要删除RDB文件dump.rdb!!!具体路径就是第263行的dir目录

第672行:appendonly yes(开启AOF持久化)

# 开启集群模式

第814行:cluster-enable yes

#集群内部配置文件

第822行:cluster-config-file “nodes-6393.conf”

6、使用单机版的启动脚本将启动上述六个redis实例

7、切换到redis主目录下,执行

#通过-a指定密码

src/redis-cli -a 123456 --cluster create --cluster-replicas 0 10.60.52.134:6381 10.60.52.134:6382 10.60.52.134:6383

输入yes,可以看到如下提示

redis 5.0.x 部署_第1张图片

发现所有16384个槽都分配成功,集群创建完成。

不过此时只有三个主节点,还需要设置一下从节点,这里要记录一下ID和ip:port的对应关系,不要清空了,下一步有用

8、手动添加从节点

我们假设你想要的对应关系是6381(主)-6391(从)、6382(主)-6392(从)、6383(主)-6393(从)

src/redis-cli -a 123456 --cluster add-node --cluster-slave --cluster-master-id cdd3d8faba1cb6a26faba5c2ffcd274b638aa159 10.60.52.134:6391 10.60.52.134:6381

src/redis-cli -a 123456 --cluster add-node --cluster-slave --cluster-master-id faa8847464a78ae58b95c0b2ea895250bd023864 10.60.52.134:6392 10.60.52.134:6382

src/redis-cli -a 123456 --cluster add-node --cluster-slave --cluster-master-id 0b4a8d999b04423a99dfa8d099e77534ecb925a0 10.60.52.134:6393 10.60.52.134:6383

依次执行命令,将从节点添加到集群中,如下图所示:redis 5.0.x 部署_第2张图片

9、集群完整性检查

集群完整性指所有的槽都必须分配到存活的主节点上,只要16384个槽有一个没有分配给节点则表示集群不完整。我们可以使用check命令检测任意一个节点即可完成检查,输入:

src/redis-cli -a 123456 --cluster check 10.60.52.134:6381

可以看到3主3从,且16384个槽都分配完毕,表示集群完整,如下图所示redis 5.0.x 部署_第3张图片

10、配置

(1)包含密码的配置

{

    "clusterServersConfig": {

        "readMode""MASTER",

        "nodeAddresses": [

            "redis://10.60.44.57:6371",

            "redis://10.60.44.57:6372",

            "redis://10.60.44.57:6373"

        ],

        "password""123456",

        "pingConnectionInterval"2000

    },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

    "transportMode""NIO"

}

(2)不包含密码的配置

{

    "clusterServersConfig": {

        "readMode""MASTER",

        "nodeAddresses": [

            "redis://10.60.44.57:6371",

            "redis://10.60.44.57:6372",

            "redis://10.60.44.57:6373"

        ].

        "pingConnectionInterval"2000

    },

    "codec": {

        "class""com.fingard.luna.framework.cache.redis.component.ExtendJsonJacksonCodec"

    },

    "transportMode""NIO"

}

为了方便修改,以上是展开的配置,但是配置在apollo的时候需要压缩一下,可以搜索任意的在线JSON格式化网站进行压缩

redis 5.0.x 部署_第4张图片

你可能感兴趣的:(redis,数据库,缓存)