数据库:Redis哨兵及cluster集群部署

一、redis数据库哨兵模式

目录

一、redis数据库哨兵模式

1、什么是哨兵模式

2、哨兵的作用

3、哨兵结构组成

4、哨兵故障转移机制

5、哨兵工作、切换原理

6、哨兵主节点选举原则

7、哨兵模式部署

二、redis数据库cluster集群

1、cluster集群优点、数据存储及同步方式

2、cluster集群原理

3、 cluster集群部署

①实验环境

② 群集部署-reids编译准备

③每台服务器创建2个实例并配置

③启动多实例并查看服务

​④启动redis群集

⑤验证群集结果


1、什么是哨兵模式

哨兵模式:可以自动切换解决单点故障,但是不能负载均衡,存储能力受限制。

哨兵核心功能:在主从复制的基础上,实现了主节点的自动故障转移

2、哨兵的作用

监控:监控主节点和从节点是否在正常运行

故障自动转移:当主节点不能正常工作时,哨兵会开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其他从节点改为复制新的主节点。

通知(提醒):哨兵将故障转移结果发送给客户端

3、哨兵结构组成

哨兵节点:一个或多个哨兵节点组成,特殊的redis节点不存储数据

数据节点:主节点和从节点即数据节点

4、哨兵故障转移机制

主观下线:一个哨兵认为主节点有问题,则进行下一步即选举

客观下线:多个哨兵(半数以上)认为主节点有问题(客观下线是主节点上才会有的概念)

①由哨兵节点定期监控主节点是否发生故障

1个从节点每隔1s向哨兵发送ping的命令做心跳检测,主节点在一定时间内不回复或回复有问题则单个从节点认为主节点下线即主观下线,若超过半数的哨兵认为主节点下线了即客观下线真正下线了。

5、哨兵工作、切换原理

哨兵原理:分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障是通过投票机制选新的master并将所有slave连接到新的master上,整个哨兵的集群数量不能少于3个节点(3台服务器)

①哨兵对主从复制进行监控,所有redis数据库节点

②哨兵之间进行相互监控。监控哨兵彼此

③监控目的:哨兵之间检测检测彼此的存好状态,检测主从复制redis数据库是为了实现故障切换

④当master挂掉,哨兵会即及时发现然后进行投票选出一个新的master服务器(哨兵个数要是奇数)。

⑤选出的slave完成从向主的一个切换

⑥完成其他服务器对新的maste的配置指向

6、哨兵主节点选举原则

①过滤掉不健康的(已下线的节点),没有回复哨兵ping响应的从节点

②选择配置文件中从节点优先级配置最高的。(replica-priority,默认值为100)

③选择复制便宜量最大,也就是复制最完整的从节点

7、哨兵模式部署

①试验环境

redis端口哨兵端口
192.168.30.116379192.168.30.1126379
192.168.30.136379192.168.30.1326379
192.168.30.146379192.168.30.1426379

②哨兵模式基于主从复制,所有要先部署主从复制。主从复制在上一章节redis数据库高可用中有详细步骤,请参考。

③部署完成主从复制之后进行哨兵部署

三个节点配置:
vim /opt/redis-5.0.7/sentinel.conf  #编辑哨兵配置文件
protected-mode  no  #关闭保护机制 17行
port 26379    #配置监听端口 21行
daemonize  yes   #开启守护进程 26行
logfile “/var/log/sentinel.log”   #指定sentinel日志文件位置36行
dir   "/var/lib/redis/6379"           #65行,指定数据库存放路径
sentinel monitor mymaster 192.168.30.11 6379 2  #指定主节点为192.168.30.11 端口号6379   2表示至少2个哨兵同意才能进行故障转移
sentinel down-after-milliseconds mymaster 30000 #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel failover-timeout mymaster 180000   #146行,故障节点的最大超时时间为180000(180秒)

④配置完成后启动哨兵模式,注意一定要先启动maste再启动俩个salve。

master:
redis-sentinel sentinel.conf   &  #先启动master
slave:
redis-sentinel sentinel.conf   &
redis-cli -p 26379 info sentinel  #启动完成后在maser上查看哨兵信息

