单台Windows 配置 Redis 主从集群并配置哨兵

541 阅读3分钟

1、redis下载 github.com/tporadowski…

2、解压修改配置文件redis.windows.conf

(1)指定port和密码requirepass,注意顶格

(2)bind修改为0.0.0.0

(3)关闭安全模式, protected-mode修改为no

3、cmd启动,redis目录下启动cmd,指定启动加载配置文件

redis-server.exe redis.windows.conf

4、安装为服务后启动

redis-server.exe --service-install redis.windows.conf --service-name redis6380

5、cmd登录或使用Redis Desktop Manager桌面管理端

redis-cli.exe -h 127.0.0.1 -p 6380 -a password

或者密码验证 auth ***

数据类型 www.runoob.com/redis/redis…

String1-1     getset
Hash:有序  1-n-n   hmset 、hget、HGETALL key
list:      1-n     lpush 、lrange * 0 n
set1-n     sadd key member 、smembers key
zset:有序  1-n     zadd key score member  、ZRANGEBYSCORE runoob 0 1000

6、主从配置,复制两份redis文件夹,修改一下配置项

port *** #从库自己的端口

slaveof 127.0.0.1 6380 #主库对应的ip和端口

masterauth *** #主redis的密码

从库也安装为服务

redis-server.exe --service-install redis.windows.conf --service-name redis6381

redis-server.exe --service-install redis.windows.conf --service-name redis6382

(一份redis文件也可以创建多个redis示例www.pianshen.com/article/797…

7、在服务中先启动主库6380,再启动从库,redis连接后在主库修改数据,看从库是否有对应改变

8、哨兵配置 主从库redis各目录下新建哨兵配置文件sentinel26380.conf,填入以下配置,只需要修改一下哨兵对应的port和文件名

# 配置 sentinel 端口号
port 26380
# 以守护进程启动
daemonize yes
# 绑定只在本地使用
bind 127.0.0.1
# 日志文件名称
logfile "sentinel.log"
# 日志文件存放地址
dir "./"
# 监控 master 名字叫做 mymaster,地址是 127.0.0.1 端口号是 6380,1 表示有几个 sentinel 认为该 master 出现故障,触发主备切换动作
sentinel monitor mymaster 127.0.0.1 6380 2
# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
sentinel down-after-milliseconds mymaster 30000
# 主备切换时,多少个从服务器同步更新数据,数值越小越好
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间 failover-timeout 可以用在以下这些方面: 
#1. 同一个sentinel对同一个master两次failover之间的间隔时间。
#2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。
#3.当想要取消一个正在进行的failover所需要的时间。  
#4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了
# 默认三分钟
sentinel failover-timeout mymaster 180000
# 设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同
sentinel auth-pass mymaster 123456

9、各目录下cmd将哨兵安装为服务,并启动

redis-server --service-install sentinel26380.conf --service-name sentinel26380 --sentinel

redis-server --service-install sentinel26381.conf --service-name sentinel26381 --sentinel

redis-server --service-install sentinel26382.conf --service-name sentinel26382 --sentinel

10、登录到哨兵服务,查看哨兵信息,主库端口为6380

F:\Soft\Redis-x64-5.0.10>redis-cli -p 26380
127.0.0.1:26380> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=3

11、停止主库服务,等待30s后,再次查询哨兵状态,发现主库已经切换到端口6381,此时在6381对应的redis修改数据,可以看到6382数据对应改变,证明6381确实切换到主库。

127.0.0.1:26380> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6381,slaves=2,sentinels=3

12、重启原有主库6380,再对当前主库6381进行修改数据,发现6380数据没有改,而6382数据对应改变,如果想要6380作为新主库的从库,需要对6380配置本身的密码:masterauth (6380本身的密码)