redis单机、主从、哨兵、集群部署

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

单机

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

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

主从复制

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

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

redis单机、主从、哨兵、集群部署_第1张图片

搭建主从架构

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

修改从节点

slaveof <master ip> <master port>
bind 0.0.0.0
requirepass pwd
masterauth master_pwd
port 

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

image-20220704220433913

哨兵架构

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

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

redis单机、主从、哨兵、集群部署_第2张图片

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

在主从架构的基础上,启动哨兵服务,需要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

成功启动:

redis单机、主从、哨兵、集群部署_第3张图片

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

redis单机、主从、哨兵、集群部署_第4张图片

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

redis单机、主从、哨兵、集群部署_第5张图片

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

集群部署

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

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

redis单机、主从、哨兵、集群部署_第6张图片

集群的启动需要安装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

image-20220705095012804

创建集群,端口需要额外开放相应主机端口号加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

redis单机、主从、哨兵、集群部署_第7张图片

输入接受即可

redis单机、主从、哨兵、集群部署_第8张图片

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

启动测试,观察日志得

redis单机、主从、哨兵、集群部署_第9张图片

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

image-20220705111747448

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

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

image-20220705113335134

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

你可能感兴趣的:(工具,redis,服务器,数据库)