本文重点讲述如何升级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.0
requirepass pwd
masterauth master_pwd
port
通过在从节点修改数据验证部署成功
单机和主从架构的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/sentinel
vim /root/sentinel/sentinel.conf
sentinel monitor master_name master_ip master_port sentinel_conut
sentinel auth-pass master_name pwd
bind 0.0.0.0
port
`哨兵选举,至少半数哨兵以上认为master节点下线才认为该服务器下线,sentinel_count为半数`
cp /root/sentinel/sentinel.conf /root/sentinel/sentinel1.conf
cp /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 rubygems
gem 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.0
daemonize yes
cluster-enabled yes
appendonly yes
cluster-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
输入接受即可
启动测试,观察日志得
大概找了几个小时,只找到一种有效方法,修改对应的cluster-config-file文件,如果在redis配置的dir值为./,那么配置文件就在redis-server的同级目录中,查看对应文件,修改内网ip为公网ip,重启redis即可。
集群成功后即可设置密码,可直接修改redis.conf文件进行修改,需要重启。连接对应客户端
config set masterauth pwd
config setrequirepass pwd
config rewrite
#对应redis.conf文件末尾即添加密码
application.yml添加password项填写密码即可连接成功。