redis高可用方案主要有:主从复制、哨兵模式、集群
下面将分别介绍这三种高可用方案。
搭建环境:
redis版本:redis-5.0.4
服务器环境:centos7
主从复制
Redis主从结构如下图所示,主节点(master)负责读写,从节点(slave)负责读
服务器
192.168.25.129(主)
192.168.25.133(从)
192.168.25.134(从)
搭建步骤
安装Redis(三台虚拟机)
$ yum -y install gcc $ yum -y install gcc-c++
$ wget http://download.redis.io/releases/redis-5.0.4.tar.gz
$ tar -zvxf redis-5.0.4.tar.gz
$ cd redis-5.0.4
$ make
修改配置文件redis.conf
# 服务器端口号,主从分别修改为7001 7002 7003
port 7001
# 使得Redis可以跨网络访问
bind 0.0.0.0
# 配置reids的密码 (可选)
requirepass "111111"
# 下面两个配置只需要配置从节点(slave)
# 配置主服务器地址、端口号
replicaof 192.168.25.129 7001
# 主服务器密码 (可选)
masterauth "111111"
分别启动这三个Redis服务
$ ./src/redis-server redis.conf
使用redis-cli工具连接redis服务查看主从节点是否搭建成功
./src/redis-cli -h <主机名> -p <端口号>
$ ./src/redis-cli -h 192.168.25.129 -p 7001
$ info replication
可以看到主从复制搭建成功
哨兵模式
主从模式有个弊端,会存在单点问题,一单主服务挂了,整个服务就无法正常运行。redis提供了另一种模式,哨兵模式,哨兵会实时监控master节点的状态,当master不可用时会从slave节点中选出一个作为新的master,并修改其他节点的配置指向到新的master。
搭建步骤
服务器
192.168.23.132
按上面的步骤下载安装Redis
服务器资源有限,在这台集群上搭建一个伪集群,将sentinel.conf文件复制两份为sentinel2.conf、sentinel3.conf,并分别修改配置
# 三个配置文件分别配置不同的端口号
port <端口号>
# 设置为后台启动
daemonize yes
# 主节点的名称(可以自定义,与后面的配置保持一致即可)
# 主机地址
# 端口号
# 数量(2代表只有两个或两个以上的哨兵认为主服务器不可用的时候,才会进行failover操作)
sentinel monitor mymaster 192.168.25.129 7001 2
# 多长时间没有响应认为主观下线(SDOWN)
sentinel down-after-milliseconds mymaster 60000
# 表示如果15秒后,mysater仍没活过来,则启动failover,从剩下从节点序曲新的主节点
sentinel failover-timeout mymaster 15000
# 指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长
sentinel parallel-syncs mymaster 1
启动三个sentinel
./src/redis-sentinel sentinel.conf
./src/redis-sentinel sentinel2.conf
./src/redis-sentinel sentinel3.conf
可以看到服务启动好了
如下图可以看到7002变成了master
集群
下载安装Redis(见主从复制模式的搭建步骤)。
创建6个文件夹放置Redis的配置文件,如下所示:
配置文件内容:
port 1001 # 端口,每个配置文件不同1001-1006
cluster-enabled yes # 启用集群模式
cluster-config-file nodes.conf #节点配置文件
cluster-node-timeout 5000 # 超时时间
appendonly yes # 打开aof持久化
daemonize yes # 后台运行
protected-mode no # 非保护模式
pidfile /var/run/redis_1001.pid # 根据端口修改
启动6个Redis节点
./src/redis-server /root/soft/redis-cluster/1001/redis.conf
./src/redis-server /root/soft/redis-cluster/1002/redis.conf
./src/redis-server /root/soft/redis-cluster/1003/redis.conf
./src/redis-server /root/soft/redis-cluster/1004/redis.conf
./src/redis-server /root/soft/redis-cluster/1005/redis.conf
./src/redis-server /root/soft/redis-cluster/1006/redis.conf
此时启动的6个Redis服务是相互独立运行的,通过以下命令配置集群。
./src/redis-cli --cluster create --cluster-replicas 1 127.0.0.1:1001 127.0.0.1:1002 127.0.0.1:1003 127.0.0.1:1004 127.0.0.1:1005 127.0.0.1:1006
看到如下信息,集群搭建就完成了
可以使用cluster nodes命令查询
至此整篇博客就完成了