阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Redis Sentinel集群方案–单机测试

128次阅读
没有评论

共计 9342 个字符,预计需要花费 24 分钟才能阅读完成。

1. 测试环境
master:127.0.0.1 6379
slave1:    127.0.0.1 6479
slave2:    127.0.0.1 6579
master-sentinel: 127.0.0.1 26379
slave1-sentinel: 127.0.0.1 26479
slave2-sentinel: 127.0.0.1 26579
2. 下载安装 Redis 2.8.3
cd
wget http://download.redis.io/releases/redis-2.8.3.tar.gz
tar –zxvf redis-2.8.3.tar.gz
cd redis-2.8.3
make;make install(此处可用 PREFIX 参数将 redis 安装到其他目录)
3. 配置测试环境
—- 创建目录:
cd /usr/local
mkdir redis_cluster
mkdir redis_cluster/master_6379
mkdir redis_cluster/slave_6479
mkdir redis_cluster/slave_6579
—- 配置 redis:
master:
cp –a –R –p ~/redis-2.8.3/redis.conf ./redis_cluster/master_6379/
cp –a –R –p ~/redis-2.8.3/sentinel.conf ./redis_cluster/master_6379/6379-sentinel.conf
vi ./redis_cluster/master_6379/redis.conf(将对应配置修改成如下)
——————————————————————————————-
####master  redis.conf
#### 端口
port 6379
#### 授权密码,在安全的环境中可以不设置
requirepass luyx30       
masterauth luyx30
#### 注释指令重命名,若已配置则不需要修改
#rename-command
#### 开启 AOF
appendonly yes
save“”
slave-read-only yes
——————————————————————————————-
vi ./redis_cluster/master_6379/6379-sentinel.conf
——————————————————————————————-
####master  sentinel.conf
##sentinel 实例之间的通讯端口
port 26379
####sentinel 需要监控的 master 信息:<mastername> <masterIP> <masterPort> <quorum>.
####<quorum> 应该小于集群中 slave 的个数, 只有当至少 <quorum> 个 sentinel 实例提交 ”master 失效 ” 才会认为 master 为 ODWON(“ 客观 ” 失效) .
sentinel monitor mymaster 127.0.0.1 6379 2
#### 授权密码,在安全的环境中可以不设置
sentinel auth-pass mymaster luyx30
####master 被当前 sentinel 实例认定为“失效”(SDOWN) 的间隔时间
sentinel down-after-milliseconds mymaster 30000
#### 当新 master 产生时,同时进行“slaveof”到新 master 并进行同步复制的 slave 个数。
## 在 salve 执行 salveof 与同步时,将会终止客户端请求。
## 此值较大,意味着“集群”终止客户端请求的时间总和和较大。
## 此值较小, 意味着“集群”在故障转移期间,多个 salve 向客户端提供服务时仍然使用旧数据。
sentinel parallel-syncs mymaster 1
####failover 过期时间,当 failover 开始后,在此时间内仍然没有触发任何 failover 操作,当前 sentinel 将会认为此次 failoer 失败。
sentinel failover-timeout mymaster 900000
——————————————————————————————-
slave1:
cp –a –R –p ~/redis-2.8.3/redis.conf ./redis_cluster/slave_6479/
cp –a –R –p ~/redis-2.8.3/sentinel.conf ./redis_cluster/slave_6479/6479-sentinel.conf
vi ./redis_cluster/slave_6479/redis.conf(将对应配置修改成如下)
——————————————————————————————-
####slave1 redis.conf
port 6479
slaveof 127.0.0.1 6379
##———– 其他配置和 master  redis.conf 保持一致 ———–##
——————————————————————————————-
vi ./redis_cluster/slave_6479/6479-sentinel.conf
——————————————————————————————-
####slave1 sentinel.conf
port 26479
##——– 其他配置和 master  sentinel.conf 保持一致 ——-##
——————————————————————————————-
slave2:
cp –a –R –p ~/redis-2.8.3/redis.conf ./redis_cluster/slave_6579/
cp –a –R –p ~/redis-2.8.3/sentinel.conf ./redis_cluster/slave_6579/6579-sentinel.conf
vi ./redis_cluster/slave_6579/redis.conf(将对应配置修改成如下)
——————————————————————————————-
####slave1 redis.conf
port 6579
slaveof 127.0.0.1 6379
##———– 其他配置和 master redis.conf 保持一致 ———–##
——————————————————————————————-
vi ./redis_cluster/slave_6579/6579-sentinel.conf
——————————————————————————————-
####slave1 sentinel.conf
port 26579
##——– 其他配置和 master sentinel.conf 保持一致 ——-##
——————————————————————————————-

