Redis集群、一主二从三哨兵的搭建

Redis集群至少需要3个master节点,1个master节点需要对应一个slave节点,所以redis集群至少需要6个节点

至少需要3个maser节点原因:master节点的选举需要大半数的集群master节点同意才能选举成功,如果只有2个master节点,当其中一个挂了,是达不到选举新master的条件的

推荐节点数为奇数的原因:举个例子:3个master节点与4个master节点,同时都有2个master节点宕机,那么都不能进行选举新的master节点,但是3个master节点

  • Redis集群的搭建

首先在自己的服务器上下载Redis

参考文档:
CentOS7(Linux)源码安装Redis - 腾讯云开发者社区-腾讯云

(最后可以先不用设置密码,如果设置了,进入redis时不要忘记输入密码)

环境搭建好了之后,就可以进行对redis单机集群的搭建了,因为是单机上,所以多创建几个redis节点,修改端口号(7001-7006),来充当集群节点

1.我这里都是在/usr/local目录下进行的,创建一个redis-cluster文件夹,为了方便区分创建相对应端口号的文件夹

Redis集群、一主二从三哨兵的搭建_第1张图片

2.将redis中bin目录复制到每个文件夹中

 Redis集群、一主二从三哨兵的搭建_第2张图片

bin目录中上面aof、rdb是持久化文件,在集群搭建成功之前请先删除,nodes-7001.conf是集群搭建成功后自动生成的

3.然后进行对每个端口号里面的redis.conf配置文件进行修改

        port:修改为相对应的端口号

        cluster-enabled:修改为yes(redis服务器在启动时会根据cluster-enabled配置选项是否为yes来决定是否开启服务器的集群模式)

        cluster-config-file:修改为相对应的端口号

        pidfile:修改为相对应的端口号文件(服务器记录守护程序的进程id的文件)

        protected-mode:修改为no(关闭protected-mode模式,此时外部网络可以直接访问;开启protected-mode保护模式后,需配置bind ip或者设置访问密码)

4.修改完配置文件后,启动7001-7006的redis节点:./redis-server redis.conf

这里写了一个sh脚本用于快捷启动多个redis,内容如下

cd 7001/bin 
./redis-server redis.conf
cd ../../


cd 7002/bin
./redis-server redis.conf
cd ../../


cd 7003/bin
./redis-server redis.conf
cd ../../


cd 7004/bin
./redis-server redis.conf
cd ../../


cd 7005/bin
./redis-server redis.conf
cd ../../


cd 7006/bin
./redis-server redis.conf
cd ../../

 别忘了给脚本执行权限

chmod +x start-all.sh

 解读:就是cd切换到不同的端口号目录下,然后使用命令启动redis

5.可以使用 ps aux | grep redis来查看redis是否启动

Redis集群、一主二从三哨兵的搭建_第3张图片

6.以上就是对redis节点的创建,然后切换到redis目录中bin文件下进行集群的搭建

 执行命令:

./redis-cli --cluster create --cluster-replicas 1 110.40.154.201:7001 110.40.154.201:7002 110.40.154.201:7003 110.40.154.201:7004 110.40.154.201:7005 110.40.154.201:7006

中间的1表示比例,这样创建成功后,会默认是一主一从的形式

Redis集群、一主二从三哨兵的搭建_第4张图片

执行完之后,中间会让你输入yes

Redis集群、一主二从三哨兵的搭建_第5张图片

 最后集群搭建成功

如果输入完yes后中间一直是等待,则可能你的端口号没有全部开启,再开启7001-7006的同时也需要将17001-17006开启:redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口,集群总线端口为redis客户端连接的端口 + 10000

redis集群 Waiting for the cluster to join 一直等待_海拉姆的博客-CSDN博客

以上就是对集群搭建的过程,最后可以测试一下,在7001的redis上存储,看是否能在其他节点上获取

  • 一主二从三哨兵搭建

Redis集群、一主二从三哨兵的搭建_第6张图片

 直接在redis的bin目录下进行配置,其中8001是主节点,8002、8003是从节点

redis.conf的修改port、dbfilename、pidfile为对应的端口号

启动三个redis服务

./redis-server redis8001.conf &

可以开启三个客户端分别连接不同的redis

./redis-cli -h 127.0.0.1 -p 8001

 (如果设置了密码,别忘了输入密码: auth 密码)

在8002、8003中输入

slaveof 127.0.0.1 8001   //将8002、8003设置为8001的从库

 回到8001中输入

info replication  //查看主从关系

 Redis集群、一主二从三哨兵的搭建_第7张图片

slaveof no one  //表示断开与主节点的主从关系

 以上就搭建好了一主二从,接下来是三哨兵

也是在redis的bin目录下进行配置

Redis集群、一主二从三哨兵的搭建_第8张图片

 分别修改红框里的文件,redis自带有一个哨兵文件redis-sentinel,然后复制出来三个就好

port 26379   //一次加一 别忘了开端口

protected-mode no

daemonize no

sentinel monitor mymaster 127.0.0.1 8001 2

 哨兵的配置文件可以参考这个博客

Redis学习之哨兵模式配置文件详解_倪家李子的博客-CSDN博客_redis哨兵模式配置文件

 然后分别开启这三个哨兵

./redis-sentinel sentinel1.conf

 到此三哨兵就搭建完毕

最后进行测试

8001正常时:

8001的主从信息:

Redis集群、一主二从三哨兵的搭建_第9张图片

8002的主从信息:

Redis集群、一主二从三哨兵的搭建_第10张图片

8003的主从信息

Redis集群、一主二从三哨兵的搭建_第11张图片

模拟8001宕机

./redis-cli -h 127.0.0.1 -p 8001 shutdown

 8003的主从信息:

Redis集群、一主二从三哨兵的搭建_第12张图片

8002的主从信息:

Redis集群、一主二从三哨兵的搭建_第13张图片

三个哨兵通过选举,将8003选举成为新的master (一下是三个哨兵进行的操作,看不懂。。。)

Redis集群、一主二从三哨兵的搭建_第14张图片

Redis集群、一主二从三哨兵的搭建_第15张图片

Redis集群、一主二从三哨兵的搭建_第16张图片

你可能感兴趣的:(redis)