redis集群介绍与搭建

目录

1.主从模式(master-slave)

1.1 搭建方式

1.2 测试主从模式

1.3 其他配置

1.4 主从模式的缺点

2. sentinel (哨兵)模式

2.1 搭建方式

2.2 测试sentinel模式

2.3 Redis Sentinel 的主要功能

2.4 Redis Sentinel 的工作流程


1.主从模式(master-slave)

1.1 搭建方式

主从模式的搭建和配置,以下面搭建一个 master 与两个 slave 为例
创建一个 master-slave 文件夹 

mkdir master-slave

进入 master-slave 

cd master-slave

创建三个文件夹 redis11, redis12, redis13。其中 redis11 为 master 文件,
redis12/redis13 为 slave 文件夹。准备需要的 redis 执行文件 

mkdir redis11 redis12 redis13

复制 redis-server 到每一个文件夹。 

root@ubuntu:/home/xiaoluo/soft# cp redis-6.0.8/src/redis-server master-slave/redis11
root@ubuntu:/home/xiaoluo/soft# cp redis-6.0.8/src/redis-server master-slave/redis12
root@ubuntu:/home/xiaoluo/soft# cp redis-6.0.8/src/redis-server master-slave/redis13

复制 redis-cli 到 master-slave 文件夹 

root@ubuntu:/home/xiaoluo/soft# cp redis-6.0.8/src/redis-cli master-slave/

在 master 的 redis11 里面添加配置文件redis.conf 

bind 0.0.0.0

port 8001

logfile "8001.log"

dbfilename "dump-8001.rdb"

daemonize yes

rdbcompression yes

在 slave 的 redis12 里面添加配置文件redis.conf

bind 0.0.0.0

port 8002

logfile "8002.log"

dbfilename "dump-8002.rdb"

daemonize yes

rdbcompression yes

slaveof 192.168.74.133 8001   #主机ip 和master端口

在 slave 的 redis12 里面添加配置文件redis.conf

bind 0.0.0.0

port 8003

logfile "8003.log"

dbfilename "dump-8003.rdb"

daemonize yes

rdbcompression yes

slaveof 192.168.74.133 8001   #主机ip 和master端口

创建 start-all.sh 的 shell 脚本文件 

 
#!/bin/bash

cd redis11
./redis-server redis.conf &

cd ..

cd redis12
./redis-server redis.conf &

cd ..

cd redis13
./redis-server redis.conf &

cd ..

执行start-all.sh,查看 redis 启动情况

1.2 测试主从模式

1.3 其他配置

在 redis.conf 中,还有一些关于主从的其他配置,按需配置即可。
首先谈谈我对主从模式的必要性:
主从模式的一个作用是备份数据,这样当一个节点损坏(指不可恢复的硬件损坏)时,数据因为有备份,可以方便恢复。
另一个作用是负载均衡,所有客户端都访问一个节点肯定会影响 Redis 工作效率,有了主从以后,查询操作就可以通过查询从节点来完成。
对主从模式必须的理解(结论已经验证过,可以自行验证):
一个 Master 可以有多个 Slaves
默认配置下,master 节点可以进行读和写,slave 节点只能进行读操作,写操作被禁止
不要修改配置让 slave 节点支持写操作,没有意义,原因一,写入的数据不会被同步到其他节点;原因二,当 master 节点修改同一条数据后,slave 节点的数据会被覆盖掉
slave 节点挂了不影响其他 slave 节点的读和 master 节点的读和写,重新启动后会将数据从 master 节点同步过来
master 节点挂了以后,不影响 slave 节点的读,Redis 将不再提供写服务,master 节点
启动后 Redis 将重新对外提供写服务。
master 节点挂了以后,slave节点不会重新选一个 master 

1.4 主从模式的缺点

master 节点挂了以后,redis 就不能对外提供写服务了,因为剩下的 slave 不能成为master
这个缺点影响是很大的,尤其是对生产环境来说,是一刻都不能停止服务的,所以一般的生产坏境是不会单单只有主从模式的。所以有了下面的 sentinel 模式。 

2. sentinel (哨兵)模式

2.1 搭建方式

在主从模式的基础上面,将端口从 8001 改为 9001,8002 改为 9002,8003 改为 9003 

