1.准备文件

1.解压redis-4.0.1.tar.gz的redis文件

2.新建目录 redis-cluster以及子目录 master-6379 slave-7000 slave-7001

3.复制redis目录下的redis.conf配置文件到三个目录下各一份

redis_6379.conf redis_7000.conf redis_7001.conf

2.修改配置文件:1master +2slave + 3sentinel

4.1 maste和slave的配置

1)redis_6379.conf

bind 127.0.0.1 这里也可以不配置

port 6379

pidfile /var/run/redis_6379.pid

maxmemory 1024*1024*10

2)redis_7000.conf

bind 127.0.0.1 这里也可以不配置

port 7000

pidfile /var/run/redis_7000.pid

maxmemory 1024*1024*10

3)redis_7001.conf

bind 127.0.0.1 这里也可以不配置

port 7001

pidfile /var/run/redis_7001.pid

maxmemory 1024*1024*10

4.2 sentinel的配置:

复制redis目录下的sentinel.conf配置文件到master-6379 slave-7000 slave-7001三个目录下各一份

1)sentinel_26379.conf

port 26379

sentinel myid 94a9064543f19c638d6e9a9ee2b4c06150743216  这一行如果一直一定要删掉,这个会动生成

# sentinel parallel-syncs <master-name> <numslaves>

#sentinel monitor <master-name> <ip> <redis-port> <quorum>

sentinel monitor mymaster 127.0.0.1 6379 2

sentinel parallel-syncs mymaster  1

# sentinel failover-timeout <master-name> <milliseconds>
sentinel failover-timeout mymaster 3000

2)sentinel_27000conf

port 27000

sentinel myid 94a9064543f19c638d6e9a9ee2b4c06150743216  这一行如果一直一定要删掉,这个会动生成

# sentinel parallel-syncs <master-name> <numslaves>

#sentinel monitor <master-name> <ip> <redis-port> <quorum>

sentinel monitor mymaster 127.0.0.1 6379 2

sentinel parallel-syncs mymaster  1

# sentinel failover-timeout <master-name> <milliseconds>
sentinel failover-timeout mymaster 3000

3)sentinel_27001conf

port 27001

sentinel myid 94a9064543f19c638d6e9a9ee2b4c06150743216  这一行如果一直一定要删掉,这个会动生成

# sentinel parallel-syncs <master-name> <numslaves>

#sentinel monitor <master-name> <ip> <redis-port> <quorum>

sentinel monitor mymaster 127.0.0.1 6379 2

sentinel parallel-syncs mymaster  1

# sentinel failover-timeout <master-name> <milliseconds>
sentinel failover-timeout mymaster 3000

依次启动redis服务

启动命令:./redis-4.0.1/src/reids-server redis-cluster/redis-master/redis_6379.conf  其他的依次类推启动

查看服务器结果:

root@db:~/mysoft/soft# ./redis-4.0.1/src/redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=7000,state=online,offset=914454,lag=0
slave1:ip=127.0.0.1,port=7001,state=online,offset=914188,lag=1

master_replid:631cc91ab9e66d1555f7ed526d50219663b6bc19
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:914454
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:537727

查看sentinel

root@hecs-x-medium-2-linux-20200620124443:~/mysoft/soft# ./redis-4.0.1/src/redis-cli -h 127.0.0.1 -p 26379
127.0.0.1:26379> info sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:name=mymaster,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3

slaves=2,sentinels=3 才表示配置成功,否则无法进行主从切换,因为前面配置了 sentinel monitor <master-name> <ip> <redis-port> <quorum> quorum=2,表示有两个sentinel认为主节点宕机就下掉主节点,重新选举进行主从切换

注意:

1.都监听mater,只要改下端口号就好,后面sentinel自动同步监听其他节点以及互相监听

2.配置文件sentinel.conf中如果有myid一定要删掉,不然会导致主从切换失败

查看sentinel启动后,配置文件的末尾处的变化:每个sentinel的配置文件末尾都会追加相同的配置

# Generated by CONFIG REWRITE
sentinel leader-epoch mymaster 0
sentinel known-slave mymaster 127.0.0.1 7000
sentinel known-slave mymaster 127.0.0.1 7001
sentinel known-sentinel mymaster 127.0.0.1 27001 efd086631857c7295cfc50a37f5c0796bc3b7549
sentinel known-sentinel mymaster 127.0.0.1 27000 f0b7aeca04b7b27a74c87c7021f8a72052dc8c41
sentinel current-epoch 0

