热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

redis通过哨兵模式实现主从切换

环境:server1:

环境:

  • server1:172.25.70.1 master
  • server2:172.25.70.2 slave
  • server3:172.25.70.3 slave

一、配置一主多从环境

1.解压

[root@server1 ~]# tar zxf redis-5.0.3.tar.gz
[root@server1 ~]# ls
redis-5.0.3 redis-5.0.3.tar.gz
[root@server1 ~]#

2.下载安装编译所需gcc

yum install -y gcc

3.make && make install

[root@server1 ~]# cd redis-5.0.3/
[root@server1 redis-5.0.3]# ls
00-RELEASENOTES INSTALL runtest tests
BUGS Makefile runtest-cluster utils
CONTRIBUTING MANIFESTO runtest-sentinel
COPYING README.md sentinel.conf
deps redis.conf src
[root@server1 redis-5.0.3]# make
[root@server1 ~]# cd src/
[root@server1 src]# make install

在这里插入图片描述

4.安装

[root@server1 redis-5.0.3]# cd utils/
[root@server1 utils]# ./install_server.sh
Welcome to the redis service installer
This script will help you easily set up a running redis server
Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

在这里插入图片描述

5.修改配置文件,并重启服务

[root@server1 utils]# vim /etc/redis/6379.conf
=====================
70 bind 0.0.0.0
========================
[root@server1 utils]# /etc/init.d/redis_6379 restart
Stopping ...
Redis stopped
Starting Redis server...

#查看端口

[root@server1 utils]# netstat -antlupe | grep 6379
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 0 100152 7413/redis-server 0

在这里插入图片描述
在这里插入图片描述

6.将make完的redis发送给server2、server3

[root@server1 ~]# scp -r redis-5.0.3 root@server2:
[root@server1 ~]# scp -r redis-5.0.3 root@server3:

在这里插入图片描述
在这里插入图片描述

7.安装配置server2、server3

[root@server2 redis-5.0.3]# cd src/
[root@server2 src]# make install
[root@server2 src]# cd ../utils/
[root@server2 utils]# ./install_server.sh
[root@server2 utils]# vim /etc/redis/6379.conf
===============================================
70 bind 0.0.0.0
1379 slaveof 172.25.70.1 6379
=================================================
[root@server2 utils]# /etc/init.d/redis_6379 restart

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#在server1上查看主从状态

