[步骤] 搭建 Redis 数据库集群

软件准备:

在 Redis 的官网上下载软件 Redis:

https://redis.io/

在 rubygems 的官网上下载软件 rubygems

https://rubygems.org

正文:

步骤目录:
步骤一:规划拓扑
1.1 服务器列表
1.2 服务器列表简介

步骤二:系统环境要求

步骤三:所有数据库服务器安装 Redis 数据库
3.1 安装 Redis 数据库的相关依赖包
3.2 安装 Redis 数据库
3.2.1 解压安装包
3.2.2 进入安装包目录
3.2.3 编译安装包
3.2.4 安装软件包
3.2.5 进入配置目录
3.2.6 配置软件包

步骤四:搭建 Redis 数据库集群
4.1 修改所有服务器上的 Redis 数据库配置文件
4.2 重启所有服务器上的 Redis 数据库
4.2.1 关闭 Redis 数据库
4.2.2 开启 Redis 数据库
4.3 查看目前的集群信息
4.3.1 进入数据库
4.3.2 查看数据库是否可用
4.3.3 查看集群信息
4.4 部署 Redis 集群环境
4.4.1 部署 ruby 脚本运行环境
4.4.1.1 安装 ruby
4.4.1.2 升级 ruby
4.4.1.2.1 解压 ruby 安装包
4.4.1.2.2 进入 ruby 安装包目录
4.4.1.2.3 升级 ruby
4.4.1.3 安装 Redis 模块
4.4.2 部署 Redis 集群文件
4.4.2.1 创建 Redis 集群文件的目录
4.4.2.2 复制 Redis 集群文件
4.4.2.3 给 Redis 集群文件添加执行权限
4.5 创建 Redis 集群
4.6 查看集群中主机状态信息的方法
4.6.1 方法一
4.6.1.1 进入数据库
4.6.1.2 查看集群整体信息
4.6.1.3 查看集群主从关系
4.6.1.4 退出数据库
4.6.2 方法二
4.6.2.1 查看集群整体信息
4.6.2.2 查看集群主从关系

步骤五:Redis 集群创建失败的解决办法
5.1 关闭所有 Redis服务器的 Redis 服务
5.2 删除所有原来的 Redis 数据
5.3 重启 Redis 数据库
5.4 按照前面的步骤重新执行创建集群

步骤六:测试 Redis 集群
6.1 数据同步测试
6.1.1 进入数据库
6.1.2 确认现在的 Redis 数据库都是空的
6.1.3 在主 Redis 数据库上插入数据
6.1.4 查看刚插入的数据
6.2 高可用测试
6.2.1 模拟此时主库宕机后,对应的从库会自动升级为主库但需要 5 分钟的时间
6.2.2 等待 5 分钟后查看集群主从关系
6.2.3 主库恢复后会成为新主库的从库
6.2.4 再次查看集群主从关系

具体的操作步骤:
步骤一:规划拓扑
1.1 服务器列表
redis1   IP 地址:192.168.1.51   端口号:1051
redis2   IP 地址:192.168.1.52   端口号:1052
redis3   IP 地址:192.168.1.53   端口号:1053
redis4   IP 地址:192.168.1.54   端口号:1054
redis5   IP 地址:192.168.1.55   端口号:1055
redis6   IP 地址:192.168.1.56   端口号:1056

1.2 服务器列表简介
(1)总共 6 个数据库,3 个为主库,3 个为从库
(2)如果 1 个主库宕掉则它的从库自动成为主库
(3)宕掉的主库修复好后会成为新主库的从库
(4)如果半数或者半数以上的主库宕掉,集群则无法使用

(注意: Redis 集群最少要有 3 台主库)

步骤二:系统环境要求
(1)所有服务器的系统都需要是 CentOS 7.X 版本
(2)所有服务器都要关闭防火墙
(3)所有服务器都要关闭 selinux
(4)所有服务器系统都要配置好可用的 yum 源(最好是软件数量最多的官方版本)
(5)需要按照拓扑图给对应的服务器配置好 IP 和主机名
(6)所有服务器都要可以相互 ping 通自己和对方的 IP 和主机名
(7)至少要有一台服务器可以访问外网

