本文重点讲述如何升级redis架构的部署,采用云服务器进行模拟,使用redis源码包进行安装,redis4.0

单机

修改redis.conf文件bind 0.0.0.0 #设置任意ip访问requirepass pwd #设置密码daemonize yes #后台启动

注意开放安全组规则端口即可

主从复制

主从复制架构仅仅用来进行数据的冗余备份,从节点仅仅用来同步数据。

缺点:无法进行故障的自动转移,当master节点宕机后,salve节点无法提供服务

搭建主从架构

主机节点同单击部署无需修改

修改从节点

slaveof <master ip> <master port>bind 0.0.0.0requirepass pwdmasterauth master_pwdport 

通过在从节点修改数据验证部署成功

哨兵架构

单机和主从架构的redis只要服务主机宕机就无法继续提供服务,而采用哨兵机制的redis架构具有高可用的特性。哨兵机制通过一个或多个sentinel实例组成sentinel系统可以监视任意多个主服务器,以及这些主服务器所属下的所有服务器,如果被监视的master被哨兵服务认为下线,将从该master下的salve中选举出新的master。即使下线的master重新上线,也只能作为新master的从节点。

缺陷:仍然是一个节点提供服务,单节点并发压力大,内存和磁盘较大限制。

搭建哨兵架构,一主二从三哨兵

在主从架构的基础上,启动哨兵服务,需要redis-sentinel服务

cp /root/reids-4.0.10/src/redis-sentinel /usr/redis/bin/mkdir /root/sentinelvim /root/sentinel/sentinel.confsentinel monitor master_name master_ip master_port sentinel_conutsentinel auth-pass master_name pwdbind 0.0.0.0port `哨兵选举,至少半数哨兵以上认为master节点下线才认为该服务器下线,sentinel_count为半数`cp /root/sentinel/sentinel.conf /root/sentinel/sentinel1.confcp /root/sentinel/sentinel.conf /root/sentinel/sentinel2.conf修改端口即可/usr/redis/bin/redis-sentinel /root/sentinel/sentinel.conf/usr/redis/bin/redis-sentinel /root/sentinel/sentinel1.conf/usr/redis/bin/redis-sentinel /root/sentinel/sentinel2.conf

成功启动:

通过kill master 节点,我们发现哨兵进行重新选举了master节点。原有的master节点成为新master节点的从节点。

从springboot连接哨兵架构的redis与原来的单机和主从不同,连接的是redis的哨兵服务

参考博客:https://blog.csdn.net/qq_34125349/article/details/89175908

集群部署

集群内置16383个哈希槽(slot),进行集群分布时将哈希槽均分在主节点上。当请求传递过来时,将key值通过crc16算法取得的结果取模16383得到值,通过这个值命中的到对应的主节点。如此各个主节点都分担了一部分请求,缓解单个节点的负载和磁盘压力。

集群同样采用投票机制进行选取,投票的单位为主节点,因此基础配置为3主3从。

集群的启动需要安装ruby环境。

yum install -y ruby rubygemsgem install redis-xxx.gem#将ruby工具从源码目录中复制到bin中cp /root/redis-4.10.0/src/redis-trib.b /usr/redis/bin/

创建多个redis.conf启动六个节点,修改源码中的redis.conf文件,需要注意的是此方法创建不能预设密码

bind 0.0.0.0daemonize yescluster-enabled yesappendonly yescluster-node-timeout 150000

将文件复制六个,进行定制化配置即可,本文是复制到root目录的六个文件夹,7010…

cluster-config-file 文件名不同appendonlyfilename 文件名不同port 不同

启动六个配置,查看得到

/usr/redis/bin/redis-server /root/7010/redis.conf..../usr/redis/bin/redis-server /root/7015/redis.conf

创建集群,端口需要额外开放相应主机端口号加10000的端口

/usr/redis/bin/redis-trib.rb create --replicas 1 47.101.33.159:7010 47.101.33.159:7011 47.101.33.159:7012 47.101.33.159:7013 47.101.33.159:7014 47.101.33.159:7015

输入接受即可

此时即部署成功。在springboot连接

启动测试,观察日志得

大概找了几个小时,只找到一种有效方法,修改对应的cluster-config-file文件,如果在redis配置的dir值为./,那么配置文件就在redis-server的同级目录中,查看对应文件,修改内网ip为公网ip,重启redis即可。

集群成功后即可设置密码,可直接修改redis.conf文件进行修改,需要重启。连接对应客户端

config set masterauth pwdconfig setrequirepass pwdconfig rewrite#对应redis.conf文件末尾即添加密码

application.yml添加password项填写密码即可连接成功。