Linux-Redis哨兵搭建

环境资源准备

主机名IP端口号角色
vm1192.168.64.156379/26379master
vm2192.168.64.166379/26379slave
vm3192.168.64.176379/26379slave

6379为redis服务暴露端口号、26379为sentinel暴露端口号。

安装Redis

 # 包文件下载 wget https://github.com/redis/redis/archive/7.2.2.tar.gz # 解压文件tar -zxvf redis-7.2.2.tar.gz# 进入包文件夹cd redis-7.2.2/# 安装依赖文件## Ubuntusudo apt install -y gcc g++ make## CentOSsudo yum -y install gcc g++ make## 创建安装文件夹、数据文件夹mkdir -p /usr/local/redis/data/# 再次检查当前目录是否为redis源码文件,如果是进行make操作make# make install安装到指定文件夹make install PREFIX=/usr/local/redis/

配置文件

文件路径

/etc/redis.conf

主节点(去除中文解释)

daemonize yeslogfile "/var/log/redis.log"bind 0.0.0.0port 6379protected-mode nopidfile /var/run/redis_6379.piddir /usr/local/redis/data  # 指定生成rdb文件的路径 相对路径受到启动redis的操作路径的影响slave-read-only yesslave-priority 100appendonly yes  # 开启AOF模式appendfilename "appendonly.aof"appendfsync everysec  requirepass 123456

从节点(去除中文解释)

注意将slaveof设置为置顶的主节点地址。

daemonize yeslogfile "/var/log/redis.log"bind 0.0.0.0port 6379protected-mode nopidfile /var/run/redis_6379.piddir /usr/local/redis/data  # 指定生成rdb文件的路径 相对路径受到启动redis的操作路径的影响slave-read-only yesslave-priority 90 # 主节点最高,其他依次递减,一个从节点90,一个从节点85appendonly yes  # 开启AOF模式appendfilename "appendonly.aof"appendfsync everysec  requirepass 123456slaveof 192.168.64.15 6379masterauth 123456

启动服务

/usr/local/redis/bin/redis-server /etc/redis.conf

查看启动状态

root@vm1:/home/ubuntu/redis-7.2.2# ps -ef | grep redisroot        7827       1  0 14:48 ?        00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:6379root        7848    1171  0 14:48 pts/0    00:00:00 grep --color=auto redis

登录验证

/usr/local/redis/bin/redis-cli

图片

启动成功,从节点设置成功

此时,主从redis已经设置完毕,开始搭建哨兵。

哨兵配置文件

文件路径

/etc/sentinel.conf

配置内容

创建文件夹

mkdir -p /usr/local/redis/temp
protected-mode noport 26379dir /usr/local/redis/templogfile "/var/log/sentinel.log"daemonize yessentinel monitor mymaster 192.168.64.15 6379 2   # mymaster集群的名字,2个节点以上认为不可用,进行fall oversentinel down-after-milliseconds mymaster 10000 # 判断主节点宕机时间,主观下线sentinel failover-timeout mymaster 60000  # 两次fallover间隔sentinel auth-pass mymaster 123456sentinel parallel-syncs mymaster 1 # 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。

sentinel monitor,后第一个字符串为集群名称,一般为mymaster即可,后面跟主节点IP和端口号。三个节点配置文件相同。配置时去除中文。

启动sentinel服务

/usr/local/redis/bin/redis-sentinel /etc/sentinel.conf

查看启动情况

root@vm1:/home/ubuntu/redis-7.2.2# ps -ef | grep redisroot        7827       1  0 14:48 ?        00:00:01 /usr/local/redis/bin/redis-server 0.0.0.0:6379root        7887       1  0 14:57 ?        00:00:00 /usr/local/redis/bin/redis-sentinel *:26379 [sentinel]root        7895    1171  0 14:58 pts/0    00:00:00 grep --color=auto redis

利用python检测哨兵节点切换

import time

from redis.sentinel import Sentinel

sentinel_list = [
    ("192.168.64.15", 26379),
    ("192.168.64.16", 26379),
    ("192.168.64.17", 26379),
]

