Redis(七)------redis哨兵机制的实现_查看redis端口号存储数据大小-程序员宅基地

技术标签: 哨兵  redis  

前言

Redis(四)------redis主从复制的实现
上一节我们搭建了redis主从复制,redis主从复制主要作用读写分离和数据备份的作用。主机负责写入数据,从机负责读取数据。

如果主机节点崩溃了,造成redis服务关闭,需要认为手动启动redis服务。

因此我们集成哨兵模式来实现解决这个问题,实现redis的高可用作用。

服务器 用途 redis端口号 master-name 备注
centos7 192.168.1.6 主机Master(写) 6379 redis1 redis5.0 、 sentinel.conf
centos7 192.168.1.4 从机Slave(读) 6379 redis2 redis5.0 、 sentinel.conf
centos7 192.168.1.5 从机Slave(读) 6379 redis3 redis5.0 、 sentinel.conf

一、配置sentinel.conf文件

第一步:复制sentinel.conf

将/usr/local/redis-5.0.7目录下的sentinel.conf文件复制到/usr/local/redis//bin/目录下

cp /usr/local/redis-5.0.7/sentinel.conf /usr/local/redis/bin/

在这里插入图片描述
清空文件内容,添加如下配置

【192.168.1.6 主机master的sentinel.conf文件】

#关闭保护模式
protected-mode no
#默认端口
port 26379
#允许后台运行
daemonize yes
#sentinel日志文件,注意日志文件的目录必须存在
logfile "/var/log/redis/sentinel.log"

#设置本机ip
sentinel announce-ip 192.168.1.6

#master
sentinel monitor mymaster 192.168.1.6 6379 2
#修改心跳为5000毫秒
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 2
sentinel failover-timeout mymaster 180000
 #master如果设置密码 没有可以不用这一行
sentinel auth-pass mymaster 123456

配置说明:

sentinel monitor <master-name> <ip> <redis-port> <quorum> 监听192.168.1.6主机。master-name为自定义名称,quorum是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效。master-name只能包含英文字母数字,和.-_

【192.168.1.4 从机slave的sentinel.conf文件】

#关闭保护模式
protected-mode no
#默认端口
port 26379
#允许后台运行
daemonize yes
#sentinel日志文件,注意日志文件的目录必须存在
logfile "/var/log/redis/sentinel.log"

#设置本机ip
sentinel announce-ip 192.168.1.4

#master
sentinel monitor mymaster 192.168.1.6 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 2
sentinel failover-timeout mymaster 180000
sentinel auth-pass mymaster 123456

【192.168.1.5 从机slave的sentinel.conf文件】

#关闭保护模式
protected-mode no
#默认端口
port 26379
#允许后台运行
daemonize yes
#sentinel日志文件,注意日志文件的目录必须存在
logfile "/var/log/redis/sentinel.log"

#设置本机ip
sentinel announce-ip 192.168.1.5

#master
sentinel monitor mymaster 192.168.1.6 6379 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 2
sentinel failover-timeout mymaster 180000
sentinel auth-pass mymaster 123456

二、启动sentinel哨兵

2.1、启动sentinel

cd /usr/local/redis/bin/
#启动
./redis-sentinel sentinel.conf

2.2、查看sentinel进程

ps -ef|grep redis

在这里插入图片描述
2.3、防火墙添加23679端口号

#添加端口号
firewall-cmd --permanent --zone=public --add-port=26379/tcp
#重启防火墙
firewall-cmd --reload
#检查端口号是否生效
firewall-cmd --zone=public --query-port=26379/tcp

2.4、查看sentinel信息

【查看192.168.1.6主机】

./redis-cli -a 123456  -h 192.168.1.6 -p 26379
info sentinel

在这里插入图片描述
【查看192.168.1.4从机】

./redis-cli -a 123456  -h 192.168.1.4 -p 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=192.168.1.6:6379,slaves=2,sentinels=3

【查看192.168.1.5从机】

./redis-cli -a 123456  -h 192.168.1.5 -p 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=192.168.1.6:6379,slaves=2,sentinels=3

三、启动sentinel哨兵,错误警告信息

#查看sentinel.log日志
tail -f /var/log/redis/sentinel.log
一、WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys

net.core.somaxconn = 1024添加到/etc/sysctl.conf中,然后执行sysctl -p生效配置。

四、测试sentinel哨兵是否生效

第一步:关闭192.168.1.6主机的redis服务

shutdown
#或者kill-9 xx杀掉进程

在这里插入图片描述

第二步:查看主机转移位置

【对192.168.1.4】

 info sentinel

192.168.1.4: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=192.168.1.4:6379,slaves=2,sentinels=3

【对192.168.1.5】

 info sentinel

192.168.1.5: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=192.168.1.4:6379,slaves=2,sentinels=3