步骤三:所有数据库服务器安装 Redis 数据库
3.1 安装 Redis 数据库的相关依赖包
(分别在 redis1、redis2、redis3、redis4、redis5 和 redis16 上执行以下步骤)
# yum -y install gcc gcc-c++ make

3.2 安装 Redis 数据库
3.2.1 解压安装包
(分别在 redis1、redis2、redis3、redis4、redis5 和 redis16 上执行以下步骤)
# tar -zxf redis-5.0.5.tar.gz

3.2.2 进入安装包目录
(分别在 redis1、redis2、redis3、redis4、redis5 和 redis16 上执行以下步骤)
# cd redis-5.0.5/

3.2.3 编译安装包
(分别在 redis1、redis2、redis3、redis4、redis5 和 redis16 上执行以下步骤)
# make

3.2.4 安装软件包
(分别在 redis1、redis2、redis3、redis4、redis5 和 redis16 上执行以下步骤)
# make install

3.2.5 进入配置目录
(分别在 redis1、redis2、redis3、redis4、redis5 和 redis16 上执行以下步骤)
# cd utils/

3.2.6 配置软件包
(分别在 redis1、redis2、redis3、redis4、redis5 和 redis16 上执行以下步骤)
# ./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379 #Redis 使用的端口号
Config file    : /etc/redis/6379.conf #Redis 的配置文件目录
Log file       : /var/log/redis_6379.log #Redis 的日志目录
Data dir       : /var/lib/redis/6379 #Redis 的数据库目录
Executable     : /usr/local/bin/redis-server #Redis 启动程序的目录
Cli Executable : /usr/local/bin/redis-cli #Redis 命令行的连接工具
Is this ok? Then press ENTER to go on or Ctrl-C to abort. #Redis 回车完成配置
Copied /tmp/6379.conf => /etc/init.d/redis_6379 #Redis 服务启动脚本
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful! #Redis 安装成功

步骤四:搭建 Redis 数据库集群
4.1 修改所有服务器上的 Redis 数据库配置文件
(只在 redis1 上执行以下步骤)
# vim /etc/redis/6379.conf
将部分内容修改如下:
......
#bind 127.0.0.1 #将这一行是限制 Redis 只能通过本地登录,将他注释掉这样才能通过其他的 IP 地址登录
bind 192.168.1.51 #设置服务使用的 IP,要本服务器上使用的 IP 地址一致
......
port 1051 #集群中每个主机的端口号不能一样
......
daemonize yes #以守护进程的方式运行此程序
......
pidfile /var/run/redis_1051.pid
......
cluster-enabled yes #启用集群,前提是以守护进程的方式运行
......
cluster-config-file nodes-1051.conf #存储集群信息的配置文件,自动生成,集群中每个主机的不允许相同
......
cluster-node-timeout 5000 #集群各个节点通信的超时时间
......

(只在 redis2 上执行以下步骤)
# vim /etc/redis/6379.conf
将部分内容修改如下:
......
#bind 127.0.0.1 #将这一行是限制 Redis 只能通过本地登录,将他注释掉这样才能通过其他的 IP 地址登录
bind 192.168.1.52 #设置服务使用的 IP,要本服务器上使用的 IP 地址一致
......
port 1052 #集群中每个主机的端口号不能一样
......
daemonize yes #以守护进程的方式运行此程序
......
pidfile /var/run/redis_1052.pid
......
cluster-enabled yes #启用集群,前提是以守护进程的方式运行
......
cluster-config-file nodes-1052.conf #存储集群信息的配置文件,自动生成,集群中每个主机的不允许相同
......
cluster-node-timeout 5000 #集群各个节点通信的超时时间
......

(只在 redis3 上执行以下步骤)
# vim /etc/redis/6379.conf
将部分内容修改如下:
......
#bind 127.0.0.1 #将这一行是限制 Redis 只能通过本地登录,将他注释掉这样才能通过其他的 IP 地址登录
bind 192.168.1.53 #设置服务使用的 IP,要本服务器上使用的 IP 地址一致
......
port 1053 #集群中每个主机的端口号不能一样
......
daemonize yes #以守护进程的方式运行此程序
......
pidfile /var/run/redis_1053.pid
......
cluster-enabled yes #启用集群,前提是以守护进程的方式运行
......
cluster-config-file nodes-1053.conf #存储集群信息的配置文件,自动生成,集群中每个主机的不允许相同
......
cluster-node-timeout 5000 #集群各个节点通信的超时时间
......