mySentinel = Sentinel(sentinel_list, )
for i in range(1000):
    try:
        print(mySentinel.discover_master("mymaster"))
        time.sleep(1)
    except:
        pass

图片

此时节点进行了切换,从日志可以看出切换过程。

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/947296.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【python】unittest单元测试

文章目录 基本使用不同启动方式的区别 基本使用 下面是根据文档写的一个demo,主要的内容基本都包含了,使用时导入自己的业务类测试类中的方法就行。 import unittest# 测试类不强制test开头,仅作为规范。但必须继承unittest.TestCase class…

基于SpringBoot的野生动物保护发展平台的设计与实现(源码+SQL+LW+部署讲解)

文章目录 摘 要1. 第1章 选题背景及研究意义1.1 选题背景1.2 研究意义1.3 论文结构安排 2. 第2章 相关开发技术2.1 前端技术2.2 后端技术2.3 数据库技术 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系统需求分析 4. 第4章 系统概要设计4.1 系统功能模块设计4.2 数据库设计 5.…

Linux一些问题

修改YUM源 Centos7将yum源更换为国内源保姆级教程_centos使用中科大源-CSDN博客 直接安装包,走链接也行 Index of /7.9.2009/os/x86_64/Packages 直接复制里面的安装包链接,在命令行直接 yum install https://vault.centos.org/7.9.2009/os/x86_64/Pa…

ELK 使用教程采集系统日志 Elasticsearch、Logstash、Kibana

前言 你知道对于一个系统的上线考察,必备的几样东西是什么吗?其实这也是面试中考察求职者,是否真的做过系统开发和上线的必备问题。包括:服务治理(熔断/限流) (opens new window)、监控 (opens new window)和日志,如果…

04-spring-理-ApplicationContext的实现

实现1&#xff1a;ClassPathXmlApplicationContext 1、内部维护了 DefaultListableBeanFactory 2、通过XmlBeanDefinitionReader 读取配置文件将结果加入到 DefaultListableBeanFactory 3、没有维护 bean后置处理器 &#xff0c;可以通过在xml配置 <context:annotation-c…

【linux板卡】lubancat通过vnc远程访问桌面

鲁班猫开发板通过远程VNC连接桌面&#xff1a; 硬件&#xff1a;lubancat2&#xff0c;网线 软件&#xff1a;ssh软件&#xff0c;vnc viewer 参考链接&#xff1a;https://training.eeworld.com.cn/video/38821 1、ssh连接lubancat2 &#xff0c;输入ifconfig查看ip 2、输入 …

HarmonyOS Next ArkUI @State @Prop @Link @Provide @Consume笔记

学习目标&#xff1a; State装饰器 Prop装饰器 Link装饰器 Link装饰器 Provide装饰器 Consume装饰器 学习内容&#xff1a; GrandsonComponent Component export struct GrandsonComponent {Consume(provideValue) consumeValue: numberbuild() {Column(){Text(孙组件).font…

【GPT】Coze使用开放平台接口-【8】创建应用

coze 可以用来创建简单的应用啦&#xff0c;这样测试起来会比原本的 Agent 更加方便&#xff0c;我们来看看如何创建一个“语音Real不Real”的应用。这个应用就是来检测语音是否是伪造的&#xff0c;克隆或者是合成的。先看下原本 Agent 的样子&#xff1a; 深度伪造语音检测&a…

选择器(结构伪类选择器,伪元素选择器),PxCook软件,盒子模型