⑤验证哨兵的故障迁移功能,关闭master的redis数据库。

/etc/init.d/redis_6379  stop #关闭master的redis数据库
tail  -f  /var/log/sentinel.log #试试查看slave的日志是否切换了主

⑥验证哨兵模式注意事项:若使用kill  -9 直接杀掉master的redis进程可能会导致再次重启redis报错:/var/run/redis_6379.pid exists, process is already running or crashed。此报错为reids的pid文件已经存在导致,强制杀死进程pid文件未删除。只需要将/var/run/redis_6379.pid文件删除再启动即可。

二、redis数据库cluster集群

1、cluster集群优点、数据存储及同步方式

cluster集群优点:读写可以负载均衡、自动故障转移、突破单机存储限制、分布式存储、三主三从

同步的两种方式:master1只给slave1同步数据、master和master同步数据(心跳线)

数据如何存储:使用Hash算法有16384个槽位,每个槽位有512字节。

2、cluster集群原理

3、 cluster集群部署

①实验环境

注意:本文基于三台机器所以只需每台机器2个实例端口不通即可,若是同一台机器则需要每个实例的端口都不一样

master

端口

slave

端口

192.168.30.11

6001

192.168.30.11

6002

192.168.30.13

6001

192.168.30.13

6002

192.168.30.14

6001

192.168.30.14

6002

② 群集部署-reids编译准备

三台机器执行:
systemctl stop firewalld #关闭防火墙
setenforce 0  #关闭selinux
yum install gcc gcc-c++ make -y  #安装编译工具
#将安装包传输到每台机器的/opt目录下,安装包本人资源中心中redis-5.0.7.tar.gz可自行下载
tar zxvf redis-5.0.7.tar.gz  #将安装包解压在当前目录
cd  redis-5.0.7   #进入解压后的文件夹中
make #编译为二进制语言
make install prefix=/url/local/redis #写入磁盘指定位置/url/local/redis

③每台服务器创建2个实例并配置

三台机器执行:
cd /etc       #进入/etc目录
mkdir reids   #创建 redis目录
cd redis      #进入redis目录
mkdir -p redis-cluster/redis6001 #创建实例1文件夹
mkdir -p redis-cluster/redis6002 #创建实例2文件夹
cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis6001 #实例1拷贝主配置文件
cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis6001 #实例1拷贝客户端、服务端工具
cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis6002 #实例2拷贝主配置文件
cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis6002 #实例2拷贝客户端、服务端工具
cd /etc/redis/redis-cluster/redis6001   #进入实例1进行配置文件修改
vim redis.conf              #编辑实例1的配置文件
bind 0.0.0.0      #69行,监听所有地址
protected-mode no #88行,修改,关闭保护模式
port 6001         #92行,修改,redis监听端口(同一台机器的2个实例端口号不能相同)
daemonize yes     #136行,开启守护进程,以独立进程启动
logfile /var/log/redis_6001.log    #172行,指定日志文件目录
cluster-enabled yes       #832行,取消注释,开启群集功能 
cluster-config-file nodes-6001.conf   #840行,取消注释,群集名称文件设置为实例端口.conf 
cluster-node-timeout 15000 #846行,取消注释群集超时时间设置 
appendonly yes #700行,修改,开启AOF持久化
#修改完成实例1后修改实例2,除端口号改为6002 日志文件目录改为6002.conf   群集名称文件改为nodes-6002.conf 其余与实例1一样即可。

③启动多实例并查看服务

三台机器执行:
cd /etc/redis/redis-cluster/redis6001  #进入对应实例1目录
redis-server redis.conf    #执行启动redis实例1
cd /etc/redis/redis-cluster/redis6002  #进入对应实例2目录
redis-server redis.conf    #执行启动redis实例2
ps -elf |grep redis  #查看是否为2个redis进程在运行

④启动redis群集

随便一台机器执行:
redis-cli --cluster create 192.168.30.11:6001 192.168.30.13:6001 192.168.30.14:6001 192.168.30.11:6002 192.168.30.13:6002 192.168.30.14:6002 --cluster-replicas 1
#前面三个ip+端口是master服务器,后面三个是slave服务器  --cluster-replicas 1 是指每个主节点有一个从节点

