redis集群搭建,一主两从三哨兵的简单搭建过程,
首先准备redis,版本都可以,下载地址:http://redis.io/download
这次所用到的区别在于3.0版本不支持 :protected-mode no。的属性配置,会报错,Invalid argument during startup: unknown conf file parameter : protected-mod
3.2版本以上的可以
下载好windows版本的zip文件后,解压即可,启动redis的默认端口是6379,都可以配置,在redis.windows.conf配置文件下, linux下的集群与windows相差不多。
介绍
sentinel(哨兵模式)
sentinel,中文名是哨兵。哨兵是 Redis 集群架构中非常重要的一个组件,主要有以下功能:
- 集群监控:负责监控 redis master 和 slave 进程是否正常工作
- 消息通知:如果某个 redis 实例有故障,那么哨兵负责发送消息作为报警通知给管理员
- 故障转移:如果 master node 挂掉了,通过选举从slave node上产生新的master node
- 配置中心:如果故障转移发生了,通知 client 客户端新的 master 地址
哨兵用于实现 redis 集群的高可用,本身也是分布式的,作为一个哨兵集群去运行,互相协同工作
核心概念
- 哨兵至少需要 3 个实例,来保证自己的健壮性
- redis主从+哨兵的模式,不保证数据零丢失的,只能保证redis 集群的高可用性
最后结果
1.复制三个redis.windows.conf文件
其中内容相差不多,在原来的redis.windows.conf下修改端口,
1->6379;
2->6380;
3->6381;
同时添加回环地址,
bind 127.0.0.1
3.2版本以上的可以添加 protected-mode no 。
在port=6380,6381的两个从服务器下的配置文件添加,
slaveof 127.0.0.1 6379
代表这两个redis服务器为从服务器。
2.配置三个sentinel.conf,代表三个哨兵服务器
复制下方配置文件即可,三个哨兵服务器的port依次是
1->26379;
2->26380;
3->26381;
# 当前Sentinel服务运行的端口
port 26379
# 保护模式 no
# protected-mode no
# Sentinel去监视一个名为mymaster的主redis实例,
# 这个主实例的IP地址为本机地址127.0.0.1,端口号为6379,
# 而将这个主实例判断为失效至少需要2个Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行
# down-after-milliseconds指定了Sentinel认为Redis实例已经失效所需的毫秒数。
# 当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。
# 只有一个Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线。
# 这时自动故障迁移才会执行
# parallel-syncs指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,
# 在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长
sentinel monitor mymaster 127.0.0.1 6379 2
# 如果在failover-timeout该时间(ms)内未能完成failover操作,则认为该failover失败
sentinel down-after-milliseconds mymaster 5000
3.增加一个批量启动服务节点的bat文件
增加启动服务的配置,start.bat。
复制下发内容,修改redis服务器本地路径,以及配置文件名称。保存
@echo off
start cmd /k "cd/d D:\software\redis\redis-64.3.0.503&&redis-server.exe redis.windows1.conf"
start cmd /k "cd/d D:\software\redis\redis-64.3.0.503&&redis-server.exe redis.windows2.conf"
start cmd /k "cd/d D:\software\redis\redis-64.3.0.503&&redis-server.exe redis.windows3.conf"
start cmd /k "cd/d D:\software\redis\redis-64.3.0.503&&redis-server.exe sentinel1.conf --sentinel"
start cmd /k "cd/d D:\software\redis\redis-64.3.0.503&&redis-server.exe sentinel2.conf --sentinel"
start cmd /k "cd/d D:\software\redis\redis-64.3.0.503&&redis-server.exe sentinel3.conf --sentinel"
双击start.bat。服务启动。
4.查看服务状态
启动redis客户端,
.\redis-cli.exe
查看状集群情况
info replication
由图中可以看到,6379节点权限为master节点, 两个从属节点6380,6381.
5.查看缓存同步情况
打开redis客户端软件,查看存在的原来的状态。
在6379服务器上设置值,
127.0.0.1:6379> set b 2
OK
127.0.0.1:6379>
查看到6379的端口给出反馈, 已经成功同步到从属服务器上,
且查看到 6380端口同步到了6379设置的值。到此,就完成了一部分。