1.环境说明

我们将使用192.168.220.128、192.168.220.129两台机器搭建sentinel交叉主从为例

当前我们已在192.168.220.128上按redis安装教程安装了redis,192.168.220.129上没有安装

2. 配置128上的slave

cd /usr/myapp/redis-2.8.17/conf   #进入配置文件所在目录
cp redis.conf redis-6379.conf     #128上的master所用配置文件
cp redis.conf redis-6380.conf     #128上的slave所用配置文件#配置128上的6380从属129的6379端口
cat >> redis-6380.conf << EOF
slaveof 192.168.220.129 6379
EOF

3. 配置128上的sentinel

2.1修改conf/redis-6379.conf和conf/redis-6380.conf,配置masterauth字段值

2.2修改conf/sentinel.conf,配置以下字段的值

port 26379
sentinel announce-ip 192.168.220.128
dir /usr/myapp/redis-2.8.17/datasentinel monitor mymaster1 192.168.220.128 6379 2
sentinel down-after-milliseconds mymaster1 30000
sentinel parallel-syncs mymaster1 2
sentinel failover-timeout mymaster1 180000
sentinel auth-pass mymaster1 yourpasswdsentinel monitor mymaster2 192.168.220.129 6379 2
sentinel down-after-milliseconds mymaster2 30000
sentinel parallel-syncs mymaster2 2
sentinel failover-timeout mymaster2 180000
sentinel auth-pass mymaster2 yourpasswd

mymaster1和mymaster2可理解为后边master的别名,如果还有其他master类似地添加上即可。

2.3为了方便把sentinel启动脚本写到adm目录下

cd admcat > start_sentinel << EOF
../bin/redis-sentinel ../conf/sentinel.conf
EOF

4. 在129部署redis

3.1将128上的redis打包发送到129上

tar -cf redis.tar redis-2.8.17
scp redis.tar root@192.168.220.129:/usr/myapp

3.2修改配置文件中的ip地址

修改conf/redis-6379.conf和conf/redis-6380.conf,将bind的IP修改为本机网卡IP:

修改conf/redis-6380.conf中的slaveof,将129的6380配置为从属128的6379

修改conf/sentinel.conf,将sentinel announce-ip值修改为本机IP

5. 启动集群

到128、129和130三台机器redis的adm文件夹下分别执行./start_redis和./start_sentinel,启动redis和sentinel服务即可。

redis是数据库服务,sentinel相当于哨兵作用,两者相互独立;sentinel监视redis服务如果sentinel查看到自己参与管理的master停止,则会与其他参与管理的sentinel共同商量,从原master下属的slave中选出一个来担任新的master。

如果redis服务停止之前是master,当其重新启动后不再是master而是变成各sentinel新选举出来的master的slave。

master和slave的区别是master可读写,slave只可读;其实通过配置slave也可读写,所以最为严谨的说法是master和slave的区别是,slave同步master的操作而master不会同步slave的操作slave之间也不会互相同步操作。

6. 应用连接集群

在哨兵模式中,应用应该往主里写数据但是应用是不知道哪个是主那个是从的,一个个去连接然后查看是主是从的做法也是不够合理的。

在实际使用中是通过sentinel来获取哪个是主哪个是从的。

Set sentinels = new HashSet();
sentinels.add(new HostAndPort("192.168.220.128", 26379).toString());
sentinels.add(new HostAndPort("192.168.220.129", 26379).toString());
sentinels.add(new HostAndPort("192.168.220.130", 26379).toString());
JedisSentinelPool sentinelPool = new JedisSentinelPool("mymaster", sentinels);
Jedis master = sentinelPool.getResource();
master.set("name","张三");
String value = master2.get("name");

参考:

http://blog.csdn.net/ownfire/article/details/51546543

https://segmentfault.com/a/1190000002680804

http://blog.csdn.net/xianymo/article/details/46412271

转载于:https://www.cnblogs.com/lsdb/p/7285847.html