3.查看sentinel控制台日志:

26379

5445:X 12 Jan 23:33:01.599 # Sentinel ID is 674501a329a678b914a3bb0483ba223ede535c94
5445:X 12 Jan 23:33:01.599 # +monitor master mymaster 127.0.0.1 6379 quorum 2
5445:X 12 Jan 23:33:17.057 * +sentinel-invalid-addr sentinel f0b7aeca04b7b27a74c87c7021f8a72052dc8c41 127.0.0.1 27000 @ mymaster 127.0.0.1 6379
5445:X 12 Jan 23:33:17.057 * +sentinel sentinel 38dfc2e01c118fd897378b5c121912fc266923a8 127.0.0.1 27000 @ mymaster 127.0.0.1 6379
5445:X 12 Jan 23:33:25.580 * +sentinel-invalid-addr sentinel efd086631857c7295cfc50a37f5c0796bc3b7549 127.0.0.1 27001 @ mymaster 127.0.0.1 6379
5445:X 12 Jan 23:33:25.580 * +sentinel sentinel d315173e7739c37759806c5b243752b755ca7c91 127.0.0.1 27001 @ mymaster 127.0.0.1 6379

  

27000

5451:X 12 Jan 23:33:15.031 # Sentinel ID is 38dfc2e01c118fd897378b5c121912fc266923a8
5451:X 12 Jan 23:33:15.031 # +monitor master mymaster 127.0.0.1 6379 quorum 2
5451:X 12 Jan 23:33:15.032 * +sentinel-invalid-addr sentinel 94a9064543f19c638d6e9a9ee2b4c06150743216 127.0.0.1 26379 @ mymaster 127.0.0.1 6379
5451:X 12 Jan 23:33:15.032 * +sentinel sentinel 674501a329a678b914a3bb0483ba223ede535c94 127.0.0.1 26379 @ mymaster 127.0.0.1 6379
5451:X 12 Jan 23:33:25.503 * +sentinel-invalid-addr sentinel efd086631857c7295cfc50a37f5c0796bc3b7549 127.0.0.1 27001 @ mymaster 127.0.0.1 6379
5451:X 12 Jan 23:33:25.503 * +sentinel sentinel d315173e7739c37759806c5b243752b755ca7c91 127.0.0.1 27001 @ mymaster 127.0.0.1 6379
5451:X 12 Jan 23:33:45.043 # +sdown sentinel 94a9064543f19c638d6e9a9ee2b4c06150743216 127.0.0.1 0 @ mymaster 127.0.0.1 6379
5451:X 12 Jan 23:33:54.513 # +sdown sentinel efd086631857c7295cfc50a37f5c0796bc3b7549 127.0.0.1 0 @ mymaster 127.0.0.1 6379

  

27001

5455:X 12 Jan 23:33:23.440 # Sentinel ID is d315173e7739c37759806c5b243752b755ca7c91
5455:X 12 Jan 23:33:23.441 # +monitor master mymaster 127.0.0.1 6379 quorum 2
5455:X 12 Jan 23:33:23.461 * +sentinel-invalid-addr sentinel f0b7aeca04b7b27a74c87c7021f8a72052dc8c41 127.0.0.1 27000 @ mymaster 127.0.0.1 6379
5455:X 12 Jan 23:33:23.461 * +sentinel sentinel 38dfc2e01c118fd897378b5c121912fc266923a8 127.0.0.1 27000 @ mymaster 127.0.0.1 6379
5455:X 12 Jan 23:33:24.264 * +sentinel-invalid-addr sentinel 94a9064543f19c638d6e9a9ee2b4c06150743216 127.0.0.1 26379 @ mymaster 127.0.0.1 6379
5455:X 12 Jan 23:33:24.264 * +sentinel sentinel 674501a329a678b914a3bb0483ba223ede535c94 127.0.0.1 26379 @ mymaster 127.0.0.1 6379
5455:X 12 Jan 23:33:53.462 # +sdown sentinel f0b7aeca04b7b27a74c87c7021f8a72052dc8c41 127.0.0.1 0 @ mymaster 127.0.0.1 6379
5455:X 12 Jan 23:33:53.462 # +sdown sentinel 94a9064543f19c638d6e9a9ee2b4c06150743216 127.0.0.1 0 @ mymaster 127.0.0.1 6379

 上面打印的日志显示sentinel处理会自动监听master和slave,还会互相监听

