redis sentinel 单机搭建测试环境

来源:互联网 发布:彩票选号软件 编辑:程序博客网 时间:2024/06/05 18:33

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。

启动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

image

查看slave的状态:

redis-cli –h 127.0.0.1 –p 6479

image

4.测试:

----场景1:slave宕机

关闭slave1:

image

查看sentinel状态:

image

查看master的Replication信息:

此时只存在一个slave。

image

----场景2:slave恢复

重新开启slave1:

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

查看sentinel状态:

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

image

查看master的Replication信息:

image

----场景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:

image

查看sentinel状态:

6379-sentinel:

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

image

6579-sentinel:

显示了failover的过程:

image

----场景4:master恢复

重新启动原来的master:

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

查看sentinel状态:

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

image

测试完成。

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

本文出自 “坚持” 博客,请务必保留此出处http://luyx30.blog.51cto.com/1029851/1349027

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 备孕同房后一直乳头立起来怎么办 夏天出汉内衣老是湿的怎么办 大腿旁边长了红色的癣怎么办 跑步膝盖疼怎么办能不能再跑了 两周宝宝剧烈运动后咳嗽怎么办 bra的M有点紧L有点宽怎么办 穿吊带总是会露出来左胸罩杯怎么办 生小孩后腰部有一圈黑色勒痕怎么办 新买的饮水机热水口出水小怎么办 新买的饮水机热水口不出水怎么办 平胸没有适合自己的内衣怎么办 售楼小姐穿坏的丝袜都怎么办了 蛋白粉一天喝十克补不起来怎么办 跑步时没有卸妆毛孔堵塞了怎么办 自己做的葡萄酒太甜了怎么办 健身馆碰到一个帅的健身教练怎么办 随着年龄的增长脖子越来越短怎么办 安装软件时解析包出现问题怎么办 鼻子吸进去的气往嘴巴里怎么办 做完瑜伽之后大腿后侧特别紧怎么办 刚下生小狗腿后腿站不起来怎么办 脚被凳子压到了流血了怎么办还很痛 小狗脚被凳子压出血了怎么办 怀孕8个月脐带绕颈一周怎么办 练完瑜伽大腿两侧肌肉麻木怎么办 突然吃了辣火锅肚子烫怎么办 副鼻窦炎鼻头顶痛鼻子臭怎么办 一岁宝宝夜里睡觉不踏实怎么办 分手一个月了还是放不下前任怎么办 当晚上遇到烦心事睡不着该怎么办 为什么白天太累晚上就睡不着怎么办 白天走累的脚痛晚上睡不着怎么办 1岁宝宝感冒咳嗽流泪流鼻涕怎么办 宝宝不含母乳只吃奶瓶怎么办 宝宝习惯奶嘴不咬妈妈的乳头怎么办 我的乳晕和私处色素沉着怎么办 双盘打坐膝痛腿脚心处紫青怎么办? 双盘打坐两膝盖不能着地怎么办? 做完蹲起之后腿疼的受不了怎么办 孩子游泳学不会不想去了怎么办 自由泳打腿走水但水花大怎么办