redis搭建哨兵集群的实现步骤

目录
  • redis安装部署
  • redis集群架构
  • 配置redis主从
  • 测试主从
  • 搭建redis哨兵集群
    • 哨兵集群详解:
    • 哨兵集群原理
    • 哨兵集群

redis安装部署

环境说明:

redis使用的是6.2.6版本

主机 IP 系统
master 192.168.129.136 redhat8
slave 192.168.182.135 redhat8
slave2 192.168.182.134 redhat8

准备工作

// 三台主机都要做
[root@master opt] wget https://download.redis.io/releases/redis-6.2.6.tar.gz

//三台主机都做
[root@master opt]# tar -zxf redis-6.2.6.tar.gz 

//编译安装
[root@master redis-6.2.6]# pwd  //进入redis目录
/opt/redis-6.2.6

[root@master redis-6.2.6]# yum -y install gcc gcc-c++  //安装c语言编译器
[root@master redis-6.2.6]# yum -y install make  //安装make编译器

[root@master redis-6.2.6]# make MALLOC=libc  

配置环境变量

// redis的二进制文件放在src目录下
[root@master redis-6.2.6]# cat /etc/profile.d/redis.sh   //为了能直接使用redis命令
export PATH=/opt/redis-6.2.6/src:$PATH

[root@master redis-6.2.6]# source /etc/profile.d/redis.sh  //使其生效

//启动redis
启动方式有以下两种:
[root@master redis-6.2.6]# vim redis.conf
257 daemonize yes //把no改为yes

启动一:
[root@master src]# ./redis-server  //不建议用这种方式启动
[root@master redis-6.2.6]# redis-server /opt/redis-6.2.6/redis.conf  //推荐使用这种方式

启动二:
[root@master opt]# cat /usr/lib/systemd/system/redis.service 
[Unit]
Description=redis server daemon
After=network.target

[Service]
Type=forking
ExecStart=/opt/redis-6.2.6/src/redis-server /opt/redis-6.2.6/redis.conf
ExecStop=/bin/kill -s QUIT $MAINPID
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

[root@master opt]# systemctl daemon-reload
[root@master opt]# systemctl enable --now redis.service

[root@master opt]# ss -anlt | awk -F "  *|:" 'NR==2{print $5}'   //看到6379端口号说明成功
6379

进入客户端的命令
redis-cli -p 6379 
127.0.0.1:6379>

[root@master redis-6.2.6]# redis-cli -p 6379 shutdown  //关闭redis服务

以上操作三台主机都需要做

redis集群架构

现在所部署的哨兵集群是基于redis主从的基础上的,整体架构如下:
一个主节点(master)可拥有多个从节点(slave),从节点实现对主节点的复制,保证数据同步。而哨兵(sentinel)则对各节点进行监控,主要包括主节点存活检测、主从运行情况检测等,一旦主节点宕机,哨兵可自动进行故障转移 (failover)、主从切换。

配置redis主从

修改redis配置文件
建议在修改配置文件之前写备份

//在master要做的事
[root@master redis-6.2.6]# mkdir logs
75 bind 192.168.129.136  //本机IP地址
94 protected-mode no
302 logfile "/opt/redis-6.2.6/logs/redis.log"

注意replicaof指定master的IP地址和端口号,在老版本上要做的事 slaveof

//在slave2上要做的事
[root@slave2 redis-6.2.6]# vim redis.conf
75 bind 192.168.129.135  //本机IP
477   replicaof 192.168.129.136 6379  master的IP和端口号

//在slave2上要做的事
[root@slave2 redis-6.2.6]# vim redis.conf
75 bind 192.168.129.135  //本机IP
477   replicaof 192.168.129.136 6379  master的IP和端口号

注意修改完配置文件之后需要重启redis服务才能生效

测试主从

[root@master redis-6.2.6]# redis-cli -h 192.168.129.136 -p 6379
192.168.129.136:6379> set name tom  // 设置一个value值
OK

[root@slave ~]# redis-cli -h 192.168.129.135  //这里也可以不指定端口号,因为redis默认使用的事6379端口号
192.168.129.135:6379> get name
"tom"

[root@slave2 redis-6.2.6]# redis-cli -h 192.168.129.134
192.168.129.134:6379> get name
"tom"

###主从同步成功

搭建redis哨兵集群

哨兵集群详解:

Redis Sentinel是Redis 的高可用性解决方案由一个或多个Sentinel(哨兵)实例组成。它可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,它的主要功能如下:

  • 监控: Sentinel会不断地检查你的主服务器和从服务器是否运作正常。
  • 通知:当被监控的某个 Redis 服务器出现问题时, Sentinel可以通过API向管理员或者其他应用程序发送通知。
  • 故障迁移:当主服务器不能正常工作时,Sentinel会自动进行故障迁移,也就是主从切换。
  • 统一的配置管理:连接者询问sentinel取得主从的地址。

