搭建redis-sentinel(哨兵机制)集群
2016-05-31 18:12
896 查看
简单介绍下Redis-sentinel:
Redis-sentinel是Redis实例的监控管理、通知和实例失效备援服务,是Redis集群的管理工具。在一般的分布式中心节点数据库中,Redis-sentinel的作用是中心节点的工作,监控各个其他节点的工作情况并且进行故障恢复,来提高集群的高可用性。(简介来自链接:http://www.searchdatabase.com.cn/showcontent_71572.htm)
首先各自拷贝redis.conf和sentinel.conf
设置redis配置文件,并设置访问密码
假设主机的ip是10.66.1.9,注意后文从机也会设置主机一样的密码,此处主机的配置中也要设置masterauth参数,否则主机宕掉重启后不能正常连接从机
设置sentinel配置文件,设置监控的master和访问密码
现在启动master服务
现在主要的redis和哨兵进程已经启动了,接下来要启用redis从机和其他哨兵进程,我们换一台服务器进行
也是照旧先拷贝redis.conf和sentinel.conf
接下来设置redis从机配置文件,同样设置访问密码,设置master主机访问权限
假设从机的ip是10.66.1.98
设置sentinel配置文件,设置监控的master和访问密码
现在启动slave服务
现在主从都启动好了,双哨兵进程也启动了,接下来可以手动测试一下redis挂掉的情况,很简单,把主机上的redis master kill掉就行了
sdown,主观下线(Subjectively Down, 简称 SDOWN)指的是单个 Sentinel 实例对服务器做出的下线判断
odown,客观下线(Objectively Down, 简称 ODOWN)指的是多个 Sentinel 实例在对同一个服务器做出 SDOWN 判断, 并且通过SENTINEL is-master-down-by-addr 命令互相交流之后, 得出的服务器下线判断。 (一个 Sentinel 可以通过向另一个 Sentinel 发送 SENTINEL is-master-down-by-addr 命令来询问对方是否认为给定的服务器已下线。)
switch-master,表示开始发送切换master指令了
这里就切换完成了,telnet到从机查看
已经变成主了
再次启动本来的redis主机,并且telnet到本来的主机查看
本来的主机已经变成从了
接下来编辑redis-sentinel的client-reconfig-script脚本,client-reconfig-script脚本如果配置了,在sentinel failover时会执行,用于手动做一些主从切换的操作,比如切换VIP(虚拟IP)指向,发送短信通知等。
本文通过添加host实现ip指向的定义:
client-reconfig-script脚本内容:
echo "Master move from $4:$5 to $6:$7" >> /Data/logs/redis/sentinel.log
sed -i '/redis.zhibo.com/d' /etc/hosts
sed -i '$a '$6' redis.zhibo.com' /etc/hosts
client-reconfig-script脚本会在选举出做switch操作的sentinel机上执行一次,在其他运行sentinel的集群成员机上也会各执行一次,这样所有集群机上访问redis.zhibo.com这个域名都会指向正常运行的redis的ip上去
另一种方法是,客户端代码服务器设立一个可访问的http api接口,调用client-reconfig-script脚本时访问api,通知redis可用地址切换,由代码服务器自行处理ip切换
本文就不再赘述了
Redis-sentinel是Redis实例的监控管理、通知和实例失效备援服务,是Redis集群的管理工具。在一般的分布式中心节点数据库中,Redis-sentinel的作用是中心节点的工作,监控各个其他节点的工作情况并且进行故障恢复,来提高集群的高可用性。(简介来自链接:http://www.searchdatabase.com.cn/showcontent_71572.htm)
首先各自拷贝redis.conf和sentinel.conf
#cd /Data/local/redis-3.0.5 #cp redis.conf etc/redis-6379.conf && cp sentinel.conf etc/sentinel-26379.conf
设置redis配置文件,并设置访问密码
假设主机的ip是10.66.1.9,注意后文从机也会设置主机一样的密码,此处主机的配置中也要设置masterauth参数,否则主机宕掉重启后不能正常连接从机
#cd etc #vim redis-6379.conf daemonize yes pidfile /var/run/redis-6379.pid port 6379 bind 10.66.1.9 requirepass pass*** <pre name="code" class="html">masterauth pass***
设置sentinel配置文件,设置监控的master和访问密码
#vim sentinel-26379.conf port 26379 logfile "/Data/logs/redis/sentinel.log" sentinel announce-ip 10.66.1.9 sentinel monitor mymaster 127.0.0.1 6379 2 sentinel auth-pass mymaster pass*** sentinel down-after-milliseconds mymaster 15000 sentinel failover-timeout mymaster 900000
现在启动master服务
#/Data/local/redis-3.0.5/src/redis-server /Data/local/redis-3.0.5/etc/redis-6379.conf #/Data/local/redis-3.0.5/src/redis-sentinel /Data/local/redis-3.0.5/etc/sentinel-26379.conf &
现在主要的redis和哨兵进程已经启动了,接下来要启用redis从机和其他哨兵进程,我们换一台服务器进行
也是照旧先拷贝redis.conf和sentinel.conf
#cd /Data/local/redis-3.0.5 #cp redis.conf etc/redis-16379.conf && cp sentinel.conf etc/sentinel-36379.conf
接下来设置redis从机配置文件,同样设置访问密码,设置master主机访问权限
假设从机的ip是10.66.1.98
#cd etc #vim redis-6379.conf daemonize yes pidfile /var/run/redis-6379.pid port 16379 bind 10.66.1.98 requirepass pass*** slaveof 10.66.1.9 6379 masterauth pass***
设置sentinel配置文件,设置监控的master和访问密码
#vim sentinel-36379.conf port 36379 logfile "/Data/logs/redis/sentinel.log" sentinel announce-ip 10.66.1.98 sentinel monitor mymaster 10.66.1.9 6379 2 sentinel auth-pass mymaster pass*** <pre name="code" class="html">sentinel down-after-milliseconds mymaster 15000 sentinel failover-timeout mymaster 900000
现在启动slave服务
#/Data/local/redis-3.0.5/src/redis-server /Data/local/redis-3.0.5/etc/redis-6379.conf #/Data/local/redis-3.0.5/src/redis-sentinel /Data/local/redis-3.0.5/etc/sentinel-36379.conf &
现在主从都启动好了,双哨兵进程也启动了,接下来可以手动测试一下redis挂掉的情况,很简单,把主机上的redis master kill掉就行了
#pkill redis-server如果此时telnet到主机的26379端口,就能看到sentinel的输出信息
10914:X 31 May 17:58:26.108 # +sdown master mymaster 10.66.1.9 6379 10914:X 31 May 17:58:26.242 # +new-epoch 2 10914:X 31 May 17:58:26.245 # +vote-for-leader 62bb8d23d060c4c445d623e03acf6304ac4a0aea 2 10914:X 31 May 17:58:27.276 # +odown master mymaster 10.66.1.9 6379 #quorum 2/2 10914:X 31 May 17:58:27.276 # Next failover delay: I will not start a failover before Tue May 31 18:28:26 2016 10914:X 31 May 17:58:27.444 # +config-update-from sentinel 10.66.1.98:36379 10.66.1.98 36379 @ mymaster 10.66.1.9 6379 10914:X 31 May 17:58:27.444 # +switch-master mymaster 10.66.1.9 6379 10.66.1.98 6379
sdown,主观下线(Subjectively Down, 简称 SDOWN)指的是单个 Sentinel 实例对服务器做出的下线判断
odown,客观下线(Objectively Down, 简称 ODOWN)指的是多个 Sentinel 实例在对同一个服务器做出 SDOWN 判断, 并且通过SENTINEL is-master-down-by-addr 命令互相交流之后, 得出的服务器下线判断。 (一个 Sentinel 可以通过向另一个 Sentinel 发送 SENTINEL is-master-down-by-addr 命令来询问对方是否认为给定的服务器已下线。)
switch-master,表示开始发送切换master指令了
这里就切换完成了,telnet到从机查看
info Replication # Replication role:master connected_slaves:0
已经变成主了
再次启动本来的redis主机,并且telnet到本来的主机查看
info Replication # Replication role:slave master_host:10.66.1.98 master_port:6379 master_link_status:up
本来的主机已经变成从了
接下来编辑redis-sentinel的client-reconfig-script脚本,client-reconfig-script脚本如果配置了,在sentinel failover时会执行,用于手动做一些主从切换的操作,比如切换VIP(虚拟IP)指向,发送短信通知等。
本文通过添加host实现ip指向的定义:
#vim /etc/hosts 10.66.1.9 redis.zhibo.com
client-reconfig-script脚本内容:
echo "Master move from $4:$5 to $6:$7" >> /Data/logs/redis/sentinel.log
sed -i '/redis.zhibo.com/d' /etc/hosts
sed -i '$a '$6' redis.zhibo.com' /etc/hosts
client-reconfig-script脚本会在选举出做switch操作的sentinel机上执行一次,在其他运行sentinel的集群成员机上也会各执行一次,这样所有集群机上访问redis.zhibo.com这个域名都会指向正常运行的redis的ip上去
另一种方法是,客户端代码服务器设立一个可访问的http api接口,调用client-reconfig-script脚本时访问api,通知redis可用地址切换,由代码服务器自行处理ip切换
本文就不再赘述了
相关文章推荐
- centos6.7 安装redis
- redis的持久化(RDB和AOF方式)
- nginx-tomcat负载均衡redis-session共享,静态资源分离
- 《Redis设计与实现》[第二部分]单机数据库的实现-C源码阅读(一)
- linux下的redis安装以及php添加redis扩展
- nginx-tomcat负载均衡redis-session共享
- Redis学习笔记(八)Redis存储Tomcat集群的Session
- 定时任务
- Redis学习笔记(七)nginx+tomcat反向代理下使用tomcat-redis-session-manager进行session共享中值得注意的一个问题
- Redis学习笔记(六)Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享
- Redis基础教程第5节 远程访问 Redis 基于 C#/Python
- redis 主从切换
- Linux整合phpredis 详细笔记
- CentOS中redis以及python中redis模块的安装
- 底层实现-ziplist压缩列表
- Redis系列-安装部署维护篇
- Redis系列-远程连接redis并给redis加锁
- Redis系列-存储篇string主要操作函数小结
- Redis系列-存储篇hash主要操作函数小结
- Redis系列-存储篇list主要操作函数小结