—- 启动查看:
注意:首次构建 sentinel 环境时,必须首先启动 master。

Redis 的详细介绍:请点这里
Redis 的下载地址:请点这里

推荐阅读:

Redis 集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htm

Ubuntu 12.10 下安装 Redis(图文详解)+ Jedis 连接 Redis http://www.linuxidc.com/Linux/2013-06/85816.htm

Redis 系列 - 安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3 安装 Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

Redis 配置文件 redis.conf 详解 http://www.linuxidc.com/Linux/2013-11/92524.htm

启动 master 和 master-sentinel:

Redis-server –include /usr/local/redis_cluster/master-6379/redis.conf

redis-sentinel /usr/local/redis_cluster/master-6379/6379-sentinel.conf

克隆会话,启动 slave1 和 slave1-sentinel:

redis-server –include /usr/local/redis_cluster/slave-6479/redis.conf

redis-sentinel /usr/local/redis_cluster/slave-6479/6479-sentinel.conf

克隆会话,启动 slave2 和 slave2-sentinel:

redis-server –include /usr/local/redis_cluster/slave-6579/redis.conf

redis-sentinel /usr/local/redis_cluster/slave-6579/6579-sentinel.conf

查看 master 的状态:

redis-cli -h 127.0.0.1 -p 6379

Redis Sentinel 集群方案 -- 单机测试

查看 slave 的状态:

redis-cli –h 127.0.0.1 –p 6479

Redis Sentinel 集群方案 -- 单机测试

4. 测试:

—- 场景 1:slave 宕机

关闭 slave1:

Redis Sentinel 集群方案 -- 单机测试

查看 sentinel 状态:

Redis Sentinel 集群方案 -- 单机测试

查看 master 的 Replication 信息:

此时只存在一个 slave。

Redis Sentinel 集群方案 -- 单机测试

—- 场景 2:slave 恢复

重新开启 slave1:

redis-server /usr/local/redis_cluster/slave-6479/redis.conf

查看 sentinel 状态:

sentinel 能快速的发现 slave 加入到集群中:

Redis Sentinel 集群方案 -- 单机测试

查看 master 的 Replication 信息:

Redis Sentinel 集群方案 -- 单机测试

1. 测试环境
master:127.0.0.1 6379
slave1:    127.0.0.1 6479
slave2:    127.0.0.1 6579
master-sentinel: 127.0.0.1 26379
slave1-sentinel: 127.0.0.1 26479
slave2-sentinel: 127.0.0.1 26579
2. 下载安装 Redis 2.8.3
cd
wget http://download.redis.io/releases/redis-2.8.3.tar.gz
tar –zxvf redis-2.8.3.tar.gz
cd redis-2.8.3
make;make install(此处可用 PREFIX 参数将 redis 安装到其他目录)
3. 配置测试环境
—- 创建目录:
cd /usr/local
mkdir redis_cluster
mkdir redis_cluster/master_6379
mkdir redis_cluster/slave_6479
mkdir redis_cluster/slave_6579
—- 配置 redis:
master:
cp –a –R –p ~/redis-2.8.3/redis.conf ./redis_cluster/master_6379/
cp –a –R –p ~/redis-2.8.3/sentinel.conf ./redis_cluster/master_6379/6379-sentinel.conf
vi ./redis_cluster/master_6379/redis.conf(将对应配置修改成如下)
——————————————————————————————-
####master  redis.conf
#### 端口
port 6379
#### 授权密码,在安全的环境中可以不设置
requirepass luyx30       
masterauth luyx30
#### 注释指令重命名,若已配置则不需要修改
#rename-command
#### 开启 AOF
appendonly yes
save“”
slave-read-only yes
——————————————————————————————-
vi ./redis_cluster/master_6379/6379-sentinel.conf
——————————————————————————————-
####master  sentinel.conf
##sentinel 实例之间的通讯端口
port 26379
####sentinel 需要监控的 master 信息:<mastername> <masterIP> <masterPort> <quorum>.
####<quorum> 应该小于集群中 slave 的个数, 只有当至少 <quorum> 个 sentinel 实例提交 ”master 失效 ” 才会认为 master 为 ODWON(“ 客观 ” 失效) .
sentinel monitor mymaster 127.0.0.1 6379 2
#### 授权密码,在安全的环境中可以不设置
sentinel auth-pass mymaster luyx30
####master 被当前 sentinel 实例认定为“失效”(SDOWN) 的间隔时间
sentinel down-after-milliseconds mymaster 30000
#### 当新 master 产生时,同时进行“slaveof”到新 master 并进行同步复制的 slave 个数。
## 在 salve 执行 salveof 与同步时,将会终止客户端请求。
## 此值较大,意味着“集群”终止客户端请求的时间总和和较大。
## 此值较小, 意味着“集群”在故障转移期间,多个 salve 向客户端提供服务时仍然使用旧数据。
sentinel parallel-syncs mymaster 1
####failover 过期时间,当 failover 开始后,在此时间内仍然没有触发任何 failover 操作,当前 sentinel 将会认为此次 failoer 失败。
sentinel failover-timeout mymaster 900000
——————————————————————————————-
slave1:
cp –a –R –p ~/redis-2.8.3/redis.conf ./redis_cluster/slave_6479/
cp –a –R –p ~/redis-2.8.3/sentinel.conf ./redis_cluster/slave_6479/6479-sentinel.conf
vi ./redis_cluster/slave_6479/redis.conf(将对应配置修改成如下)
——————————————————————————————-
####slave1 redis.conf
port 6479
slaveof 127.0.0.1 6379
##———– 其他配置和 master  redis.conf 保持一致 ———–##
——————————————————————————————-
vi ./redis_cluster/slave_6479/6479-sentinel.conf
——————————————————————————————-
####slave1 sentinel.conf
port 26479
##——– 其他配置和 master  sentinel.conf 保持一致 ——-##
——————————————————————————————-
slave2:
cp –a –R –p ~/redis-2.8.3/redis.conf ./redis_cluster/slave_6579/
cp –a –R –p ~/redis-2.8.3/sentinel.conf ./redis_cluster/slave_6579/6579-sentinel.conf
vi ./redis_cluster/slave_6579/redis.conf(将对应配置修改成如下)
——————————————————————————————-
####slave1 redis.conf
port 6579
slaveof 127.0.0.1 6379
##———– 其他配置和 master redis.conf 保持一致 ———–##
——————————————————————————————-
vi ./redis_cluster/slave_6579/6579-sentinel.conf
——————————————————————————————-
####slave1 sentinel.conf
port 26579
##——– 其他配置和 master sentinel.conf 保持一致 ——-##
——————————————————————————————-