哨兵集群原理

Sentinel 使用的算法核心是 Raft 算法,主要用途就是用于分布式系统,系统容错,以及Leader选举,每个Sentinel都需要定期的执行以下任务:

  • 每个 Sentinel 会自动发现其他 Sentinel 和从服务器,它以每秒钟一次的频率向它所知的主服务器、从服务器以及其他 Sentinel 实例发送一个 PING 命令。
  • 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 那么这个实例会被 Sentinel 标记为主观下线。 有效回复可以是: +PONG 、 -LOADING 或者 -MASTERDOWN 。
  • 如果一个主服务器被标记为主观下线, 那么正在监视这个主服务器的所有Sentinel要以每秒一次的频率确认主服务器的确进入了主观下线状态。
  • 如果一个主服务器被标记为主观下线, 并且有足够数量的Sentinel(至少要达到配置文件指定的数量)在指定的时间范围内同意这一判断, 那么这个主服务器被标记为客观下线。
  • 在一般情况下, 每个Sentinel会以每 10 秒一次的频率向它已知的所有主服务器和从服务器发送 INFO 命令。 当一个主服务器被Sentinel标记为客观下线时,Sentinel向下线主服务器的所有从服务器发送 INFO 命令的频率会从 10 秒一次改为每秒一次。
  • 当没有足够数量的Sentinel同意主服务器已经下线, 主服务器的客观下线状态就会被移除。 当主服务器重新向Sentinel的 PING 命令返回有效回复时, 主服务器的主管下线状态就会被移除。

哨兵集群

// 三台主机做同样的操作
[root@master redis-6.2.6]# vim sentinel.conf
26 daemonize yes
36 logfile "/opt/redis-6.2.6/logs/sentinel.conf"
84 sentinel monitor mymaster 192.168.129.136 6379 2

[root@master ~]# redis-sentinel /opt/redis-6.2.6/sentinel.conf //启动哨兵

// 查看哨兵信息
[root@master ~]# redis-cli -h 192.168.129.136 -p 26379
192.168.129.136: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.129.136:6379,slaves=2,sentinels=3

[root@slave ~]# redis-cli -h 192.168.129.135 -p 26379
192.168.129.135: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.129.136:6379,slaves=2,sentinels=3

[root@slave2 ~]# redis-cli -h 192.168.129.134 -p 26379
192.168.129.134: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.129.136:6379,slaves=2,sentinels=3

模拟主机故障,进行容灾切换

[root@master ~]# systemctl stop redis.service  //关闭redis服务
[root@master redis-6.2.6]# ps -ef | grep redis  //使用此命令找到sentinel进程,然后再kill掉sentinel的进程

//因为主机切换到了144主机,因此原来主机的配置文件也会随之更改,所以在137启动前需要更改配置文件,将其配置成144的从机:
[root@master redis-6.2.6]# vim redis.conf
477   replicaof 192.168.129.134 6379

[root@master redis-6.2.6]# redis-server /opt/redis-6.2.6/redis.conf //启动redis服务
[root@master redis-6.2.6]# systemctl restart redis.service  //也可以使用此命令启动redis服务

[root@master redis-6.2.6]# redis-sentinel /opt/redis-6.2.6/sentinel.conf  //启动sentinel服务

##至此哨兵集群搭建完毕