4.进行主从切换看日志

26379

5445:X 12 Jan 23:33:01.599 # Sentinel ID is 674501a329a678b914a3bb0483ba223ede535c94
5445:X 12 Jan 23:33:01.599 # +monitor master mymaster 127.0.0.1 6379 quorum 2
5445:X 12 Jan 23:33:17.057 * +sentinel-invalid-addr sentinel f0b7aeca04b7b27a74c87c7021f8a72052dc8c41 127.0.0.1 27000 @ mymaster 127.0.0.1 6379
5445:X 12 Jan 23:33:17.057 * +sentinel sentinel 38dfc2e01c118fd897378b5c121912fc266923a8 127.0.0.1 27000 @ mymaster 127.0.0.1 6379
5445:X 12 Jan 23:33:25.580 * +sentinel-invalid-addr sentinel efd086631857c7295cfc50a37f5c0796bc3b7549 127.0.0.1 27001 @ mymaster 127.0.0.1 6379
5445:X 12 Jan 23:33:25.580 * +sentinel sentinel d315173e7739c37759806c5b243752b755ca7c91 127.0.0.1 27001 @ mymaster 127.0.0.1 6379
5445:X 12 Jan 23:33:47.078 # +sdown sentinel f0b7aeca04b7b27a74c87c7021f8a72052dc8c41 127.0.0.1 0 @ mymaster 127.0.0.1 6379
5445:X 12 Jan 23:33:55.308 # +sdown sentinel efd086631857c7295cfc50a37f5c0796bc3b7549 127.0.0.1 0 @ mymaster 127.0.0.1 6379
5445:X 12 Jan 23:37:30.061 # +sdown master mymaster 127.0.0.1 6379
5445:X 12 Jan 23:37:30.188 # +new-epoch 1
5445:X 12 Jan 23:37:30.191 # +vote-for-leader d315173e7739c37759806c5b243752b755ca7c91 1
5445:X 12 Jan 23:37:31.171 # +odown master mymaster 127.0.0.1 6379 #quorum 3/2
5445:X 12 Jan 23:37:31.171 # Next failover delay: I will not start a failover before Tue Jan 12 23:37:36 2021
5445:X 12 Jan 23:37:31.316 # +config-update-from sentinel d315173e7739c37759806c5b243752b755ca7c91 127.0.0.1 27001 @ mymaster 127.0.0.1 6379
5445:X 12 Jan 23:37:31.316 # +switch-master mymaster 127.0.0.1 6379 127.0.0.1 7000
5445:X 12 Jan 23:37:31.317 * +slave slave 127.0.0.1:7001 127.0.0.1 7001 @ mymaster 127.0.0.1 7000
5445:X 12 Jan 23:37:31.317 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 7000
5445:X 12 Jan 23:38:01.373 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 7000

  上面显示切换 7000端口的机器为master

slave-7000机器的日志