(只在 redis4 上执行以下步骤)
# vim /etc/redis/6379.conf
将部分内容修改如下:
......
#bind 127.0.0.1 #将这一行是限制 Redis 只能通过本地登录,将他注释掉这样才能通过其他的 IP 地址登录
bind 192.168.1.54 #设置服务使用的 IP,要本服务器上使用的 IP 地址一致
......
port 1054 #集群中每个主机的端口号不能一样
......
daemonize yes #以守护进程的方式运行此程序
......
pidfile /var/run/redis_1054.pid
......
cluster-enabled yes #启用集群,前提是以守护进程的方式运行
......
cluster-config-file nodes-1054.conf #存储集群信息的配置文件,自动生成,集群中每个主机的不允许相同
......
cluster-node-timeout 5000 #集群各个节点通信的超时时间
......

(只在 redis5 上执行以下步骤)
# vim /etc/redis/6379.conf
将部分内容修改如下:
......
#bind 127.0.0.1 #将这一行是限制 Redis 只能通过本地登录,将他注释掉这样才能通过其他的 IP 地址登录
bind 192.168.1.55 #设置服务使用的 IP,要本服务器上使用的 IP 地址一致
......
port 1055 #集群中每个主机的端口号不能一样
......
daemonize yes #以守护进程的方式运行此程序
......
pidfile /var/run/redis_1055.pid
......
cluster-enabled yes #启用集群,前提是以守护进程的方式运行
......
cluster-config-file nodes-1055.conf #存储集群信息的配置文件,自动生成,集群中每个主机的不允许相同
......
cluster-node-timeout 5000 #集群各个节点通信的超时时间
......

(只在 redis6 上执行以下步骤)
# vim /etc/redis/6379.conf
将部分内容修改如下:
......
#bind 127.0.0.1 #将这一行是限制 Redis 只能通过本地登录,将他注释掉这样才能通过其他的 IP 地址登录
bind 192.168.1.56 #设置服务使用的 IP,要本服务器上使用的 IP 地址一致
......
port 1056 #集群中每个主机的端口号不能一样
......
daemonize yes #以守护进程的方式运行此程序
......
pidfile /var/run/redis_1056.pid
......
cluster-enabled yes #启用集群,前提是以守护进程的方式运行
......
cluster-config-file nodes-1056.conf #存储集群信息的配置文件,自动生成,集群中每个主机的不允许相同
......
cluster-node-timeout 5000 #集群各个节点通信的超时时间
......

4.2 重启所有服务器上的 Redis 数据库
4.2.1 关闭 Redis 数据库
(分别在 redis1、redis2、redis3、redis4、redis5 和 redis16 上执行以下步骤)
# redis-cli shutdown

4.2.2 开启 Redis 数据库
(分别在 redis1、redis2、redis3、redis4、redis5 和 redis16 上执行以下步骤)
# /etc/init.d/redis_6379 start

4.3 查看目前的集群信息
(此步骤可以在任意服务器上操作,这里以在 redis1 上操作为例)
4.3.1 进入数据库
(只在 redis1 上执行以下步骤)
# redis-cli -h 192.168.1.51 -p 1051

4.3.2 查看数据库是否可用
(只在 redis1 上执行以下步骤)
192.168.1.51:1051> ping
PONG

4.3.3 查看集群信息
(只在 redis1 上执行以下步骤)
192.168.1.51:1051> cluster info
cluster_state:fail
cluster_slots_assigned:0
cluster_slots_ok:0
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:1
cluster_size:0
cluster_current_epoch:0
cluster_my_epoch:0
cluster_stats_messages_sent:0
cluster_stats_messages_received:0

4.4 部署 Redis 集群环境
4.4.1 部署 ruby 脚本运行环境
(此步骤可以在任意服务器上操作,但是这台服务器必须要可以访问外网,这里以在 redisA 上操作为例)