发现主机由原来的192.168.1.6转移到了192.168.1.4

注意:

redis主master一旦变更为从slave机后,就算重启启动服务,或者重启服务器后,redis角色也不会变更。
本质上哨兵机制实现自动更改sentinel.conf文件配置,实现持久化的作用。

protected-mode no
#默认端口
port 26379
#允许后台运行
daemonize yes
#sentinel日志文件,注意日志文件的目录必须存在
logfile "/var/log/redis/sentinel.log"

#设置本机ip
sentinel myid 0e52436bc7a3a79bcb5936d32dae6848f9e6f907

#master
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.1.4 6379 2
sentinel parallel-syncs mymaster 2
sentinel auth-pass mymaster 123456
sentinel config-epoch mymaster 1
# Generated by CONFIG REWRITE
dir "/"
sentinel leader-epoch mymaster 1
sentinel known-replica mymaster 192.168.1.6 6379
sentinel known-replica mymaster 192.168.1.5 6379
sentinel known-sentinel mymaster 192.168.1.5 26379 01f6728a7f36c9a72d2ef973a5337080326a4639
sentinel known-sentinel mymaster 192.168.1.6 26379 f37bee99e3ba2f9e4c19594675bf97b7558e3245
sentinel current-epoch 1
sentinel announce-ip "192.168.1.4"

第三步:向新主机写入数据

现在通过192.168.1.4写入数据,因为只有主机才可以写入数据,如果数据写入成功,表示配置无误


[root@192 bin]# ./redis-cli -a 123456
127.0.0.1:6379> set k1 helloworld
OK

192.168.1.5读取数据。发现主从复制功能无误。
在这里插入图片描述

第四步:重新启动原来的主机192.168.1.6

启动原来的主机,检查主机192.168.1.6的节点角色是否有了变化,如果变为slave,表示哨兵直接无误。

systemctl restart redis
ps -ef|grep redis

在这里插入图片描述

./redis-cli -a 123456
get k1

在这里插入图片描述

由上图发现,192.168.1.7的节点角色变为savle,表示哨兵机制没有问题,但是发现master_link_status:down,表示未连接上主机

查看日志

tail -f /var/log/redis/redis.log

在这里插入图片描述
参考Redis(四)------redis主从复制的实现
如果主机添加了密码,需要在从机添加masterauth 参数,否则提示验证失败。

原因:因为192.168.1.7配置了redis密码,现在转换为从机, masterauth 参数没有配置

192.168.1.7 redis.conf 添加内容

vi /usr/local/redis/bin/redis.conf
#主master的redis密码
masterauth 123456
#重启redis
systemctl restart redis

master_link_status:up,连接上主机了
在这里插入图片描述

主从复制机制没有问题。
在这里插入图片描述

五、设置sentinel哨兵直接开机自启

前面我们已经设置了redis开机自启,sentinel 设置与之相同。

系统服务目录里创建redis-sentinel.service文件

vi /lib/systemd/system/redis-sentinel.service

写入内容【ExecStart配置成自己的路径】

[Unit]
Description=redis-sentinel-server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-sentinel /usr/local/redis/bin/sentinel.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target

#设置开机自启动
systemctl enable redis-sentinel.service

如果你觉得本篇文章对你有所帮助的话,麻烦请点击头像右边的关注按钮,谢谢!

技术在交流中进步,知识在分享中传播

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_29914837/article/details/103667852

智能推荐

搭建Pytorch环境_pytorch环境搭建-程序员宅基地

文章浏览阅读2.1w次,点赞41次,收藏180次。无障碍安装pytorch全解_pytorch环境搭建

Argo Workflows v3.3发布,支持插件、调试模式、多租户,修改默认执行器,引入新SDK_python argo sdk-程序员宅基地

文章浏览阅读1.5k次。Argo Workflows v3.3 发布,支持插件、调试模式、修改默认执行器,多租户支持、引入 Python SDK_python argo sdk

ffmpegj将h264与aac封装成mkv/ts或者h264与mp3封装成mp4/flv/avi测试代码_ignoring attempt to set invalid timebase 1/0 for s-程序员宅基地

文章浏览阅读6.5k次。#include #include #define __STDC_CONSTANT_MACROS#ifdef _WIN32 //Windowsextern "C" {#include "libavformat/avformat.h"};#else //Linux...#ifdef __cplusplusextern "C" {#endif#include #ifde_ignoring attempt to set invalid timebase 1/0 for st:1

如何让计算机自动重启,教你如何实现让win7系统电脑定时自动重启-程序员宅基地

文章浏览阅读4.7k次。今天小编教你如何实现让win7系统电脑定时自动重启,也许此方法只有少数人才需要,有兴趣的朋友快来看看小编让win7系统电脑定时自动重启的设置方法吧。Win7怎么使用计划任务定时重启电脑,想必大家来说很想了解这方面的内容,下面小编整理了让win7系统电脑定时自动重启的设置方法,感兴趣的用户,请来看看如何实现让win7系统电脑定时自动重启吧。定时自动重启:点击开始菜单,在下方搜索栏输入“任务计划程序”..._win7怎么设置自动重启

