Redis哨兵模式(sentinel)部署
1 主机环境
我这里使用的操作系统是centos 6.5,安装在vmware上,共三台。
| 主机名 | IP | 操作系统 | 用户名 | 安装目录 |
|---|---|---|---|---|
| node1 | 192.168.1.101 | centos 6.5 | wxyuan | /redis |
| node2 | 192.168.1.102 | centos 6.5 | wxyuan | /redis |
| node3 | 192.168.1.103 | centos 6.5 | wxyuan | /redis |
2 进程端口规划
| node1 | node2 | node3 |
|---|---|---|
| redis,6379 | redis,6379 | redis,6379 |
| sentinel,26379 | sentinel,26379 | sentinel,26379 |
redis下载地址:http://download.redis.io/releases/,选择需要的版本下载,我使用的版本是redis-3.2.1.tar.gz
3 安装redis
3.1 检查是否安装了gcc
[wxyuan@node1 ~]$ rpm -qa|grep gcc
libgcc-4.4.7-4.el6.x86_64
gcc-4.4.7-4.el6.x86_64
gcc-c++-4.4.7-4.el6.x86_64
如果未安装,可使用yum install gcc 命令安装
3.2 编译安装redis
(1). 解压redis安装包tar -zxvf redis-3.2.1.tar.gz
(2). 编译安装redis
[wxyuan@node1 ~]$ cd redis-3.2.1
[wxyuan@node1 ~]$ make
[wxyuan@node1 ~]$ make install PREFIX=/redis # PREFIX指定安装目录
安装完成后,在/redis目录下会新增bin目录,这里面是启动redis服务的相关脚本。
创建/redis/conf、/redis/data、/redis/log目录。
3.3 修改配置文件redis.conf
拷贝redis-3.2.1/redis.conf文件到/redis/conf目录下,编辑/redis/conf/redis.conf文件
node1主机上修改内容如下
bind 192.168.1.101 127.0.0.1 #绑定多个IP,既可以远程访问,也可以本地客户端访问
port 6379 #指定端口
appendonly yes #开启aof持久化
daemonize yes
pidfile "/redis/redis_6379.pid"
logfile "/redis/log/redis_6379.log"
dir "/redis/data"
node2主机上修改内容如下
bind 192.168.1.102 127.0.0.1 #绑定多个IP,既可以远程访问,也可以本地客户端访问
port 6379 #指定端口
appendonly yes #开启aof持久化
daemonize yes
pidfile "/redis/redis_6379.pid"
logfile "/redis/log/redis_6379.log"
dir "/redis/data"
slaveof 192.168.1.101 6379
node3主机上修改内容如下
bind 192.168.1.103 127.0.0.1 #绑定多个IP,既可以远程访问,也可以本地客户端访问
port 6379 #指定端口
appendonly yes #开启aof持久化
daemonize yes
pidfile "/redis/redis_6379.pid"
logfile "/redis/log/redis_6379.log"
dir "/redis/data"
slaveof 192.168.1.101 6379
3.4 增加配置文件sentinel.conf
在/redis/conf下增加配置文件sentinel.conf,文件内容为:
node1主机上内容如下
bind 192.168.1.101
port 26379
daemonize yes
logfile "/redis/log/sentinel.log"
dir "/redis/data"
sentinel monitor mymaster 192.168.1.101 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
node2主机上内容如下
bind 192.168.1.102
port 26379
daemonize yes
logfile "/redis/log/sentinel.log"
dir "/redis/data"
sentinel monitor mymaster 192.168.1.101 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
node3主机上内容如下
bind 192.168.1.103
port 26379
daemonize yes
logfile "/redis/log/sentinel.log"
dir "/redis/data"
sentinel monitor mymaster 192.168.1.101 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
部分参数说明:
(1) sentinel monitor <masterName> <ip> <port> <quorum>
-masterName 指定maser的名字
-ip 指定master的IP
-port 指定maseter的端口
-quorum quorum是Sentinel需要协商同意master是否可到达的数量。为了真正的标记slave为失败,并最终是否需要启动一个故障转移进程。无论怎样,quorum只用于检测故障。为了实际执行故障转移,Sentinel需要选举leader并进行授权。这只发生在大多数Sentinel进程的选举。
(2) down-after-milliseconds选项指定了 Sentinel 认为服务器已经断线所需的毫秒数。
如果服务器在给定的毫秒数之内, 没有返回 Sentinel 发送的 PING 命令的回复, 或者返回一个错误, 那么 Sentinel 将这个服务器标记为主观下(subjectively down,简称 SDOWN )。
不过只有一个 Sentinel 将服务器标记为主观下线并不一定会引起服务器的自动故障迁移: 只有在足够数量的 Sentinel 都将一个服务器标记为主观下线之后, 服务器才会被标记为客观下线(objectively down, 简称 ODOWN ), 这时自动故障迁移才会执行。
(3) parallel-syncs选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。
关于sentinel的详细配置说明请参考Sentinel配置详解
4 启动redis和sentinel
在三台主机上分别执行下述命令,启动redis服务和sentinel服务
[wxyuan@node1 ~]$ cd /redis
[wxyuan@node1 redis$ ./bin/redis-server conf/redis.conf
[wxyuan@node1 redis$ ./bin/redis-sentinel conf/sentinel.conf
5 故障转移测试
在node1使用redis-cli命令查看主从信息
[wxyuan@node1 redis]$ ./bin/redis-cli -p 6379 info replication
# Replication
role:master
connected_slaves:2
可以看到node1上的redis进程为master,现在kill掉node1上的redis进程,观察故障转移情况。
使用redis-cli命令查看主从信息
[wxyuan@node1 redis]$ ./bin/redis-cli -p 6379 -h 192.168.1.102 info replication
# Replication
role:master
connected_slaves:1
slave1:ip=192.168.1.103,port=6379,state=online,offset=13836,lag=1
[wxyuan@node1 redis]$ ./bin/redis-cli -p 6379 -h 192.168.1.103 info replication
# Replication
role:slave
master_host:192.168.1.102
master_port:6379
可以看到node2上的redis进程已经变成了master。重启node1上的redis进程后,会发现该redis进程已经变成了slave。
另外,可以通过sentinel.log文件观察故障转移过程。
注意:此时打开sentinel文件,会发现内容已经被改变了;sentinel进程启动后,会根据redis进程的运行情况修改sentinel.conf文件内容。
Redis哨兵模式(sentinel)部署的更多相关文章
- Redis高可用之哨兵模式Sentinel配置与启动(五)
0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...
- Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析
Redis 的几种常见使用方式包括: 单机模式 主从模式 哨兵模式(sentinel) 集群模式(cluster) 第三方模式 单机模式 Redis 单副本,采用单个 Redis 节点部署架构,没有备 ...
- [Redis] Redis哨兵模式部署 - zz胖的博客
1. 部署Redis集群 redis的安装及配置参考[redis部署] 本文以创建一主二从的集群为例. 1.1 部署与配置 先创建sentinel目录,在该目录下创建8000,8001,8002三个以 ...
- 【转】Redis哨兵(Sentinel)模式
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用.这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式. 一.哨兵 ...
- Redis哨兵(Sentinel)模式
Redis哨兵(Sentinel)模式 主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用.这不是一种推荐的方式 ...
- 【集群】Redis哨兵(Sentinel)模式
主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用.这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式. 一.哨兵 ...
- Redis 哨兵模式(Sentinel)
上一篇我们介绍了 redis 主从节点之间的数据同步复制技术,通过一次全量复制和不间断的命令传播,可以达到主从节点数据同步备份的效果,一旦主节点宕机,我们可以选择一个工作正常的 slave 成为新的主 ...
- Springboot2.x集成Redis哨兵模式
Springboot2.x集成Redis哨兵模式 说明 Redis哨兵模式是Redis高可用方案的一种实现方式,通过哨兵来自动实现故障转移,从而保证高可用. 准备条件 pom.xml中引入相关jar ...
- Spring Boot 入门(十):集成Redis哨兵模式,实现Mybatis二级缓存
本片文章续<Spring Boot 入门(九):集成Quartz定时任务>.本文主要基于redis实现了mybatis二级缓存.较redis缓存,mybaits自带缓存存在缺点(自行谷歌) ...
- 搭建redis哨兵模式
搭建redis哨兵模式,一主两从三哨兵 1.从官网下载redis安装包:此处是redis-5.0.7.tar.gz 2.上传到目录 /utxt/soft 3.解压 4.cd /utxt/soft/ ...
随机推荐
- Java基于SSM的个人博客系统(源码 包含前后台)
@ 目录 系统简介 系统运行截图 核心代码 写在最后 系统简介 技术点:Java.JSP.SSM框架,实现了个人博客系统 用户角色分为:普通用户.管理员.系统管理员 功能:发博客.博客分类.博客删除. ...
- C#连接Oracle数据库,通过EF自动生成与数据库表相关的实体类
C#连接Oracle数据库,通过EF自动生成与数据库表相关的实体类 ps:如需转载,请在转载文章明显处,i标注作者和原文地址 一.准备条件 需要自己电脑上已经安装了Oracle数据库,并且已经创建了相 ...
- 图论算法(五)最小生成树Prim算法
最小生成树\(Prim\)算法 我们通常求最小生成树有两种常见的算法--\(Prim\)和\(Kruskal\)算法,今天先总结最小生成树概念和比较简单的\(Prim\)算法 Part 1:最小生成树 ...
- eric4 编译 中文 控件 报错 解决
eric4 在qt设计师界面, 设计 中文名控件 时,有时候不能编译,报错如下: 解决办法: 打开eric4---setting----preferences 按下图操作后 ,重新启动eric4即可解 ...
- Nginx学习简记_part2
第4章:nginx配置实例 -反向代理 4.1 反向代理实例一 实现效果:使用 nginx 反向代理,访问 www.123.com 直接跳转到 127.0.0.1:8080 4.1.1 实验代码 1) ...
- 手把手教你使用VUE+SpringMVC+Spring+Mybatis+Maven构建属于你自己的电商系统之vue后台前端框架搭建——猿实战01
猿实战是一个原创系列文章,通过实战的方式,采用前后端分离的技术结合SpringMVC Spring Mybatis,手把手教你撸一个完整的电商系统,跟着教程走下来,变身猿人找到工作不是 ...
- paramiko 模块 ---- python2.7
模拟远程执行命令: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import paramiko #设置日志记录 paramiko ...
- Jenkins(1)—— 部署安装
最近有聊到接口自动化,持续集成这方面,所以想从持续集成工具Jenkins作为切入点来学习一下 一.jenkins概念 Jenkins是一个开源的.可扩展的持续集成.交付.部署(软件/代码的编译.打包. ...
- 团队作业5:Alpha版本测试和发布(歪瑞古德小队)
目录 一.项目文档和代码 二.Alpha版本测试报告 2.1 功能测试 2.1.1 功能列表 2.1.2 场景测试 2.1.3 测试结果 2.1.4 bug清单 2.2 兼容性测试 2.3 性能测试 ...
- OMG,12 个精致的 Java 字符串操作小技巧,学它
字符串可以说是 Java 中最具有代表性的类了,似乎没有之一哈,这就好像直播界的李佳琪,脱口秀中的李诞,一等一的大哥地位.不得不承认,最近吐槽大会刷多了,脑子里全是那些段子,写文章都有点不由自主,真的 ...