4.4.1.1 安装 ruby
(只在 redis1 上执行以下步骤)
# yum -y install ruby rubygems ruby-devel

4.4.1.2 升级 ruby
4.4.1.2.1 解压 ruby 安装包
(只在 redis1 上执行以下步骤)
# tar -xvf rubygems-3.0.6.tgz 

4.4.1.2.2 进入 ruby 安装包目录
(只在 redis1 上执行以下步骤)
# cd rubygems-3.0.6

4.4.1.2.3 升级 ruby
(只在 redis1 上执行以下步骤)
# ruby setup.rb

4.4.1.3 安装 Redis 模块
(只在 redis1 上执行以下步骤)
# gem install redis -v 3.3.5
Fetching: redis-3.3.5.gem (100%)
Successfully installed redis-3.3.5
Parsing documentation for redis-3.3.5
Installing ri documentation for redis-3.3.5
1 gem installed

4.4.2 部署 Redis 集群文件
4.4.2.1 创建 Redis 集群文件的目录
(只在 redis1 上执行以下步骤)
# mkdir /root/bin

4.4.2.2 复制 Redis 集群文件
(只在 redis1 上执行以下步骤)
# cp redis-5.0.5/src/redis-trib.rb /root/bin

4.4.2.3 给 Redis 集群文件添加执行权限
(只在 redis1 上执行以下步骤)
# chmod +x /root/bin/redis-trib.rb

4.5 创建 Redis 集群
(只在 redis1 上执行以下步骤)
# redis-cli --cluster create 192.168.1.51:1051 192.168.1.52:1052 192.168.1.53:1053 192.168.1.54:1054 192.168.1.55:1055 192.168.1.56:1056 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.1.55:1055 to 192.168.1.51:1051
Adding replica 192.168.1.56:1056 to 192.168.1.52:1052
Adding replica 192.168.1.54:1054 to 192.168.1.53:1053
M: 5d030ec05f9de86ebeedc1b035b2122addaa61d8 192.168.1.51:1051
   slots:[0-5460] (5461 slots) master
M: 7477c04d8ebf9d498ed5586d5f4e6d513fdb3c30 192.168.1.52:1052
   slots:[5461-10922] (5462 slots) master
M: c4f884e7e4ce6adb4f5bc4f6eb398680beb26089 192.168.1.53:1053
   slots:[10923-16383] (5461 slots) master
S: a5cddda6c1bc7c6d3397e17e1ba29571bb7a1657 192.168.1.54:1054
   replicates c4f884e7e4ce6adb4f5bc4f6eb398680beb26089
S: eac6a0586ad00375bea9aa352951c784be57e9ad 192.168.1.55:1055
   replicates 5d030ec05f9de86ebeedc1b035b2122addaa61d8
S: fd973bbcc376bfccf5888ba06dba97feb9ef1273 192.168.1.56:1056
   replicates 7477c04d8ebf9d498ed5586d5f4e6d513fdb3c30
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
...
>>> Performing Cluster Check (using node 192.168.1.51:1051)
M: 5d030ec05f9de86ebeedc1b035b2122addaa61d8 192.168.1.51:1051
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: eac6a0586ad00375bea9aa352951c784be57e9ad 192.168.1.55:1055
   slots: (0 slots) slave
   replicates 5d030ec05f9de86ebeedc1b035b2122addaa61d8
M: c4f884e7e4ce6adb4f5bc4f6eb398680beb26089 192.168.1.53:1053
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: 7477c04d8ebf9d498ed5586d5f4e6d513fdb3c30 192.168.1.52:1052
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: fd973bbcc376bfccf5888ba06dba97feb9ef1273 192.168.1.56:1056
   slots: (0 slots) slave
   replicates 7477c04d8ebf9d498ed5586d5f4e6d513fdb3c30
S: a5cddda6c1bc7c6d3397e17e1ba29571bb7a1657 192.168.1.54:1054
   slots: (0 slots) slave
   replicates c4f884e7e4ce6adb4f5bc4f6eb398680beb26089
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

4.6 查看集群中主机状态信息的方法
4.6.1 方法一
4.6.1.1 进入数据库
(只在 redis1 上执行以下步骤)
# redis-cli -h 192.168.1.51 -p 1051

