环境准备

在物理机上启动3台虚拟机,IP地址分别为:192.168.56.4192.168.56.5192.168.56.6

1.确保3台虚拟机的网络是相互联通的。

2.确保已经在3台虚拟机上安装了redis(本示例中使用redis-6.2.4),参考centos 6.8安装redis

3.sentinel部署架构设计如下:

启动master

192.168.56.4上修改redis配置文件内容如下:

daemonize yes
protected-mode no
port 6379
bind 192.168.56.4
loglevel debug
logfile /var/log/redis-sentinel.log

启动redis服务。

查看redis服务状态:

$ redis-cli -h 192.168.56.4 -p 6379
192.168.56.4:6379> info replication
# Replication
role:master # master节点
connected_slaves:0
master_failover_state:no-failover
master_replid:f2816f8d2bae0165e69939f2c68c7893d404afd6
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

启动slave

192.168.56.5上修改redis配置文件内容如下:

daemonize yes
protected-mode no
port 6379
bind 192.168.56.5
loglevel debug
logfile /var/log/redis-sentinel.log
replicaof 192.168.56.4 6379

启动redis服务。

查看redis服务状态:

$ redis-cli -h 192.168.56.5 -p 6379
192.168.56.5:6379> info replication
# Replication
role:slave # slave节点
master_host:192.168.56.4
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:154
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:021abd5cacf2b45ade959fdcb0e50012e108bf6a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:154
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:154

现在再来看master节点在状态:

192.168.56.4:6379> info replication
# Replication
role:master
connected_slaves:1 # 已经有slave节点连接上了
slave0:ip=192.168.56.5,port=6379,state=online,offset=28,lag=1 # slave节点信息
master_failover_state:no-failover
master_replid:021abd5cacf2b45ade959fdcb0e50012e108bf6a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:28
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28

启动哨兵

分别在三台主机上配置Redis Sentinel。

以修改master节点上的哨兵配置为例,配置内容如下:

port 26379
bind 192.168.56.4 # 注意修改IP地址
daemonize yes
logfile /var/log/redis-sentinel.log
sentinel monitor mymaster 192.168.56.4 6379 2 # sentinel监听的master节点都是相同的

完成哨兵配置修改后,依次启动各个主机上的哨兵。

$ src/redis-server sentinel.conf --sentinel

在本示例中先启动master节点的sentinel:

1648:X 21 Oct 2022 15:04:25.238 # Sentinel ID is 0e8299513272360c51c2b0a27fecd7c3e47b2ac9
1648:X 21 Oct 2022 15:04:25.238 # +monitor master mymaster 192.168.56.4 6379 quorum 2
1648:X 21 Oct 2022 15:04:25.239 * +slave slave 192.168.56.5:6379 192.168.56.5 6379 @ mymaster 192.168.56.4 6379

依次启动其他两台节点的sentinel,这时在master节点的sentinel日志中会看到如下信息:

# 有新的sentinel节点加入了
1648:X 21 Oct 2022 15:07:31.510 * +sentinel sentinel c31a742dd7b0485beff0463fcc0a15d17f31170b 192.168.56.5 26379 @ mymaster 192.168.56.4 6379
1648:X 21 Oct 2022 15:12:01.193 * +sentinel sentinel 1a0cf759c9bcde9d06e29d99064f26eb11454a09 192.168.56.6 26379 @ mymaster 192.168.56.4 6379

同时,在各个sentinel节点上都能看到自己的启动日志:

# 192.168.56.5节点的sentinel日志
1564:X 21 Oct 2022 15:07:29.478 # Sentinel ID is c31a742dd7b0485beff0463fcc0a15d17f31170b
1564:X 21 Oct 2022 15:07:29.478 # +monitor master mymaster 192.168.56.4 6379 quorum 2
1564:X 21 Oct 2022 15:07:29.480 * +slave slave 192.168.56.5:6379 192.168.56.5 6379 @ mymaster 192.168.56.4 6379
1564:X 21 Oct 2022 15:07:30.702 * +sentinel sentinel 0e8299513272360c51c2b0a27fecd7c3e47b2ac9 192.168.56.4 26379 @ mymaster 192.168.56.4 6379
1564:X 21 Oct 2022 15:12:01.086 * +sentinel sentinel 1a0cf759c9bcde9d06e29d99064f26eb11454a09 192.168.56.6 26379 @ mymaster 192.168.56.4 6379
# 192.168.56.6节点的sentinel日志
1618:X 21 Oct 2022 15:11:59.075 # Sentinel ID is 1a0cf759c9bcde9d06e29d99064f26eb11454a09
1618:X 21 Oct 2022 15:11:59.075 # +monitor master mymaster 192.168.56.4 6379 quorum 2
1618:X 21 Oct 2022 15:11:59.078 * +slave slave 192.168.56.5:6379 192.168.56.5 6379 @ mymaster 192.168.56.4 6379
1618:X 21 Oct 2022 15:11:59.742 * +sentinel sentinel 0e8299513272360c51c2b0a27fecd7c3e47b2ac9 192.168.56.4 26379 @ mymaster 192.168.56.4 6379
1618:X 21 Oct 2022 15:12:00.301 * +sentinel sentinel c31a742dd7b0485beff0463fcc0a15d17f31170b 192.168.56.5 26379 @ mymaster 192.168.56.4 6379