5302:M 12 Jan 23:37:30.400 # Setting secondary replication ID to 1be1283f0bfec0e63832668a5a0fe738359dd550, valid up to offset: 593645. New replication ID is 11c02d28f2f002abc551a2abfaa58a33863977cf
5302:M 12 Jan 23:37:30.400 * Discarding previously cached master state.
5302:M 12 Jan 23:37:30.400 * MASTER MODE enabled (user request from 'id=14 addr=127.0.0.1:54446 fd=12 name=sentinel-d315173e-cmd age=247 idle=0 flags=x db=0 sub=0 psub=0 multi=3 qbuf=0 qbuf-free=32768
obl=36 oll=0 omem=0 events=r cmd=exec')
5302:M 12 Jan 23:37:30.401 # CONFIG REWRITE executed with success.
5302:M 12 Jan 23:37:31.928 * Slave 127.0.0.1:7001 asks for synchronization
5302:M 12 Jan 23:37:31.928 * Partial resynchronization request from 127.0.0.1:7001 accepted. Sending 422 bytes of backlog starting from offset 593645

  r

Redis的sentinel(哨兵)部署的更多相关文章

  1. Redis笔记-Sentinel哨兵模式

    Redis以主从的模式搭建集群后,如果主节点Master挂掉,虽然可以实现将备用节点Slave切换成主节点,但是Redis本身并没有自动监控机制,需要借助Sentinel哨兵模式,实现监控并实现自动切 ...

  2. SpringBoot进阶教程(三十)整合Redis之Sentinel哨兵模式

    Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如master宕机了,redis本身(以及其很多客户端)都没有实现自动进行主备切换,而 ...

  3. 【Redis】Sentinel 哨兵模式

    Sentinel(哨兵模式) 目录 Sentinel(哨兵模式) 哨兵模式的三个定时任务 Sentinel(哨兵)与Sentinel .主服务器.从服务器之间的连接 检测下线状态 选择领头 Senti ...

  4. redis主从配置+sentinel哨兵

    redis主从配置+sentinel哨兵 1:编译环境准备 1.1环境确认 Redis是一个开源.支持网络.基于内存.键值对存储数据库,使用ANSI C编写.所以在搭建Redis服务器时需要C语言的编 ...

  5. Redis学习笔记(十四)Sentinel(哨兵)(上)

    最近谈到Redis就会听到哨兵模式,工作期间同事也分享过关于哨兵模式的知识,但由于工作忙(给自己找个借口)没有没认真看,现在恶补下,老样子还是分上篇应用,下篇看实现过程,下面我们来看下哨兵到底是啥? ...

  6. Redis学习笔记(十五)Sentinel(哨兵)(中)

    上一篇 我们模拟了单机器下哨兵模式的搭建,那么接下来我们看下哨兵模式的实现与工作. 为什么又分成两篇呢?因为篇幅太长(偷懒),再一个这篇主要说的是Sentinel的初始化以及信息交换,下一篇着重说下状 ...

  7. Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)

    一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境和脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网 ...

  8. (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

    参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...

  9. Redis哨兵模式(sentinel)部署记录(主从复制、读写分离、主从切换)

    部署环境: CentOS7.5  192.168.94.11 (master) 192.168.94.22 (slave0) 192.168.94.33 (slave1) 192.168.94.44 ...

随机推荐

  1. Linux下安装视频转换工具ffmpeg

    ffmpeg下载地址:http://ffmpeg.org/releases/ 1.首先需要安装解码器集合(包含安装ffmpeg用到的所有解码器)下载地址: 链接:https://pan.baidu.c ...

  2. web移动端css reset

    通用版css reset,pc端使用只需要修改html{font-size: 10px;}为html{font-size: 12px;} @charset "utf-8"; htm ...

  3. 【Codeforces 715C】Digit Tree(点分治)

    Description 程序员 ZS 有一棵树,它可以表示为 \(n\) 个顶点的无向连通图,顶点编号从 \(0\) 到 \(n-1\),它们之间有 \(n-1\) 条边.每条边上都有一个非零的数字. ...

  4. Spark/Scala实现推荐系统中的相似度算法(欧几里得距离、皮尔逊相关系数、余弦相似度:附实现代码)

    在推荐系统中,协同过滤算法是应用较多的,具体又主要划分为基于用户和基于物品的协同过滤算法,核心点就是基于"一个人"或"一件物品",根据这个人或物品所具有的属性, ...

  5. 四、git学习之——分支管理、解决冲突

    分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇宙合并 ...

  6. Python之Windows服务

    1.首先要安装pywin32-220.win-amd64-py2.7.exe 2. SvcDoRun:服务启动的时候会执行的方法 SvcStop:服务停止的时候会执行的方法 # coding=utf- ...

  7. uniapp保存图片到本地(APP和微信小程序端)

    uniapp实现app端和微信小程序端图片保存到本地,其它平台未测过,原理类似. 微信小程序端主要是权限需要使用button的开放能力来反复调起,代码如下: 首先是条件编译两个平台的按钮组件: < ...

  8. git基础使用(超级详细)

    使用git前的步骤: 1. 安装git (安装步骤省略) 2. 使用git设置用户名和邮箱 git config --global user.name "Your Name" gi ...

  9. ORACLE 10g、11g批量刷新用户密码

    一.ORACLE 10g批量刷新用户密码 select 'alter user ' || username ||' identified by values '''||password ||''';' ...

  10. SpringBoot2.x集成Quartz实现定时任务管理(持久化到数据库)

    1. Quartz简介   Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目.   Quartz是一个完全由Java编写的开源作业调度框架,为在Java应 ...