4.6.1.2 查看集群整体信息
(只在 redis1 上执行以下步骤)
192.168.1.51:1051> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:30858
cluster_stats_messages_pong_sent:29942
cluster_stats_messages_sent:60800
cluster_stats_messages_ping_received:29937
cluster_stats_messages_pong_received:30858
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:60800

4.6.1.3 查看集群主从关系
(只在 redis1 上执行以下步骤)
192.168.1.53:1053> cluster nodes
eac6a0586ad00375bea9aa352951c784be57e9ad 192.168.1.55:1055@11055 slave 5d030ec05f9de86ebeedc1b035b2122addaa61d8 0 1574754846521 5 connected
a5cddda6c1bc7c6d3397e17e1ba29571bb7a1657 192.168.1.54:1054@11054 slave c4f884e7e4ce6adb4f5bc4f6eb398680beb26089 0 1574754846000 4 connected
fd973bbcc376bfccf5888ba06dba97feb9ef1273 192.168.1.56:1056@11056 slave 7477c04d8ebf9d498ed5586d5f4e6d513fdb3c30 0 1574754845819 6 connected
5d030ec05f9de86ebeedc1b035b2122addaa61d8 192.168.1.51:1051@11051 master - 0 1574754846822 1 connected 0-5460
7477c04d8ebf9d498ed5586d5f4e6d513fdb3c30 192.168.1.52:1052@11052 master - 0 1574754846000 2 connected 5461-10922
c4f884e7e4ce6adb4f5bc4f6eb398680beb26089 192.168.1.53:1053@11053 myself,master - 0 1574754844000 3 connected 10923-16383

4.6.1.4 退出数据库
(只在 redis1 上执行以下步骤)
192.168.1.51:1051> quit

4.6.2 方法二
4.6.2.1 查看集群整体信息
(只在 redis1 上执行以下步骤)
# redis-cli --cluster info 192.168.1.51 1051
192.168.1.51:1051 (5d030ec0...) -> 1 keys | 5461 slots | 1 slaves.
192.168.1.53:1053 (c4f884e7...) -> 1 keys | 5461 slots | 1 slaves.
192.168.1.52:1052 (7477c04d...) -> 1 keys | 5462 slots | 1 slaves.
[OK] 3 keys in 3 masters.
0.00 keys per slot on average.

4.6.2.2 查看集群主从关系
(只在 redis1 上执行以下步骤)
# redis-cli --cluster check 192.168.1.51 1051
192.168.1.51:1051 (5d030ec0...) -> 1 keys | 5461 slots | 1 slaves.
192.168.1.53:1053 (c4f884e7...) -> 1 keys | 5461 slots | 1 slaves.
192.168.1.52:1052 (7477c04d...) -> 1 keys | 5462 slots | 1 slaves.
[OK] 3 keys in 3 masters.
0.00 keys per slot on average.
>>> Performing Cluster Check (using node 192.168.1.51:1051)
M: 5d030ec05f9de86ebeedc1b035b2122addaa61d8 192.168.1.51:1051
   slots:[0-5460] (5461 slots) master
   1 additional replica(s)
S: eac6a0586ad00375bea9aa352951c784be57e9ad 192.168.1.55:1055
   slots: (0 slots) slave
   replicates 5d030ec05f9de86ebeedc1b035b2122addaa61d8
M: c4f884e7e4ce6adb4f5bc4f6eb398680beb26089 192.168.1.53:1053
   slots:[10923-16383] (5461 slots) master
   1 additional replica(s)
M: 7477c04d8ebf9d498ed5586d5f4e6d513fdb3c30 192.168.1.52:1052
   slots:[5461-10922] (5462 slots) master
   1 additional replica(s)
S: fd973bbcc376bfccf5888ba06dba97feb9ef1273 192.168.1.56:1056
   slots: (0 slots) slave
   replicates 7477c04d8ebf9d498ed5586d5f4e6d513fdb3c30
S: a5cddda6c1bc7c6d3397e17e1ba29571bb7a1657 192.168.1.54:1054
   slots: (0 slots) slave
   replicates c4f884e7e4ce6adb4f5bc4f6eb398680beb26089
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