—- 启动查看:
注意:首次构建 sentinel 环境时,必须首先启动 master。

Redis 的详细介绍:请点这里
Redis 的下载地址:请点这里

推荐阅读:

Redis 集群明细文档 http://www.linuxidc.com/Linux/2013-09/90118.htm

Ubuntu 12.10 下安装 Redis(图文详解)+ Jedis 连接 Redis http://www.linuxidc.com/Linux/2013-06/85816.htm

Redis 系列 - 安装部署维护篇 http://www.linuxidc.com/Linux/2012-12/75627.htm

CentOS 6.3 安装 Redis http://www.linuxidc.com/Linux/2012-12/75314.htm

Redis 配置文件 redis.conf 详解 http://www.linuxidc.com/Linux/2013-11/92524.htm

—- 场景 3:master 宕机

master-sentinel 作为 master 1 的 leader,会选取一个 master 1 的 slave 作为新的 master。slave 的选取是根据一个判断 DNS 情况的优先级来得到,优先级相同通过 runid 的排序得到,但目前优先级设定还没实现,所以直接获取 runid 排序得到 slave 1。

然后发送命令 slaveof no one 来取消 slave 1 的 slave 状态来转换为 master。当其他 sentinel 观察到该 slave 成为 master 后, 就知道错误处理例程启动了。sentinel A 然后发送给其他 slave slaveof new-slave-ip-port 命令,当所有 slave 都配置完后,sentinel A 从监测的 masters 列表中删除故障 master,然后通知其他 sentinels。

关闭 master:

Redis Sentinel 集群方案 -- 单机测试

查看 sentinel 状态:

6379-sentinel:

自动将 slave2 即 6579 切换成 master,原来的 master 变成 slave。

Redis Sentinel 集群方案 -- 单机测试

6579-sentinel:

显示了 failover 的过程:

Redis Sentinel 集群方案 -- 单机测试

—- 场景 4:master 恢复

重新启动原来的 master:

Redis-server /usr/local/redis_cluster/master-6379/redis.conf

查看 sentinel 状态:

原来的 master 自动切换成 slave,不会自动恢复成 master:

Redis Sentinel 集群方案 -- 单机测试

测试完成。

注意:若在 sentinel 已选出新主但尚未完成其它实例的 reconfigure 之前,重启 old master,则整个系统会出现无法选出 new master 的异常。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计9342字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中