目录
采用一主(master)二从(slave)三哨兵(sentinel)的架构模式构建最简单的Redis集群
服务类型 | 是否主服务器 | IP地址 | 端口 |
Redis | 是 | 服务器IP地址 | 6379 |
Redis | 否 | 服务器IP地址 | 6380 |
Redis | 否 | 服务器IP地址 | 6381 |
Sentinel | 服务器IP地址 | 26379 | |
Sentinel | 服务器IP地址 | 26380 | |
Sentinel | 服务器IP地址 | 26381 |
一、准备材料
Redis-x64-3.2.100.zip
解压后拷贝三份,如图所示,重命名文件夹
二、主从模式
端口、密码均可自定义修改,配置项也要随之修改
(1)修改密码
分别打开Redis-6379、Redis-6380、Redis-6381文件夹中的redis.windows.conf文件,ctrl+f搜索【requirepass】关键字,复制requirepass foobared ,另起一行改为requirepass dcdt
分别打开Redis-6379、Redis-6380、Redis-6381文件夹中的redis.windows.conf文件,ctrl+f搜索【bind 127.0.0.1】关键字,在后面,敲击空格,增加服务器IP
分别打开Redis-6380、Redis-6381文件夹中的redis.windows.conf文件,ctrl+f搜索【port 6379】关键字, Redis-6380、Redis-6381端口依次修改为6380、6381
(4)设置主库
Redis-6380、Redis-6381文件夹下redis.windows.conf文件端口配置下增加主库配置:slaveof 192.168.196.33 6379
注意:有关slaveof的配置只是配置从服务器,主服务器不需要配置
Redis-6380、Redis-6381设置主库密码:ctrl+f搜索masterauth关键字,设置主库密码
(7)启动、测试
打开cmd,进入redis安装目录,执行命令:【redis-server.exe redis.windows.conf】
新开cmd窗口,进入主库Redis-6379文件目录,输入如下命令
【redis-cli.exe -h 192.168.196.33 -p 6379 -a dcdt】
命令解释:
-h ip地址
-p 端口
-a 密码
连接后,输入【info replication】,可以看到,有两个从库,connected_slaves:2
使用RedisStudio连接三个redis库,查看主从数据同步功能是否实现,主库读写,从库只读。发送请求往6379里赋值,看6380,6381是否能同步数据。
三、哨兵模式
哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
三个实例目录下分别新建sentinel.conf, 端口为26379,26380,26381,其他一致
配置如下:
# 当前Sentinel服务运行的端口
port 26379
#禁止保护模式
protected-mode no
# 哨兵监听的主服务器
sentinel monitor mymaster 192.168.196.33 6379 2
# 3s内mymaster无响应,则认为mymaster宕机了
sentinel down-after-milliseconds mymaster 5000
# 如果10秒后,mysater仍没启动过来,则启动failover
sentinel failover-timeout mymaster 10000
# 执行故障转移时,最多有1个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
# 密码
sentinel auth-pass mymaster dcdt
启动三个哨兵进程
打开cmd,依次进入三个redis安装目录,执行命令:
【redis-server.exe sentinel.conf --sentinel】
至此,哨兵配置且启动完成
(2)测试
1.停掉6379进程,在6379实例的cmd窗口下 crtl+c
2.观察6380、6381实例中cmd窗口中的日志
新开cmd窗口,进入主库Redis-6381文件目录,输入如下命令
【redis-cli.exe -h 192.168.196.33 -p 6381 -a dcdt】
连接后,输入【info replication】,可以看到,6381角色为主库,6380为从库
至此,哨兵测试通过
四、其他
start.bat 快速启动测试
@echo off
start cmd /k "pushd E:\software\redis\Redis-6379&&redis-server.exe redis.windows.conf"
start cmd /k "pushd E:\software\redis\Redis-6380&&redis-server.exe redis.windows.conf"
start cmd /k "pushd E:\software\redis\Redis-6381&&redis-server.exe redis.windows.conf"
start cmd /k "pushd E:\software\redis\Redis-6379&&redis-server.exe sentinel.conf --sentinel"
start cmd /k "pushd E:\software\redis\Redis-6380&&redis-server.exe sentinel.conf --sentinel"
start cmd /k "pushd E:\software\redis\Redis-6381&&redis-server.exe sentinel.conf --sentinel"