步骤五:Redis 集群创建失败的解决办法
5.1 关闭所有 Redis服务器的 Redis 服务
(只在加入集群失败的服务器上执行以下步骤)
# redis-cli -h <本台服务器的 IP 地址> -p <本台服务器 Redis 所使用的端口号> shutdowm

5.2 删除所有原来的 Redis 数据
(只在加入集群失败的服务器上执行以下步骤)
# rm -rf /var/lib/redis/6379/*

5.3 重启 Redis 数据库
(只在加入集群失败的服务器上执行以下步骤)
# /etc/init.d/redis_6379 start

5.4 按照前面的步骤重新执行创建集群
(只在加入集群失败的服务器上执行以下步骤)

步骤六:测试 Redis 集群
6.1 数据同步测试
6.1.1 进入数据库
(只在 redis1 上执行以下步骤)
# redis-cli -h 192.168.1.51 -p 1051

(只在 redis2 上执行以下步骤)
# redis-cli -h 192.168.1.52 -p 1052

(只在 redis3 上执行以下步骤)
# redis-cli -h 192.168.1.53 -p 1053

(只在 redis4 上执行以下步骤)
# redis-cli -h 192.168.1.54 -p 1054

(只在 redis5 上执行以下步骤)
# redis-cli -h 192.168.1.55 -p 1055

(只在 redis6 上执行以下步骤)
# redis-cli -h 192.168.1.56 -p 1056

6.1.2 确认现在的 Redis 数据库都是空的
(只在 redis1 上执行以下步骤)
192.168.1.51:1051> keys *

(只在 redis2 上执行以下步骤)
192.168.1.51:1052> keys *

(只在 redis3 上执行以下步骤)
192.168.1.51:1053> keys *

(只在 redis4 上执行以下步骤)
192.168.1.51:1054> keys *

(只在 redis5 上执行以下步骤)
192.168.1.51:1055> keys *

(只在 redis6 上执行以下步骤)
192.168.1.51:1056> keys *

6.1.3 在主 Redis 数据库上插入数据
(补充:本次的主数据库是 redis1、redis2、redis3)

(只在 redis1 上执行以下步骤)
192.168.1.51:1051> set aa 101
-> Redirected to slot [15495] located at 192.168.1.53:1053
OK

(只在 redis2 上执行以下步骤)
192.168.1.52:1052> set bb 102
-> Redirected to slot [3300] located at 192.168.1.51:1051
OK

(只在 redis3 上执行以下步骤)
192.168.1.53:1053> set ff 103
-> Redirected to slot [7365] located at 192.168.1.52:1052
OK

6.1.4 查看刚插入的数据
(只在 redis1 上执行以下步骤)
192.168.1.51:1051> keys *
1) "aa"

(只在 redis2 上执行以下步骤)
192.168.1.51:1052> keys *
1) "bb"

(只在 redis3 上执行以下步骤)
192.168.1.51:1053> keys *
1) "ff"

(只在 redis4 上执行以下步骤)
192.168.1.51:1054> keys *
1) "ff"

(只在 redis5 上执行以下步骤)
192.168.1.51:1055> keys *
1) "aa"

(只在 redis6 上执行以下步骤)
192.168.1.51:1056> keys *
1) "bb"

(
补充:
(1)对应的从库会自动同步主库的数据
(2)本次的主数据库是 redis1(从库是 redis5)、redis2(从库是 redis6)、redis3(从库是 redis4)
)

6.2 高可用测试
6.2.1 模拟此时主库宕机后,对应的从库会自动升级为主库但需要 5 分钟的时间
(只在模拟宕机的主库服务器上执行以下步骤)
# redis-cli -h <本台主库服务器的 IP 地址> -p <本台主库服务器 Redis 所使用的端口号> shutdown

6.2.2 等待 5 分钟后查看集群主从关系
(只在 redis1 上执行以下步骤)
# redis-cli --cluster check 192.168.1.51 1051

6.2.3 主库恢复后会成为新主库的从库
(只在模拟宕机的主库服务器上执行以下步骤)
# /etc/init.d/redis_6379 start

6.2.4 再次查看集群主从关系
(只在 redis1 上执行以下步骤)
# redis-cli --cluster check 192.168.1.51 1051