热门标签 | 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
推荐阅读
  • iTOP4412开发板QtE5.7源码编译指南
    本文详细介绍了如何在iTOP4412开发板上编译QtE5.7源码,包括所需文件的位置、编译器设置、触摸库编译以及QtE5.7的完整编译流程。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文介绍了在MacOS上通过Homebrew安装Anaconda3,并配置环境变量以实现不同Python版本之间的快速切换。同时,提供了详细的步骤来创建和管理多个Python环境。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 随着Redis功能的不断增强和稳定性提升,其应用范围日益广泛,成为软件开发人员不可或缺的技能之一。本文将深入探讨Redis集群的部署与优化,包括主从备份机制、哨兵模式以及集群功能,帮助读者全面理解并掌握Redis集群的应用。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 在编译BSP包过程中,遇到了一个与 'gets' 函数相关的编译错误。该问题通常发生在较新的编译环境中,由于 'gets' 函数已被弃用并视为安全漏洞。本文将详细介绍如何通过修改源代码和配置文件来解决这一问题。 ... [详细]
  • 本文探讨了如何通过一系列技术手段提升Spring Boot项目的并发处理能力,解决生产环境中因慢请求导致的系统性能下降问题。 ... [详细]
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社区 版权所有