Keil uVision3 汉化版 含注册机 单片机 C51。_uvsion3注册机-程序员宅基地

文章浏览阅读2.4k次。安装Keil C51- 汉化版 v8.08 版本,即uV3.exe2. 打开uVision,点击File—License Management…,打开License Management窗口,复制右上角的CID3. 打开注册机, 在CID窗口里填上刚刚复制的CID,其它设置不变4. 点击Generate生成许可号,复制许可号5. 将许可号复制到License Management窗口下部..._uvsion3注册机

从Simulink到PX4——Simulink-PX4插件安装与环境搭建_embedded coder support package for px4 autopilots-程序员宅基地

文章浏览阅读7.9k次,点赞13次,收藏95次。从Simulink到PX4——Simulink-PX4插件安装与环境搭建前言0 准备工作1 安装WSL2 Setting up the PX4 Toolchain on Windows3 Setting up the PX4 Tool Chain on Linux4 Downloading PX4 Source Code5 构建代码6 Performing PX4 System Startup from SD Card7 Test Connection新的改变功能快捷键合理的创建标题,有助于目录的生成如何改_embedded coder support package for px4 autopilots

随便推点

一、数据可视化之堆叠面积图 - Stacked Area Graph-程序员宅基地

文章浏览阅读6.6k次。堆叠面积图把研究整体的演化和各个群体的相对比例变简单!_堆叠面积图

适用于 Windows 10 的触摸板手势(from Microsoft 帮助)附双指右击无法使用的处理方法(ELAN)_elan 需要重启-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏3次。在 Windows 10 笔记本电脑的触摸板上试用这些手势。选择项目:点击触摸板。 滚动:将两个手指放在触摸板上,然后以水平或垂直方向滑动。 放大或缩小:将两个手指放在触摸板上,然后收缩或拉伸。 显示更多命令(类似于右键单击):使用两根手指点击触摸板,或按右下角。 查看所有打开的窗口:将三根手指放在触摸板上,然后朝外轻扫。 显示桌面:将三根手指放在触摸板上,然后朝里轻扫。 在打开的窗口之间切换:将三根手指放在触摸板上,然后向右或向左轻扫。 打开 Cortana:用三根手指点击触摸板。 ._elan 需要重启

Linux版awvs最新版v_190325161的安装记录_awvs_linux.zip-程序员宅基地

文章浏览阅读6.2k次,点赞2次,收藏4次。因为之前52的安装教程贴被删除了所以我自己重新记录一下方便以后的使用也是自己用的环境 ----我用的是2019的ubantu和Xshell下载地址安装环境依赖(如果有问题先更新一下源)root@kali:~# sudo apt-get install libxdamage1 libgtk-3-0 libasound2 libnss3 libxss1 -y正在读取软件包列表… ..._awvs_linux.zip

hive_"hive -e \"select phone['home'] from loyalty_progr-程序员宅基地

文章浏览阅读2.7w次,点赞112次,收藏326次。Hive 一 . hive1. 概述1.2. 组成架构(运行流程)1.3. 特点4. Hive和数据库的区别二、Hive的搭建2.1. 版本的选择2.2. 步骤2.3. 软件的基本操作2.3.1. 进入hive2.3.2. 操作2.3.3. 退出2.3.4. hive对本地文件数据进行表的映射操作2.3.5. 转移元数据的存储路径2.3.6. metastore的设置方式 :元数据2.3.7. 设..._"hive -e \"select phone['home'] from loyalty_program where cust_id = '1200866"

stm32下载错误Error:Flash Download failed - “Cortex-M3”_flash download failed m3-程序员宅基地

文章浏览阅读6k次,点赞8次,收藏20次。修改字母后还需要确认工程CORE文件中确实有对应容量的启动文件。通过ADD/Remove添加正确的Flash容量。在Debug——Settings中的。大容量芯片对应STM32F10X_中等容量对应STM32F10X_1.没有选择正确的Device。2.启动文件与内存大小不对应。小容量对应STM32F10X_3.另一个设置内存的地方。_flash download failed m3

软件测试——PIE模型_软件测试:pie模型-程序员宅基地

文章浏览阅读5.1k次,点赞3次,收藏10次。1、Bug的类型:Fault:静态存在于软件中的缺陷,如code写错了。Error:软件运行时,运行到fault触发产生错误的中间状态。Failure:Error传不到软件外部,使得用户或测试人员观测到失效的行为。2、Pie模型的三个必要条件:(1)Execution/Reachability:执行必须通过错误的代码(2)In_软件测试:pie模型