结构为类选择器 伪元素选择器 PxCook 盒子模型 (内外边距&#xff0c;边框&#xff09; 内外边距合并&#xff0c;塌陷问题 元素溢出 圆角 阴影: 模糊半径&#xff1a;越大越模糊&#xff0c;也就是越柔和 案例一&#xff1a;产品卡片 <!DOCTYPE html> <html lang&q…

[极客大挑战 2019]Knife1

这里很显然&#xff0c;根据提示可以猜测&#xff0c;已经有一句话木马上传了&#xff0c;但是路径这里不是很清楚&#xff0c;不知道路径在哪里&#xff0c;不过还是用菜刀连一下试试&#xff1a; 连接成功&#xff0c;在根目录下发现flag。不过如果不用菜刀&#xff0c;可以用…

面试手撕笔记ML/DL

数据集 数据集的批处理迭代器 Deep-ML | Batch Iterator for Dataset 实现一个批量可迭代函数&#xff0c;该函数在numpy数组X和可选numpy数组y中进行采样。该函数应该生成指定大小的批量。如果提供了y&#xff0c;则该函数应生成&#xff08;X, y&#xff09;对的批次&#…

flink cdc oceanbase(binlog模式)

接上文&#xff1a;一文说清flink从编码到部署上线 环境&#xff1a;①操作系统&#xff1a;阿里龙蜥 7.9&#xff08;平替CentOS7.9&#xff09;&#xff1b;②CPU&#xff1a;x86&#xff1b;③用户&#xff1a;root。 预研初衷&#xff1a;现在很多项目有国产化的要求&#…

JavaWeb开发(五)Servlet-ServletContext

1. ServletContext 1.1. ServletContext简介 1.1.1. ServletContext定义 ServletContext即Servlet上下文对象&#xff0c;该对象表示当前的web应用环境信息。 1.1.2. 获取ServletContext对象: &#xff08;1&#xff09;通过ServletConfig的getServletContext()方法可以得到…

ubuntu 如何使用vrf

在Ubuntu或其他Linux系统中&#xff0c;您使用ip命令和sysctl命令配置的网络和内核参数通常是临时的&#xff0c;这意味着在系统重启后这些配置会丢失。为了将这些配置持久化&#xff0c;您需要采取一些额外的步骤。 对于ip命令配置的网络接口和路由&#xff0c;您可以将这些配…

2024秋语法分析作业-B(满分25分)

特别注意&#xff1a;第17条产生式改为 17) Stmt → while ( Cond ) Stmt 【问题描述】 本次作业只测试一个含简单变量声明、赋值语句、输出语句、if语句和while语句的文法&#xff1a; 0) CompUnit → Block 1) Block → { BlockItemList } 2) BlockItemList → BlockItem…

SQL-leetcode-197. 上升的温度

197. 上升的温度 表&#xff1a; Weather ---------------------- | Column Name | Type | ---------------------- | id | int | | recordDate | date | | temperature | int | ---------------------- id 是该表具有唯一值的列。 没有具有相同 recordDate 的不同行。 该表包…

C#编写的金鱼趣味小应用 - 开源研究系列文章

今天逛网&#xff0c;在GitHub中文网上发现一个源码&#xff0c;里面有这个金鱼小应用&#xff0c;于是就下载下来&#xff0c;根据自己的C#架构模板进行了更改&#xff0c;最终形成了这个例子。 1、 项目目录&#xff1b; 2、 源码介绍&#xff1b; 1) 初始化&#xff1b; 将样…

通过无障碍服务(AccessibilityService)实现Android设备全局水印显示

一、无障碍功能简介 首先我们先来了解下无障碍功能的官方介绍&#xff1a; 无障碍服务仅应用于帮助残障用户使用 Android 设备和应用。它们在后台运行&#xff0c;并在触发 AccessibilityEvents 时接收系统的回调。此类事件表示用户界面中的某些状态转换&#xff0c;例如焦点已…

【Blackbox Exporter】prober.Handler源码详细分析

http.HandleFunc(path.Join(*routePrefix, "/probe"), func(w http.ResponseWriter, r *http.Request) {sc.Lock()conf : sc.Csc.Unlock()prober.Handler(w, r, conf, logger, rh, *timeoutOffset, nil, moduleUnknownCounter, allowedLevel)})我们了解到blackbox_ex…

SpringMVC核心、两种视图解析方法、过滤器拦截器 “ / “ 的意义

SpringMVC的执行流程 1. Spring MVC 的视图解析机制 Spring MVC 的核心职责之一是将数据绑定到视图并呈现给用户。它通过 视图解析器&#xff08;View Resolver&#xff09; 来将逻辑视图名称解析为具体的视图文件&#xff08;如 HTML、JSP&#xff09;。 核心流程 Controlle…