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
相关推荐
程序员南飞1 小时前
ps aux | grep smart_webrtc这条指令代表什么意思
java·linux·ubuntu·webrtc
StrokeAce1 小时前
linux桌面软件(wps)内嵌到主窗口后的关闭问题
linux·c++·qt·wps·窗口内嵌
热爱嵌入式的小许5 小时前
Linux基础项目开发1:量产工具——显示系统
linux·运维·服务器·韦东山量产工具
韩楚风8 小时前
【linux 多进程并发】linux进程状态与生命周期各阶段转换,进程状态查看分析,助力高性能优化
linux·服务器·性能优化·架构·gnu
陈苏同学9 小时前
4. 将pycharm本地项目同步到(Linux)服务器上——深度学习·科研实践·从0到1
linux·服务器·ide·人工智能·python·深度学习·pycharm
Ambition_LAO9 小时前
解决:进入 WSL(Windows Subsystem for Linux)以及将 PyCharm 2024 连接到 WSL
linux·pycharm
Pythonliu79 小时前
茴香豆 + Qwen-7B-Chat-Int8
linux·运维·服务器
你疯了抱抱我9 小时前
【RockyLinux 9.4】安装 NVIDIA 驱动,改变分辨率,避坑版本。(CentOS 系列也能用)
linux·运维·centos
追风赶月、9 小时前
【Linux】进程地址空间(初步了解)
linux
栎栎学编程9 小时前
Linux中环境变量
linux