[root@server1 redis-5.0.3]# redis-cli
127.0.0.1:6379> info
'''
# Replication
role:master
connected_slaves:2
slave0:ip=172.25.70.2,port=6379,state=online,offset=630,lag=1
slave1:ip=172.25.70.3,port=6379,state=online,offset=630,lag=1

在这里插入图片描述
server3操作同server2
在这里插入图片描述
在这里插入图片描述
server1上再次查看主从
在这里插入图片描述

  • server2
    在这里插入图片描述
  • server3
    在这里插入图片描述

二、哨兵机制

1.复制哨兵配置文件到redis配置文件目录

[root@server1 ~]# cd redis-5.0.3/
[root@server1 redis-5.0.3]# cp sentinel.conf /etc/redis/

2.修改哨兵配置文件

vim /etc/redis/sentinel.conf
====================================================
84 sentinel monitor mymaster 172.25.70.1 6379 2
...
113 sentinel down-after-milliseconds mymaster 10000

在这里插入图片描述
在这里插入图片描述

3.给server2、server3发送哨兵文件

[root@server1 redis-5.0.3]# cd /etc/redis/
[root@server1 redis]# scp sentinel.conf server2:/etc/redis/
sentinel.conf 100% 9712 9.5KB/s 00:00
[root@server1 redis]# scp sentinel.conf server3:/etc/redis/
sentinel.conf 100% 9712 9.5KB/s 00:00
[root@server1 redis]#

在这里插入图片描述

4.server1-3执行哨兵

  • server1:

[root@server1 redis]# redis-server /etc/redis/sentinel.conf --sentinel

在这里插入图片描述
在这里插入图片描述

  • server2:

[root@server2 utils]# redis-server /etc/redis/sentinel.conf --sentinel

在这里插入图片描述
在这里插入图片描述

  • server3:

[root@server3 utils]# redis-server /etc/redis/sentinel.conf --sentinel

在这里插入图片描述
在这里插入图片描述
可以看到信息,server1为master,server2-3都是slave节点。

5.测试

1.重新开启一个终端远程连接server1查看端口发现哨兵26379进程开启:

[root@server1 ~]# netstat -antulpe

在这里插入图片描述
2.查看26479端口

[root@server1 ~]# redis-cli -p 26379

在这里插入图片描述
注意:此时显示主是server1,sentinels=3表示成功
3.将server1的redis-cli关闭

[root@server1 ~]# redis-cli
127.0.0.1:6379> SHUTDOWN
not connected>

在这里插入图片描述
4.查看哨兵状态
在这里插入图片描述
我们可以看到此时哨兵为我们挑选了server3作为新的master

5.连接server2,查看redis状态
在这里插入图片描述
server3成为master

我们在新的master上写入信息,再在server2上查看:
在这里插入图片描述

  • server2
    在这里插入图片描述
    哨兵模式配置完毕

版权声明:本文为qq_43570369原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_43570369/article/details/90081506
推荐阅读
  • 如何利用Apache与Nginx高效实现动静态内容分离
    如何利用Apache与Nginx高效实现动静态内容分离 ... [详细]
  • 本文详细解析了神州数码DCRS5980交换机的基础配置流程和技术要点。首先,通过进入配置模式(`enable`),设置主机名(`hostname 5980`),并创建VLAN,逐步介绍了设备的初始设置步骤。此外,还涵盖了端口配置、IP地址分配及安全设置等关键环节,为用户提供了全面的配置指导。 ... [详细]
  • 本文深入探讨了 `ExpressionChangedAfterItHasBeenCheckedError` 错误的原因及其解决方案。通过分析 Angular 的变更检测机制,详细解释了该错误的发生条件,并提供了多种有效的应对策略,帮助开发者在实际开发中避免这一常见问题。 ... [详细]
  • RancherOS 是由 Rancher Labs 开发的一款专为 Docker 设计的轻量级 Linux 发行版,提供了一个全面的 Docker 运行环境。其引导镜像仅 20MB,非常适合在资源受限的环境中部署。本文将详细介绍如何在 ESXi 虚拟化平台上安装和配置 RancherOS,帮助用户快速搭建高效、稳定的容器化应用环境。 ... [详细]
  • 期末Web开发综合实践项目:运用前端技术打造趣味小游戏体验
    期末Web开发综合实践项目中,学生通过运用HTML、CSS和JavaScript等前端技术,设计并实现了一款趣味性十足的小游戏。该项目不仅检验了学生对前端基础知识的掌握情况,还提升了他们的实际操作能力和创意设计水平。视频链接展示了项目的最终成果,直观呈现了游戏的互动性和视觉效果。 ... [详细]
  • 本文深入探讨了 MXOTDLL.dll 在 C# 环境中的应用与优化策略。针对近期公司从某生物技术供应商采购的指纹识别设备,该设备提供的 DLL 文件是用 C 语言编写的。为了更好地集成到现有的 C# 系统中,我们对原生的 C 语言 DLL 进行了封装,并利用 C# 的互操作性功能实现了高效调用。此外,文章还详细分析了在实际应用中可能遇到的性能瓶颈,并提出了一系列优化措施,以确保系统的稳定性和高效运行。 ... [详细]
  • 在Linux环境下编译安装Heartbeat时,常遇到依赖库缺失的问题。为确保顺利安装,建议预先通过yum安装必要的开发库,如glib2-devel、libtool-ltdl-devel、net-snmp-devel、bzip2-devel和ncurses-devel等。这些库是编译过程中不可或缺的组件,能够有效避免编译错误,确保Heartbeat的稳定运行。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 本文详细解析了 MySQL 5.7.20 版本中二进制日志(binlog)崩溃恢复机制的工作流程。假设使用 InnoDB 存储引擎,并且启用了 `sync_binlog=1` 配置,文章深入探讨了在系统崩溃后如何通过 binlog 进行数据恢复,确保数据的一致性和完整性。 ... [详细]
  • Java 零基础入门:SQL Server 学习笔记(第21篇)
    Java 零基础入门:SQL Server 学习笔记(第21篇) ... [详细]
  • MongoDB Aggregates.group() 方法详解与编程实例 ... [详细]
  • 本文深入探讨了Spring Cloud Eureka在企业级应用中的高级使用场景及优化策略。首先,介绍了Eureka的安全配置,确保服务注册与发现过程的安全性。接着,分析了Eureka的健康检查机制,提高系统的稳定性和可靠性。随后,详细讨论了Eureka的各项参数调优技巧,以提升性能和响应速度。最后,阐述了如何实现Eureka的高可用性部署,保障服务的连续性和可用性。通过这些内容,开发者可以更好地理解和运用Eureka,提升微服务架构的整体效能。 ... [详细]
  • 深入解析零拷贝技术(Zerocopy)及其应用优势
    零拷贝技术(Zero-copy)是Netty框架中的一个关键特性,其核心在于减少数据在操作系统内核与用户空间之间的传输次数。通过避免不必要的内存复制操作,零拷贝显著提高了数据传输的效率和性能。本文将深入探讨零拷贝的工作原理及其在实际应用中的优势,包括降低CPU负载、减少内存带宽消耗以及提高系统吞吐量等方面。 ... [详细]
  • 优化Oracle数据库日志功能的关闭方法与实践
    在优化Oracle数据库日志功能的过程中,关闭不必要的日志记录是一项重要任务。本文探讨了Oracle 11g中日志路径的配置和管理,特别是针对常用的警报日志(alert log)。通过合理配置 `alert_$ORACLE_SID.log` 文件,可以有效减少日志文件的大小和提高系统性能。此外,文章还介绍了如何通过调整参数和使用脚本自动化日志管理,进一步提升数据库的稳定性和维护效率。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
author-avatar
东cz莞痴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有