Linux下编译安装redis-哨兵模式

Linux下编译安装-哨兵模式

哨兵sentinel模式

sentinel相当于是一个投票者或者哨兵,它时刻监视着redis集群的各个服务器,当主master挂了之后,它将进行投票进行新master的选举。下图

Sentinel的工作方式

每个Sentinel以每秒钟一次的频率向它所知的Master,Slave以及其他 Sentinel 实例发送一个 PING 命令

如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线。

如果一个Master被标记为主观下线,则正在监视这个Master的所有 Sentinel 要以每秒一次的频率确认Master的确进入了主观下线状态。

当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认Master的确进入了主观下线状态, 则Master会被标记为客观下线

在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有Master,Slave发送 INFO 命令

当Master被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次

若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除。

若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除。

主观下线和客观下线

主观下线(Subjectively Down, 简称 SDOWN)指的是单个 Sentinel 实例对服务器做出的下线判断。

客观下线(Objectively Down, 简称 ODOWN)指的是多个 Sentinel 实例在对同一个服务器做出 SDOWN 判断, 并且通过 SENTINEL is-master-down-by-addr 命令互相交流之后, 得出的服务器下线判断。

客观下线条件只适用于主服务器: 对于任何其他类型的 Redis 实例, Sentinel 在将它们判断为下线前不需要进行协商, 所以从服务器或者其他 Sentinel 永远不会达到客观下线条件。

只要一个 Sentinel 发现某个主服务器进入了客观下线状态, 这个 Sentinel 就可能会被其他 Sentinel 推选出, 并对失效的主服务器执行自动故障迁移操作。

环境介绍

安装环境

节点 IP OS Redis版本

Node1 192.168.2.1 CentOS release 6.5 (Final) redis-4.0.14

Node2 192.168.2.2 CentOS release 6.5 (Final) redis-4.0.14

Node3 192.168.2.3 CentOS release 6.5 (Final) redis-4.0.14

预装系统依赖包 -- 三个主机节点都需要安装

dart 复制代码
yum -y install gcc-c++ 
yum -y install tcl 

安装Redis

配置node1

上传Redis安装介质到 node1 节点,编译安装redis

dart 复制代码
tar -zxvf redis-4.0.14.tar.gz -C /tdx 
cd /tdx/redis-4.0.14 
make && make install 
mkdir log && mkdir run 

vi /tdx/redis-4.0.14/redis.conf
bind 0.0.0.0 
port 6379 
daemonize yes 
pidfile /tdx/redis-4.0.14/run/redis.pid 
logfile "tdx/redis-4.0.14/log/redis.log" 
vi /tdx/redis-4.0.14/sentinel.conf 
bind  192.168.2.1 127.0.0.1 
port 26379 
sentinel monitor mymaster 192.168.2.1 6379 2 
daemonize yes

配置node2

上传Redis安装介质到 node1 节点,编译安装redis

dart 复制代码
tar -zxvf redis-4.0.14.tar.gz -C /tdx 
cd /tdx/redis-4.0.14 
make && make install 
mkdir log && mkdir run 
vi tdx/redis-4.0.14/redis.conf 
bind 0.0.0.0 
port 6379 
daemonize yes 
pidfile /tdx/redis-4.0.14/run/redis_16379.pid 
logfile "tdx/redis-4.0.14/log/redis.log" 
slaveof 192.168.2.1 6379 
vi tdx/redis-4.0.14/sentinel.conf 
bind 127.0.0.1 192.168.2.2 127.0.0.1 
port 26379 
sentinel monitor mymaster 192.168.2.1 6379 2 
daemonize yes

配置node3

上传Redis安装介质到 node1 节点,编译安装redis

dart 复制代码
tar -zxvf redis-4.0.14.tar.gz -C /tdx 
cd /tdx/redis-4.0.14 
make && make install 
mkdir log && mkdir run 
vi /tdx/redis-4.0.14/redis.conf 
bind 0.0.0.0 
port 6379 
daemonize yes 
pidfile /tdx/redis-4.0.14/run/redis_16379.pid 
logfile "tdx/redis-4.0.14/log/redis.log" 
slaveof 192.168.2.1 6379 
vi /tdx/redis-4.0.14/sentinel.conf 
bind  192.168.2.3 127.0.0.1 
port 26379 
sentinel monitor mymaster 192.168.2.1 6379 2 
daemonize yes

配置防火墙

dart 复制代码
firewall-cmd --permanent --add-port=6379/tcp 
firewall-cmd --permanent --add-port=26379/tcp
firewall-cmd --reload 

启动服务

三个节点分别执行

dart 复制代码
cd /tdx/redis-4.0.14 
src/redis-server redis.conf && src/redis-sentinel sentinel.conf 

查看状态

三个节点分别执行

dart 复制代码
cd /tdx/redis-4.0.14 
src/redis-cli -h 127.0.0.1 -p 6379 info Replication
src/redis-cli -h 127.0.0.1 -p 6379 info Replication 
src/redis-cli -h 127.0.0.1 -p 6379 info Replication 

查看进程

dart 复制代码
ps aux | grep redis 

清空日志

dart 复制代码
truncate -s 0 redis.log
相关推荐
jieyucx4 小时前
【高级利用】条件竞争与逻辑漏洞:与服务器赛跑的艺术
android·运维·服务器·web安全·文件上传
tianyuanwo4 小时前
服务器OS组件研发效能度量可视系统——顶层方案设计与阶段性规划
运维·服务器·度量系统
黄华SJ520it5 小时前
二二复制定点裂变双轨商城系统开发:原理、架构与实战指南
运维·小程序·架构·系统开发
生活爱好者!5 小时前
NAS还能用来开视频会议?docker一键部署MiroTalk SFU
运维·docker·容器
YuePeng5 小时前
不写一行接口,让 DBeaver 直连你的指标层——背后只用了一个端口
后端·架构·github
别动我齐刘海5 小时前
Day6 unitree_G1人形机器人GMR—— MotionInput
c语言·c++·人工智能·学习·机器学习·机器人·github
leoZ2316 小时前
实战复盘:用 Claude Code 从零搭一个 GitHub PR 统计工具
java·人工智能·python·深度学习·自然语言处理·github·llama
深爱水瓶 血影S狂风6 小时前
函数调用过程探究
linux·运维·服务器
酷可达拉斯6 小时前
Linux操作系统-磁盘空间使用率100%如何处理?
linux·运维·服务器·云计算·bash
yuezhilangniao6 小时前
AI工具全家桶:从开发到运维,从数据库到产品经理-含魔塔社区简介
运维·数据库·人工智能