Redis高可用集群部署

前言

《Redis哨兵架构搭建》中我们说了怎么搭建哨兵架构,既然有了哨兵架构,为什么还要提供Redis高可用集群模式呢?那就的从哨兵模式的缺点开始说起;

在redis3.0以前的版本要实现集群一般都是借助哨兵Sentinel工具来监控master节点的状态,如果master节点异常,则会主动切换,将某一台slave作为master,哨兵配置略微复杂,并且在性能和高可用方面都表现一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点是对外提供服务的,没有办法支持很高的并发量,还有单个节点的内存也不适合设置过大,否则会导致持久化文件太大,影像数据恢复或主从数据同步的效率。

基于以上哨兵模式的种种的缺点,所以Redis又给我们提供了高可用集群模式。

高可用集群模式

Redis高可用集群架构图

redis集群是一个有多个主从节点群组成的分布式服务器群,它具有复制、高可用和分片特性。Redis集群不需要Sentinel哨兵也能完成节点的移除和故障的转移功能。只是在启动的时候需要将每个节点设置成集群模式即可,这种集群模式没有中心节点,可以水平扩展,按照官方文档描述可以扩展到上万个节点(官方推荐不超过1000个节点)。redis集群的性能和高可用性都优于之前版本的哨兵模式,且集群配置也非常简单

Redis高可用集群搭建

redis集群需要至少三个master节点,我们这里搭建三个master节点,并且每个master在搭建一个slave节点,总共6个redis节点,这里用三台机器部署6个redis实例,每台机器一主一从。

最终我们搭建的高可用架构图如下:

Redis高可用三主三从结构

第一步

在第一台机器的/home/redis/下创建文件夹cluster,然后在其下面分别创建2个文件夹如下:

1
2
mkdir -p /home/redis/cluster
mkdir 8001 8004

第二步

把之前的redis.conf配置文件copy到8001下,修改以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
daemonize yes
port 8001 #(分别对每个机器的端口号进行设置)
pidfile /var/run/redis_8001.pid #把pid进程写入pidfile配置的文件
dir /home/redis/cluster/8001/ # (指定数据文件存放位置,必须要指定不同的目录位置,不然会丢数据)
cluster-enabled yes # 启动集群模式
cluster-config-file nodes-8001.config # (集群节点信息文件,这里800X最好和port对应)
cluster-node-timeout 10000
# bind 127.0.0.1(bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可)
protected-mode no # 关闭保护模式
# 如果要设置密码需要增加以下配置
requirepass 123456 # 设置redis访问密码
masterauth 123456 # 设置集群节点间访问密码,跟上面一致

第三步

把修改后的配置文件,copy到8004,修改第二步中的2,3,4,6行的端口号。

第四步

另外两台机器也需要做上面几步操作,第二台机器用8002和8005,第三台机器用8003和8006

第五步

分别启动6个redis实例,然后检查是否启动成功

1
ps -ef | grep redis

第六步

redis-cli创建整个redis集群

1
/home/redis/build/bin/redis-cli -a mst --cluster create --cluster-replicas 1 192.168.31.16:8001 192.168.31.224:8002 192.168.31.80:8003 192.168.31.16:8004 192.168.31.224:8005 192.168.31.80 8006

上面命令中的 1 代表每个创建的主服务器节点创建一个从服务器节点

注意:

执行上述命令需要先确认三台机器之间的redis实例能不能互相访问,如果不能访问需要我们把防火墙关闭,如果不关闭防火墙,则需要打开redis服务端口和集群节点gossip通信端口16379(默认是在redis端口上加10000)

1
2
systemctl stop firewalld # 临时关闭防火墙
systemctl disable firewalld # 禁止开机启动

第七步

验证集群是否成功

  1. 连接任意一个客户端即可:./redis-cli -c -h -p (-a访问服务端密码,-c表示集群模式,-h表示指定ip地址,-p表示指定端口号),如:

    1
    /home/redis/build/bin/redis-cli -a mst -c -h 192.168.31.16 -p 800*
  2. 进行验证:

    1
    2
    cluster info #查看集群信息
    cluster nodes # 查看节点列表
  3. 进行数据操作验证

  4. 关闭集群规则需要逐个进行关闭,使用命令

    1
    /home/redis/build/bin/redis-cli -a mst -c -h 192.168.31.16 -p 800* shutdown
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~

支付宝
微信