⑤验证群集结果

登录一台reids实例查看主从对应关系及哈希槽位范围
redis-cli -p 6001 -c #登录其中一台主redis   -c指集群模式连接可以互相跳转
cluster slots  #查看主从对应关系及哈希槽位范围 
set  ky26  123  #主上设置ky26值为123查看对应备上是否有此键

创建键值时redis-cli报错:(error) MOVED 12706,是因为没有以集群模式连接,测试登录时使用redis-cli  -p 6001  -c 即可解决此问题。 

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

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

相关文章

Chapter2 : SpringBoot配置

尚硅谷SpringBoot顶尖教程 1. 全局配置文件 SpringBoot使用一个全局的配置文件 application.properties 或者 application.yml ,该配置文件放在src/main/resources目录或者类路径/config目录下面, 可以用来修改SpringBoot自动配置的默认值。 yml是YA…

wxml模板,wxss模版,全局配置,页面配置,网络数据请求

WXML 模板语法 1、数据绑定 1.1、数据绑定的基本原则 ① 在 data 中定义数据② 在 WXML 中使用数据 1.2、在 data 中定义页面的数据 在页面对应的 .js 文件中,把数据定义到 data 对象中即可: Page({data: {//字符串数据info:init data}, });1.3、M…

《Kubernetes部署篇:Ubuntu20.04基于containerd部署kubernetes1.24.12单master集群》

一、架构图 如下图所示: 二、环境信息 主机名K8S版本系统版本内核版本IP地址备注k8s-master-621.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.62master节点k8s-worker-631.24.12Ubuntu 20.04.5 LTS5.15.0-69-generic192.168.1.63worker节点k8s-worker-641…

二、SDN-计算机网络专项(2)

1、编码 编码形式: 以太网使用的编码方式为曼彻斯特编码。 2、信息传输速率 (1)香农定理 带宽为W(Hz)且有高斯噪音干扰(信噪比S/N)的信道极限信息传输速率为: 还有,信噪…

Linux_红帽8学习笔记分享_2

Linux_红帽8学习笔记分享_2 文章目录Linux_红帽8学习笔记分享_21.远程控制servera和serverb1.1开启多标签页1.2启用servera和serverb1.3连接servera和serverb2.退出子虚拟机并关机2.1退出子虚拟机2.2关闭虚拟机2.3重启虚拟机3.Linux在使用过程中遇到的基础操作3.1退出至登录界面…

Spring销毁的几种实现

有这3种方法,但是程序执行完成并没有打印出来。一定要手动close.手动执行后会调用如下逻辑:org.springframework.context.support.AbstractApplicationContext#doCloseorg.springframework.context.support.AbstractApplicationContext#destroyBeansorg.…

点亮孙武不夜城 拉响惠民经济新引擎

凡战者,以奇制胜。这次的招商很特别—孙武不夜城招商项目正式启动!      无租金、无投资、无风险合伙人制。      现诚邀广大商家合作,相聚不夜城。同此道者,合大志,鸣鼓纳征,亮惠民夜生活&#xf…

一位年薪35W的测试被开除,回怼的一番话,令人沉思

一位年薪35W测试工程师被开除回怼道:“反正我有技术,在哪不一样” 一技傍身,万事不愁,当我们掌握了一技之长后,在职场上说话就硬气了许多,不用担心被炒,反过来还可以炒了老板,这一点…

如何防御恶意流量攻击(CC、DDoS)?

随之网络安全的地位不断提高,越来越多的攻击得以解决,但随之而来的也是新的攻击在变着花样地出现,就好比DDoS攻击与CC攻击就是这些年较为常见的攻击手段,这两种攻击分别针对网站的应用层和网络层。 我们网站运维人员一定要做好功课…

Vue--构建亚马逊多账号的后台数据展示

效果展示&#xff1a; 根据自创的账号个数来创建对应的表格个数 移动到对应商品时展示该商品的日出售变化情况 设计思路&#xff1a; 获取亚马逊平台个人账号数据传入自定义组件<WeekTable> <WeekTable>组件获取到数据后&#xff0c;就会重载DOM元素内容。我们在组…

Ae 入门系列之七:文本动画

Ae 提供了多种制作文本动画的方法。既可以在时间轴面板上基于基本属性手动添加关键帧&#xff0c;还可以使用专门的文本动画制作工具&#xff0c;或者直接使用动画预设。有关文本图层的基础知识请参阅&#xff1a;《Ae&#xff1a;文本图层操作基础》提示&#xff1a;文本动画的…

员工培训Employee Training

前言 加油 原文 员工培训常用会话 ❶ When is our training session? 我们的课程培训在什么时候? ❷ You shouldn’t be absent at training sessions. 你不能缺席课程培训。 ❸ You should follow these rules and regulations. 你应该遵守这些规章制度。 ❺ The staff…

ROS实践11 自定义头文件并调用

文章目录运行环境&#xff1a;思路&#xff1a;1.1 编写头文件1.2 includepath添加头文件路径1.3 编写可执行文件1.4 配置文件1.5 编译运行运行环境&#xff1a; ubuntu20.04 noetic 宏基暗影骑士笔记本 思路&#xff1a; 类和函数&#xff1a; 头文件 声明 可执行文件 定义…

测试行业3年经验,从大厂裸辞后,面试阿里、字节全都一面挂,被面试官说我的水平还不如应届生

测试员可以先在大厂镀金&#xff0c;以后去中小厂毫无压力&#xff0c;基本不会被卡&#xff0c;事实果真如此吗&#xff1f;但是在我身上却是给了我很大一巴掌... 所谓大厂镀金只是不卡简历而已&#xff0c;如果面试答得稀烂&#xff0c;人家根本不会要你。况且要不是大厂出来…

Leetcode6365. 最少翻转操作数题解

题目在此&#xff1a;力扣 首先&#xff0c;先祝福自己本周周赛过了三题。耶耶耶耶耶耶&#xff01;虽然第一题因为脑子不好使想了半天&#xff0c;还WA了一次。衷心祈祷今年力扣能上1800分&#xff01;&#xff01;&#xff01; 这道题&#xff0c;我看了一些通过人数&#x…

【面试】Java高频面试题(2023最新整理)

文章目录一、java基础1、JDK 和 JRE 有什么区别&#xff1f;2、 和 equals 的区别是什么&#xff1f;3、final 在 java 中有什么作用&#xff1f;4、java 中的 Math.round(-1.5) 等于多少&#xff1f;5、String 属于基础的数据类型吗&#xff1f;6、String str"i"与 …

JUC并发编程高级篇第三章之CAS[Unsafe和原子增强类]

文章目录1、CAS的简介1.1、什么是CAS1.2、使用CAS的前后对比1.3、CAS如何做到不加锁的情况&#xff0c;保证数据的一致性1.4、什么是Unsafe类1.5、CAS方法参数详解1.6、CAS的原理1.7、 CAS的缺点2、原子操作类2.1、基本类型原子类2.2、数据类型原子类2.3、引用类型原子类2.4、对…

66-插入排序

目录 1.直接插入排序 2.折半插入排序 3.在数组arr[l...r]上使用插入排序 类似打扑克牌&#xff0c;整理牌的时候&#xff0c;都是把乱的牌向已经码好的牌中插入——天然的插入排序。 1.直接插入排序 每次选择无序区间的第一个元素&#xff0c;插入到有序区间的合适位置&am…

chatGPT中国入口-ChatGPT评论文章-ChatGPT怎么用

国内怎么玩chatGPT 如果您在国内使用ChatGPT&#xff0c;主要的问题可能是连接OpenAI服务器的速度和稳定性。由于OpenAI位于美国&#xff0c;可能受到中国的网络限制和防火墙的影响&#xff0c;造成访问速度比较慢或不稳定。为了解决这个问题&#xff0c;您可以采取以下方法&a…

idea常用快捷键,包的介绍,访问修饰符

这里有的是我自己定义的快捷键&#xff0c;可以到图片是指定位置查看对应的快捷键是什么。删除当前行&#xff0c;Ctrld复制当前行&#xff0c;自己配置CtrlShift向下箭头补全代码 alt /注释Ctrl /自动导入包在上面位置把两个选项选中&#xff0c;在要导入包的红色位置输入al…