至此,一个拥有一个master节点,一个slave节点,3个sentinel节点的哨兵集群环境就组件完毕了。

分别登录到3个sentinel节点进行连接测试:

$ redis-cli -h 192.168.56.4 -p 26379
192.168.56.4:26379> ping
PONG $ redis-cli -h 192.168.56.5 -p 26379
192.168.56.5:26379> ping
PONG $ redis-cli -h 192.168.56.6 -p 26379
192.168.56.6:26379> ping
PONG

Sentinel故障转移测试

操作步骤:将master的Redis服务停掉,看看Redis Sentinel是如何操作的。

首先,先查看下目前master节点的信息:

$ redis-cli -h 192.168.56.4 -p 26379
192.168.56.4:26379> sentinel get-master-addr-by-name mymaster
1) "192.168.56.4"
2) "6379"

然后执行下面命令(强制Redis Server休眠120秒):

$ redis-cli -h 192.168.56.4 -p 6379 DEBUG sleep 120
OK

然后再查看下master节点的信息:

$ redis-cli -h 192.168.56.4 -p 26379
192.168.56.4:26379> sentinel get-master-addr-by-name mymaster
1) "192.168.56.5"
2) "6379"

发现IP已经变成了此前salve节点的,也就是说192.168.56.5变成了master,然后我们查看下当前master的信息:

$ redis-cli -h 192.168.56.5 -p 6379
192.168.56.5:6379> info replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.56.4,port=6379,state=online,offset=198958,lag=1 # 此前的master节点现在变成了slave
master_failover_state:no-failover
master_replid:796b94f178162c912cadead8c84af2633812426a
master_replid2:021abd5cacf2b45ade959fdcb0e50012e108bf6a
master_repl_offset:199236
second_repl_offset:176659
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:199236

整个过程,可以查看Redis Sentinel的日志:

1648:X 21 Oct 2022 15:22:41.916 # +sdown master mymaster 192.168.56.4 6379
1648:X 21 Oct 2022 15:22:42.031 # +new-epoch 1
1648:X 21 Oct 2022 15:22:42.037 # +vote-for-leader c31a742dd7b0485beff0463fcc0a15d17f31170b 1
1648:X 21 Oct 2022 15:22:42.991 # +odown master mymaster 192.168.56.4 6379 #quorum 3/2
1648:X 21 Oct 2022 15:22:42.991 # Next failover delay: I will not start a failover before Fri Oct 21 15:28:42 2022
1648:X 21 Oct 2022 15:22:43.154 # +config-update-from sentinel c31a742dd7b0485beff0463fcc0a15d17f31170b 192.168.56.5 26379 @ mymaster 192.168.56.4 6379
1648:X 21 Oct 2022 15:22:43.155 # +switch-master mymaster 192.168.56.4 6379 192.168.56.5 6379
1648:X 21 Oct 2022 15:22:43.157 * +slave slave 192.168.56.4:6379 192.168.56.4 6379 @ mymaster 192.168.56.5 6379
1648:X 21 Oct 2022 15:23:13.218 # +sdown slave 192.168.56.4:6379 192.168.56.4 6379 @ mymaster 192.168.56.5 6379
1648:X 21 Oct 2022 15:24:11.612 # -sdown slave 192.168.56.4:6379 192.168.56.4 6379 @ mymaster 192.168.56.5 6379

【参考】

https://www.cnblogs.com/xishuai/p/redis-sentinel.html Redis Sentinel 高可用服务架构搭建