到此这篇关于redis搭建哨兵集群的实现步骤的文章就介绍到这了,更多相关redis 哨兵集群内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • redis搭建哨兵集群的实现步骤

    目录 redis安装部署 redis集群架构 配置redis主从 测试主从 搭建redis哨兵集群 哨兵集群详解: 哨兵集群原理 哨兵集群 redis安装部署 环境说明: redis使用的是6.2.6版本 主机 IP 系统 master 192.168.129.136 redhat8 slave 192.168.182.135 redhat8 slave2 192.168.182.134 redhat8 准备工作 // 三台主机都要做 [root@master opt] wget https:/

  • docker搭建redis主从哨兵集群的实现步骤

    目录 1:获取redis镜像 2:创建redis主从+哨兵docker-compose文件 3:redis配置和哨兵配置说明 4:启动docker-compose 5:查看启动情况 6:进入主节点查看集群情况 本文以docker-compose 搭建高可用Redis 主从.哨兵集群为例子 关于redis主从,哨兵集群原理参见:Redis 单机安装/ 哨兵模式集群安装 1:获取redis镜像 docker pull redis:6.2.7 2:创建redis主从+哨兵docker-compose文

  • Redis sentinel哨兵集群的实现步骤

    目录 一.Redis sentinel哨兵集群概述 (1)Redis哨兵概述 (2)Redis哨兵的工作机制 (3)哨兵的三个定时监控任务 二.部署Redis哨兵系统 (1)实验环境 (2)实验步骤 -在每台服务器上都安装Redis 一.Redis sentinel哨兵集群概述 (1)Redis哨兵概述 *Sentinel 哨兵:这是一个分布式系统,该进程是用于监控Redis集群中Master主服务器的工作状态,在Master主服务器发生故障时,可以实现Master和Slave服务器的秒级切换,

  • Docker搭建RabbitMQ集群的方法步骤

    目录 集群模式介绍 1.普通集群的搭建 1.1.普通集群架构介绍 1.2.环境准备 1.3.集群搭建 2.镜像集群的搭建 2.1.配置镜像集群的策略 集群模式介绍 RabbitMQ集群模式有两种:普通模式和镜像模式 普通模式:默认模式,多个节点组成的普通集群,消息随机发送到其中一个节点的队列上,其他节点仅保留元数据,各个节点仅有相同的元数据,即队列结构.交换器结构.交换器与队列绑定关系.vhost.消费者消费消息时,会从各个节点拉取消息,如果保存消息的节点故障,则无法消费消息,如果做了消息持久化

  • docker搭建Zookeeper集群的方法步骤

    目录 0.前言 1.前提 2.开始搭建 解释 创建zoo.cfg 3.docker搭建 1.docker创建网络 2.启动第1个zk节点 3.启动第2个zk节点 4.启动第3个zk节点 4.访问节点 1.进入zk第一个节点的docker容器内部 2.使用zk的客户端进行访问 3.在zk中使用命令 0.前言 之前在学springcloud的时候,提到有些项目还是使用zookeeper作为注册中心. 因此决定掌握这个技能,但是本地为了测试而部署一套zookeeper集群还是比较麻烦的. 所以打算使用

  • redis 哨兵集群搭建的实现

    目录 前言 为什么需要哨兵集群 搭建前准备 搭建步骤 集群测试 前言 在上一篇,我们了解了redis 复制集群的完整的搭建流程,本篇来分享一下如何搭建 redis 哨兵集群. 为什么需要哨兵集群 redis哨兵集群要解决的问题是什么呢?搞清楚这个问题之后,就知道为什么需要哨兵集群了.我们知道,redis复制集群解决的是,高并发情况下,单节点的读性能瓶颈以及单节点问题: 但是复制集群的很明显的问题就是,当主节点挂掉后,集群将无法提供写业务,如果要恢复集群,则需要人工介入,这个必定会丢失数据不说,而

  • Redis的Cluster集群搭建的实现步骤

    目录 一.引言 二.Redis的Cluster模式介绍 1.Redis群集101 2.Redis群集TCP端口 3.Redis集群和Docker 4.Redis集群数据分片 5.Redis集群之主从模型 6.Redis集群一致性保证 7.Redis群集配置参数 三.创建和使用Redis群集 四.使用创建群集脚本创建Redis群集 五.测试故障转移 六.手动故障转移 七.总结 一.引言 本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的所涉及到的概念做深入的探讨.本文只是针

  • Windows下搭建Redis集群的方法步骤

    目录 Redis集群: 在Windows系统下搭建Redis集群: 1.下载并安装Redis 2.下载并安装ruby 3.创建Redis集群 Redis集群: 如果部署到多台电脑,就跟普通的集群一样:因为Redis是单线程处理的,多核CPU也只能使用一个核, 所以部署在同一台电脑上,通过运行多个Redis实例组成集群,然后能提高CPU的利用率. 在Windows系统下搭建Redis集群: 需要4个部件: Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建

  • docker搭建redis三主三从集群的实现步骤

    目录 一 准备redis镜像.容器 1.1 下载redis6.0.8 1.2 准备6台服务器配置文件 1.3 创建6台redis容器 二 创建主从集群关系 2.1 进入任意一台redis容器 2.3 查看集群状态 三 主从容错切换迁移案例 3.1 数据读写存储 3.2 容错切换迁移 四 主从扩容 4.1 新建6387.6388两个节点+新建后启动+查看是否8节点 4.2 进入6387容器实例内部 4.3 将新增的6387节点(空槽号)作为master节点加入原集群 4.5 检查集群情况第1次 4

  • docker搭建redis哨兵集群并且整合springboot的实现

    目录 1.创建两个文件夹redis和sentinel文件夹用于存放docker-compose.yml文件 2.redis下的docker-compose.yml 3.sentinel下的docker-compose.yml文件以及sentinel.conf配置文件 4.spring boot整合redis哨兵 5.哨兵工作方式 6.Redis-Cluster集群 7.redis常见问题 1.创建两个文件夹redis和sentinel文件夹用于存放docker-compose.yml文件 2.r

随机推荐