redis 集群搭建

2020/11/15 Linux redis

redis 集群搭建

高可用方案

一般常用的有两种高可用方案:

  • redis 哨兵
  • redis 集群

在 redis 早期版本中,只能使用哨兵模式,但这种模式下,需要多一个守护对资源进行监控,并且在 master 断掉的时候切换过程比较慢。

在 5.0 之后,一般推荐使用 redis 集群方案实现高可用。

操作环境

使用了三台机器,以三主三从的方案进行部署,在一台机器上部署一主一从,其中 8001 是主节点,8002 是从节点。

  • redis01: 192.168.0.2
  • redis02: 192.168.0.3
  • redis03: 192.168.0.4

虽然这三台机器都是 Ubuntu Server 18.04,但是内核版本都不相同,所以都是单独执行的编译过程。

决定不使用系统空间,而使用 /opt/ 的上 TB 空间。

所有 redis 相关的数据都在 /opt/redis/ 下面:

bin/	二进制程序
conf/	配置文件
data/	运行产生文件
log/	日志文件
redis-6.0.7/	源代码

部署过程

主要是配置文件的处理:

主节点配置以下参数:

  • daemonize yes
  • port 8001
  • dir /opt/redis/data/master
  • cluster-enabled yes
  • cluster-config-file /opt/redis/conf/nodes-8001.conf
  • cluster-node-timeout 15000
  • #bind 127.0.0.1
  • protected-mode no
  • appendonly yes
  • requirepass abcdefg
  • masterauth abcdefg
  • logfile /opt/redis/log/redis-master-8081.log

从节点配置以下参数:

  • daemonize yes
  • port 8002
  • dir /opt/redis/data/master
  • cluster-enabled yes
  • cluster-config-file /opt/redis/conf/nodes-8002.conf
  • cluster-node-timeout 15000
  • #bind 127.0.0.1
  • protected-mode no
  • appendonly yes
  • requirepass abcdefg
  • masterauth abcdefg
  • logfile /opt/redis/log/redis-master-8082.log

其实在此时,还并没有主从的概念,只是为了方便后面的操作。

在 redis 6.x 之后,可以直接使用 redis-cli 添加集群,不用再手动的一个一个的配置。

/opt/redis/bin/redis-cli -a abcdefg --cluster create --cluster-replicas 1 192.168.0.2:8001 192.168.0.2:8002 192.168.0.3:8001 192.168.0.3:8002 192.168.0.4:8001 192.168.0.4:8002

根据提示,直接确认 yes 即可。

在这里,我偷了懒,使用了 -a 参数,在之后的实践中,命令行内使用 –askpass 进行权限识别。

使用方法

使用三方工具,直接连接以下配置即可,默认密码为:abcdefg。

  • -h 192.168.0.2 -p 8001
  • -h 192.168.0.2 -p 8002
  • -h 192.168.0.3 -p 8001
  • -h 192.168.0.3 -p 8002
  • -h 192.168.0.4 -p 8001
  • -h 192.168.0.4 -p 8002

但是 redis 集群的高可用只是保证数据的高可用,而不是无视连接错误的高可用,也就是说,单节点挂了,它的数据会通过从节点拷贝到其他的主节点上,但是直接连接服务会无法连接。这需要更高一层的 keepalivd 或者 nginx 来实现。

高可用测试

参考资料

Search

    Table of Contents