redis sentinel哨兵模式集群搭建教程相关推荐

  1. redis经典三节点高可用哨兵模式集群搭建

    生产环境下,为保证redis的高可用性,通常会搭建集群,redis集群的好处无需多说,提升单节点的读写性能从而整体提升并发效率,达到整体QPS的提升,同时,多个节点可以实现数据共享,在集群模式下,从节 ...

  2. redis 主从 + 哨兵模式集群部署(3台机器)

    前言 本文只讲如何部署,然后会贴出具体配置,以及如何验证是否部署成功(redis 版本采用 4.0.6 ).既不会介绍 redis 如何安装(本人采用源码安装方式),也不会涉及主从复制,哨兵模式具体原 ...

  3. Redis 3.0.2集群搭建以及相关问题汇总

    Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上 (2)在线动态添加.删除redis节点,不用停 ...

  4. redis 一般启动几个 哨兵_Redis6.0主从、哨兵、集群搭建和原理

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构点击右侧关注,大数据开发领域最强公众号! 暴走大数据点击右侧关注,暴走大数据! 由 ...

  5. Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群

    Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群 前言 建议 官方译文 什么是 Sentinel? Sentinel 优点 Redis 配置文件 maste ...

  6. 技术实践|Redis基础知识及集群搭建(上)

    Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.本篇文章围绕Redis基础知识及集群搭建相关内容进行了分享,希 ...

  7. 【运维技术】Zookeeper单机以及集群搭建教程

    Zookeeper单机以及集群搭建教程 单机搭建 单机安装以及启动 安装zookeeper的前提是必须有java环境 # 选择目录进行下载安装 cd /app # 下载zk,可以去官方网站下载,自己上 ...

  8. 2019最新k8s集群搭建教程 (centos k8s 搭建)

    2019-k8s-centos 2019最新k8s集群搭建教程 (centos k8s 搭建) 网上全是要么过时的,要么残缺的,大多数都是2016年,2017年的文档,照着尝试了N次,各种卸了重装,最 ...

  9. kafka集群搭建教程(使用自带的zookeeper)

    kafka集群搭建教程(使用自带的zookeeper) 一.kafka简介 二.kafka名词解释 三.zookeeper与Kafka 四.kafka集群搭建前准备 1.下载 2.检验jdk 3.系统 ...

最新文章

  1. php写一个shell脚本文件格式,一篇文章学会——shell脚本编写
  2. HTML5中的localStorage用法
  3. restful 接口 安全性设计
  4. date js 半年_js Date 日期使用上的一个坑
  5. 【连载】如何掌握openGauss数据库核心技术?秘诀四:拿捏事务机制(1)
  6. Codeforces 解题报告索引
  7. Android模块化之MicroModule(微信Pins工程) 1
  8. java迭代法求圆周率用梯形_感悟数学“近似计算”之美——“望星楼”里的圆周率...
  9. steam失落的方舟入库python脚本
  10. 室内设计——KTV室内设计(包含预览图jpg和.psd文件)
  11. monk_notebook (交际德语教程 第二版 学生用书)
  12. 【DS基础】静态链表
  13. x265 编码一行,以及vbv上溢/下溢之后的处理
  14. jeecms oracle v5_jeecms二次开发总结
  15. Oracle10g卡顿,192MB内存运行win10 系统启动大约3分钟响应非常慢
  16. 十门峡旅游攻略:临安十门峡的春天
  17. 概率论的基本概念、样本空间、随机事件(二)
  18. 【LeetCode】1818. 绝对差值和
  19. Ubuntu虚拟机没有网络图标或者无法获取IP地址
  20. 我的Android进阶之旅------gt;/storage/sdcard0, /sdcard, /mnt/sdcard ,/storage/emulated/legacy 的区别...

热门文章

  1. 用户空间与内核空间,进程上下文与中断上下文[总结]
  2. 怎样提高自己的团队合作能力
  3. MySQL密码设置和重置,以及远程登入数据库
  4. VC 下 64bit 整数的显示和读取格式化字串
  5. opencv-python 图像最小外接矩形
  6. SRIO学习(七)——Direct I/O 操作(二)
  7. 虚拟机下Linux安装图解之二:虚拟机的创建
  8. python两道简单的面试题
  9. fork() 成为负担,需要淘汰
  10. RocketMQ CommitLog And Index