root@ubuntu:/home/xiaoluo/soft# mkdir sentinel
root@ubuntu:/home/xiaoluo/soft# cd master-slave/
root@ubuntu:/home/xiaoluo/soft/master-slave# cp -r ./* ../sentinel/
root@ubuntu:/home/xiaoluo/soft/master-slave# cd ../sentinel/
root@ubuntu:/home/xiaoluo/soft/sentinel# mv redis11 redis21
root@ubuntu:/home/xiaoluo/soft/sentinel# mv redis12 redis22
root@ubuntu:/home/xiaoluo/soft/sentinel# mv redis13 redis23

复制 redis-sentinel 到 redis21/redis22/redis23 的文件夹中

复制 sentinel.conf 到 redis21/redis22/redis23

root@ubuntu:/home/xiaoluo/soft/sentinel# cp ../redis-6.0.8/src/redis-sentinel ./redis21
root@ubuntu:/home/xiaoluo/soft/sentinel# cp ../redis-6.0.8/src/redis-sentinel ./redis22
root@ubuntu:/home/xiaoluo/soft/sentinel# cp ../redis-6.0.8/src/redis-sentinel ./redis23
root@ubuntu:/home/xiaoluo/soft/sentinel# cp ../redis-6.0.8/sentinel.conf ./redis21
root@ubuntu:/home/xiaoluo/soft/sentinel# cp ../redis-6.0.8/sentinel.conf ./redis22
root@ubuntu:/home/xiaoluo/soft/sentinel# cp ../redis-6.0.8/sentinel.conf ./redis23

修改 sentinel.conf 文件 

三个sentinel.conf都需要修改为监控master节点

修改start-all.sh,除了运行master和slave节点还需要运行三个sentinel,运行start-all.s

#!/bin/bash

cd redis21
./redis-server redis.conf &

cd ..
cd redis22
./redis-server redis.conf &

cd ..
cd redis23
./redis-server redis.conf &

cd ..
cd redis21

./redis-sentinel sentinel.conf &

cd ..
cd redis22

./redis-sentinel sentinel.conf &

cd ..
cd redis23

./redis-sentinel sentinel.conf &

2.2 测试sentinel模式

第一次运行,9001是master节点,我们kill掉9001端口的服务 

 

 可以看到,此时master节点已经切换到9002端口 。

2.3 Redis Sentinel 的主要功能

Sentinel 的主要功能包括主节点存活检测、主从运行情况检测、自动故障转移(failover)、主 从切换。Redis 的 Sentinel 最小配置是一主一从。 Redis 的 Sentinel 系统可以用来管理多个 Redis 服务器,该系统可以执行以下四个任务:

监控
Sentinel 会不断的检查主服务器和从服务器是否正常运行。
通知
当被监控的某个 Redis 服务器出现问题,Sentinel 通过 API 脚本向管理员或者其他的应用程序发送通知。
自动故障转移
当主节点不能正常工作时,Sentinel 会开始一次自动的故障转移操作,它会将与失效主节点 是主从关系的其中一个从节点升级为新的主节点, 并且将其他的从节点指向新的主节点。
配置提供者
在 Redis Sentinel 模式下,客户端应用在初始化时连接的是 Sentinel 节点集合,从中获取主节点的信息。

2.4 Redis Sentinel 的工作流程

 Sentinel 负责监控集群中的所有主、从 Redis,当发现主故障时,Sentinel 会在所有的从中选 一个成为新的主。并且会把其余的从变为新主的从。同时那台有问题的旧主也会变为新主的 从,也就是说当旧的主即使恢复时,并不会恢复原来的主身份,而是作为新主的一个从。
在 Redis 高可用架构中,Sentinel 往往不是只有一个,而是有 3 个或者以上。目的是为了让 其更加可靠,毕竟主和从切换角色这个过程还是蛮复杂的。
sentinel 模式基本可以满足一般生产的需求,具备高可用性。但是当数据量过大到一 台服务器存放不下的情况时,主从模式或 sentinel 模式就不能满足需求了,这个时候需要 对存储的数据进行分片,将数据存储到多个 Redis 实例中,就是下面要讲的。

 

猜你喜欢

转载自blog.csdn.net/weixin_44843859/article/details/109209861