Redis搭建Sentinel实验环境的更多相关文章

  1. 《Exchange Server 2010 SP1/SP2管理实践》——第2章 搭建Exchange实验环境2.1 网络环境规划...

    本节书摘来自异步社区<Exchange Server 2010 SP1/SP2管理实践>一书中的第2章,第2.1节,作者: 王淑江 更多章节内容可以访问云栖社区"异步社区&quo ...

  2. 搭建 OpenStack 实验环境 - 每天5分钟玩转 OpenStack(16)

    在学习 OpenStack 各服务之前,让我们先搭建起一个实验环境. 毋庸置疑,一个看得到摸得着而且允许我们随便折腾的 OpenStack 能够提高我们的学习效率. 因为是我们自己学习用的实验环境,C ...

  3. 第2章 GNS3和PacketTracer网络模拟器(2)_搭建GNS3实验环境

    2. GNS3实验环境 2.1 教学实验1:配置路由器和VPCS (1)配置VPCS虚拟电脑的IP地址命令 //配置VPCS电脑的IP地址等信息 PC1> ? //查看可用的命令 PC1> ...

  4. 001——搭建OpenCV实验环境

    开发环境 VS 2017 15.7.6 OpenCV 3.4.1 搭建环境 设置环境变量 创建Win32 空项目 配置属性管理器 测试代码 #include<opencv2/opencv.hpp ...

  5. Docker+OpenvSwitch搭建VxLAN实验环境

    一.概述                                                    1.环境:我这里是2台linux机器(host1和host2),发行版是kali2.0, ...

  6. CentOS7使用DevStack快速搭建OpenStack实验环境

    安装环境:centos7系统下安装devstack 一.下载Ubuntu14或者Centos7安装(实体机或者虚拟机都可以),建议选择最小安装镜像即可. 二.安装devstack 文档地址 http: ...

  7. 实验一:JAVA实验环境搭建 ,JDK下载与安装及 Eclipse下载与安装

    一.搭建JAVA实验环境 1.JDK的下载 (1)打开 IE 浏览器,输入网址“http://www.oracle.com/index.html”,浏览 Oracle 官方主页.鼠标双击Downloa ...

  8. mininet(一)实验环境搭建

    mininet(一)实验环境搭建 mininet(二)简单的路由实验 mininet(三)简单的NAT实验 最近学习(https://github.com/mininet/openflow-tutor ...

  9. O016、搭建实验环境

    参考https://www.cnblogs.com/CloudMan6/p/5350536.html   在学习 OpenStack 各服务之前,需要先搭建一个实验环境.   一个看得到摸得着而且能让 ...

  10. 准备 KVM 实验环境 - 每天5分钟玩转 OpenStack(3)

    KVM 是 OpenStack 使用最广泛的 Hypervisor,本节介绍如何搭建 KVM 实验环境 安装 KVM 上一节说了,KVM 是 2 型虚拟化,是运行在操作系统之上的,所以我们先要装一个 ...

随机推荐

  1. [转帖]一文快速入门 ClickHouse

    https://zhuanlan.zhihu.com/p/621480049 什么是clickhouse ClickHouse是一种OLAP类型的列式数据库管理系统,这里有两个概念:OLAP.列式数据 ...

  2. [转帖]PostgreSQL数据加载工具之pg_bulkload

    https://www.jianshu.com/p/b576207f2f3c 1. pg_bulkload介绍 PostgreSQL提供了一个copy命令的便利数据加载工具,copy命令源于Postg ...

  3. [转帖]Nginx reuseport 导致偶发性卡顿

    https://github.com/jonmeredith/tcpperf https://plantegg.github.io/2023/06/08/Nginx%20reuseport%20%E5 ...

  4. [转帖]spec2017 安装和使用

    https://zhuanlan.zhihu.com/p/534205632 SPEC成立于1988年,SPEC基准广泛用于评估计算机系统的性能.SPEC CPU套件通过测量几个程序(例如编译器GCC ...

  5. 最小化安装的CentOS7 上面安装Oracle12C的简单过程

    首先声明自己对静默安装不熟,也害怕初问题,所以不使用静默安装的方式. 因为是最小化安装,所以必须安装GUI界面才可以,以下是过程(早上回忆的,全文字,无截图) 1. 安装GUI界面 yum group ...

  6. 【图论】CF1508C Complete the MST

    Problem Link 有一张 \(n\) 个点的完全图,其中 \(m\) 条边已经标有边权.你需要给剩下的边都标上权值,使得所有边权的异或和为 \(0\),并且整张图的最小生成树边权和最小. \( ...

  7. 用户 'NT Service\SSISScaleOutMaster140' 登录失败

    用户 'NT Service\SSISScaleOutMaster140' 登录失败. 原因: 找不到与提供的名称匹配的登录名. 项目情况: 用户 'NT Service\SSISScaleOutMa ...

  8. ​【心理学CPCI收录,AP独立出版】 2023年应用心理学与现代化教育国际学术会议(ICAPME 2023)

    ​[心理学CPCI收录,AP独立出版] 2023年应用心理学与现代化教育国际学术会议(ICAPME 2023) 大会官网:www.icapme.org 大会时间:2023年9月22-24日 大会地点: ...

  9. 若依、vue三级路由缓存失败

    router.beforeEach((to, from, next) => { NProgress.start() if (getToken()) { // 三级菜单组件无法缓存问题 if (t ...

  10. 解决: DECODER_ERROR_CLASSES += (brotli.error,) ttributeError: module ‘brotli‘ has no attribute ‘error‘

    解决: DECODER_ERROR_CLASSES += (brotli.error,) ttributeError: module 'brotli' has no attribute 'error' ...