redis双机部署之Windows系统下哨兵模式的搭建

Sentinel(哨兵)是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

1. 准备
知识准备:http://www.redis.cn/ http://www.redis.io/

介质:https://github.com/MSOpenTech/redis   (redis官方没有windows版本,微软的某小组搞了个,目前版本3.0x)
架构:
  1个主库(master) 端口:6379
  1个从库(slave)    端口:6380
  1个sentinel端         端口:26379 
2.安装Redis
参考链接:http://blog.csdn.net/wgw335363240/article/details/24469159
介质解压到你想要的地方(不要有中文目录),比如E:\Programs(别放在C盘 管理员权限麻烦)
打开CMD,使用cd命令切换目录到E:\Programs,运行 redis-server.exe redis.conf 
默认启动端口6379
http://bbs.redis.cn/data/attachment/forum/201605/27/115327r9dl9xwdk099bx6z.jpg 

切换到E:\Programs,执行redis-cli.exe -h 127.0.0.1 -p 6379   这是连接客户端的方式,可以进行 set KEY   get KEY  操作
停止server端服务(直接在windows的cmd命令行中输入shutdown)
停止客户端服务,稍后这个服务做为主库。

3.部署主从/Replication(很像Oracle的dataguard)
关掉服务,复制整个Redis目录并重命名为Redis-x64-Slave(作为从库)
复制整个Redis目录并重命名为Redis-x64-Sentinel(待会要用)
http://bbs.redis.cn/data/attachment/forum/201605/27/120819ewj3a8jafjmham3d.jpg 

主库保持不变,从库(Slave)修改redis.windows.conf文件(用文本编辑器修改) 
port 6379改为port 6380 (如下图)

http://bbs.redis.cn/data/attachment/forum/201605/27/120633xwwogivo0w22bbnb.png 
再修改添加
slaveof 127.0.0.1 6379
http://bbs.redis.cn/data/attachment/forum/201605/27/121041mg44c41fdf8x148b.png 

端口别搞错!
cd到从库目录,执行redis-server.exe redis.windows.conf
http://bbs.redis.cn/data/attachment/forum/201605/27/121410eoawoc9bdczn818u.jpg 

用windows自带命令行登录主库:redis-cli.exe -h 127.0.0.1 -p 6379
执行info Replication查看配置

127.0.0.1:6379> info Replication
# Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=
master_repl_offset:99
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_o
repl_backlog_histlen:98


登录从库
127.0.0.1:6380> info Replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:8
master_sync_in_progress:0

然后可以插入数据测试下同步情况至此,Replication从库部署完毕
4.部署Sentinel
进入刚刚复制好的Redis-x64-Sentinel目录
新建
sentinel.conf文件
编辑添加如下内容
port 26379
#master
sentinel monitor master 127.0.0.1 6379 1
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 180000
sentinel parallel-syncs master 1

注意:port 26379为sentinel的端口,别和主库端口搞混!
参数参考:http://www.redis.cn/topics/sentinel.html

cd到Redis-x64-Sentinel目录
启动sentinel服务:
redis-server.exe sentinel.conf --sentinel
http://bbs.redis.cn/data/attachment/forum/201605/27/122541j8jmdwmhiba9w99b.jpg 
接下来执行故障转移测试
win自带的CMD登录主库:执行shutdown
从sentinel端看到的情况
http://bbs.redis.cn/data/attachment/forum/201605/27/123313elxy0lhssketpxms.jpg 
从库变为master
再次启动原来的主库
sentinel端查看情况
原来的master变为slave
http://bbs.redis.cn/data/attachment/forum/201605/27/123801wpzxippoinpgxvii.jpg 
用cmd登录原来的主库和从库
http://bbs.redis.cn/data/attachment/forum/201605/27/123418h3ukkurribwuvpcu.png 
http://bbs.redis.cn/data/attachment/forum/201605/27/124003rk1cfji1ic91bj13.png 

主动执行主备切换,切换后原来的主库还是主库
登录sentinel端
执行:SENTINEL failover mymaster
http://bbs.redis.cn/data/attachment/forum/201605/27/124138bpply3pjd5oc5vyp.jpg 
登录主库查看情况
http://bbs.redis.cn/data/attachment/forum/201605/27/124211ibsbzbtbbcy0bybb.jpg 
在sentinel端查看

http://bbs.redis.cn/data/attachment/forum/201605/27/124237ffm50dynlmpxmnvp.jpg 

登录主库查看配置

http://bbs.redis.cn/data/attachment/forum/201605/27/124300lvvczx70xd0mee5e.jpg 


 

主备切换后,会发现配置文件发生了改变

http://bbs.redis.cn/data/attachment/forum/201605/27/125046q9apa9yzm71nkrqe.jpg

5.备注

redis的哨兵模式已经很稳定了,本人已经在项目实际用过了,总体不错,以上版本是Windows 的, linux 版本的也是一样的,在生产环境如果是双机的话,主从两个redis和两个哨兵是最合适的方案。

参考文档:

http://mamicode.com/info-detail-401194.html

http://www.cnblogs.com/Xrinehart/p/3502198.html

 

猜你喜欢

转载自blog.csdn.net/tomy123456123456/article/details/81169665