文档章节

redis 主从分布式

 大陆大陆
发布于 2015/12/03 09:53
字数 1115
阅读 53
收藏 1

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的异常。


© 著作权归作者所有

上一篇: nginx配置
下一篇: nginx配置详解
粉丝 1
博文 27
码字总数 38803
作品 0
海淀
私信 提问
Redisson 1.2.0 发布,Redis 客户端

Redisson 1.2.0 发布,此版本更新内容如下: 新特性:支持 cluster 模式 bug 修复: RList iterator race conditions RDeque.addFirst RDeque.addLast 方法 OSGi 支持 Redisson 是基于Redis...

君枫
2015/01/27
3.2K
5
Redisson 2.2.2 发布,Redis 客户端

Resisson 2.2.2 发布,此版本更新内容: Feature - and methods were added to RedissonClient and RedissonReactiveClient Feature - new object added Fixed - RLock expiration renewal ......

淡漠悠然
2015/12/15
2.2K
3
Redis一:redis安装、主从复制、主从切换

1安装redis 下载redis安装包:redis-4.0.1.tar.gz 解压: 进入redis解压目录 执行make 对Redis解压后文件进行编译 编译成功后,进入src文件夹,执行make install进行Redis安装 安装完成之后,...

贾峰uk
2018/12/25
29
0
Redisson 2.2.6 发布,Redis 客户端

Redisson 2.2.6发布,更新内容暂未发布,详情请看:CHANGELOG.md 下载地址:redisson-2.2.6 Redisson 是基于Redis服务之上构建的分布式、可伸缩的Java数据结构,高级的Redis客户端。【redis...

淡漠悠然
2016/01/29
1K
0
Redisson 2.2.1 发布,Redis 客户端

Redisson 2.2.1 发布,此版本更新内容如下: Feature - new object added with reentrant read/write locking Feature - new object added map-based cache with TTL support for each entr......

淡漠悠然
2015/12/11
841
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud Sleuth 整合 feign 源码分析

org.springframework.cloud.sleuth.instrument.web.client.feign.TraceFeignClient 包括创建span一些参数

xiaomin0322
8分钟前
1
0
Less 延伸

extend 是一个 Less 伪类,它通过使用 :extend 选择器在一个选择器中扩展其他选择器样式。 扩展语法 扩展可以是附加到选择器,也可以是集中放置在规则,看上去像是带有选择器参数的可选伪类,...

凌兮洛
9分钟前
1
0
RedHat 7.0系统中安装mysql 5.7.22

在安装之前,首先要查看的是,你的系统中有没有已经安装过的情况。键入rpm -qa|grep mysql,如果无任何显示,则表示没有安装过相关组件,如果有,则根据显示出来的名字,键入rpm -e --nodeps...

最菜最菜之小菜鸟
14分钟前
2
0
RPA:企业信息孤岛的“克星”

为了降本增效,近来世界范围内掀起一股流程优化的热潮,转型升级成为众多企业时刻挂在嘴边的热词。不过在企业数字化转型的过程中,信息孤岛的出现,往往成为了企业升级的绊脚石。 信息孤岛:...

UiBot
14分钟前
2
0
我的测试

我的测试

daiison
14分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部