IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> redis主从配置和redis哨兵配置 -> 正文阅读

[大数据]redis主从配置和redis哨兵配置

主从配置

redis 主从配置master slave

优点:
防止单点故障(除了单机版,都可以)
读写分离,更好的实现多读写少
在这里插入图片描述
克隆两台redis虚拟机作为从机

复制操作文件
cp /usr/redis/redis-5.0.5/redis.conf /usr/redis/bin/master.conf //redis1
cp /usr/redis/redis-5.0.5/redis.conf /usr/redis/bin/slave1.conf //redis2
cp /usr/redis/redis-5.0.5/redis.conf /usr/redis/bin/slave2.conf //redis3

在all-session 中: ls /usr/redis/bin 修改配置文件:
在redis1主机修改配置文件 vim /usr/redis/bin/master.conf
:69 bind 192.168.152.31 绑定IP
:92 port 6666 端口号
:136 daemonize yes 守护进程

在redis2从机修改配置文件 vim slave1.conf
:136 daemonize yes 守护进程
:69 bind 192.168.152.32 绑定IP
:92 port 7777
在文件末尾加上一行 :1372 slaveof 192.168.152.31 6666

在redis3从机修改配置文件 vim slave2.conf
:136 daemonize yes 守护进程
:69 bind 192.168.152.33 绑定IP
:92 port 8888
在文件末尾加上一行 :1372 slaveof 192.168.152.31 6666

启动
redis1: /usr/redis/bin/redis-server /usr/redis/bin/master.conf
redis2: /usr/redis/bin/redis-server /usr/redis/bin/slave1.conf
redis3: /usr/redis/bin/redis-server /usr/redis/bin/slave2.conf

在all-session中: ps -ef |grep redis-server|grep -v grep

测试:
redis1: /usr/redis/bin/redis-cli -h 192.168.152.31 -p 6666 info
redis2: /usr/redis/bin/redis-cli -h 192.168.152.32 -p 7777 info
redis3: /usr/redis/bin/redis-cli -h 192.168.152.33 -p 8888 info

在all-session中使用: info replication查看主从机角色

redis1主机可以读写
redis2,redis3只能读取

特点:master/slave角色分工明确,master/slave数据相同,降低master读压力,从库分担

原理:
在这里插入图片描述
1.从机服务器链接主机服务器,发送PSYN命令
2.主服务器接受到PSYN命令后,开始fork子进程执行BGSAVE命令将当前存在的数据生成RDB文件,并使用缓冲区记录此后执行的所有写命令
3.主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
4.从服务器收到快照文件后丢弃旧数据,加载收到的快照文件
5.主服务器块照发送完毕后开始向从服务区发送缓冲区中的写命令
6.从服务器完成对快照的载入,开始接收命令的请求,并执行这些来自缓冲区的写命令

缺点:
无法保证高可用,一旦主服务器挂了,整个主从就不能写数据了
没有解决master的写压力

redis 哨兵配置 sentinel

优点:解决了master宕机没有写节点的问题,从slave中选举新的主节点,执行写操作

实现:

redis1执行: cp /usr/redis/redis-5.0.5/sentinel.conf /usr/redis/bin/sentinel1.conf
vim /usr/redis/redis-5.0.5/sentinel1.conf
redis2执行: cp /usr/redis/redis-5.0.5/sentinel.conf /usr/redis/bin/sentinel2.conf
vim /usr/redis/redis-5.0.5/sentinel2.conf

redis3执行: cp /usr/redis/redis-5.0.5/sentinel.conf /usr/redis/bin/sentinel3.conf
vim /usr/redis/redis-5.0.5/sentinel3.conf

#关闭保护模式 当开启保护模式的时候默认只能本机连
protected-mode no #17

#哨兵端口port 26666 #21 port 27777 port 28888

#添加守护进程模式daemonize yes #26

#添加指明日志文件名logfile “./temp.log” #36

#修改工作目录dir “/tmp” #65

#哨兵监控的master名称可以随便起,ip和端口固定 quorum 当哨兵是集群时,有多少个哨兵认为master失效(客观下线),master才算失效。
sentinel monitor mymaster 192.168.152.31 8888 1 #84

#master或slave多长时间(默认30秒)不能使用后标记为down状态。
sentinel down-after-milliseconds mymaster 30000 #113

#设置master和slaves验证密码
sentinel auth-pass mymaster 123456 #103

哨兵启动:

redis1启动: /usr/redis/bin/redis-sentinel /usr/redis/bin/sentinel1.conf

redis2启动: /usr/redis/bin/redis-sentinel /usr/redis/bin/sentinel2.conf

reids3启动: /usr/redis/bin/redis-sentinel /usr/redis/bin/sentinel3.conf

在all-session中:ps -ef|grep redis|grep -v grep可以看到redis实例和哨兵实例

测试: shutdown save 在redis1 执行

info replication 在All Session执行(稍等一会,节点切换需要时间)

看到redis2或者3已经变成了master,可以读写

/usr/redis/bin/redis-server /usr/redis/bin/master.conf //启动redis1

/usr/redis/bin/redis-cli -h 192.168.152.31 -p 6666
edis1自动变为从机 在redis1宕机期间,其他主机执行命令的结果都会被同步

注意:超过半数哨兵宕机,则哨兵模式无效

ps -ef|grep redis |grep -v grep 查看哨兵进程

特点:高可用,哨兵监控各个节点,自动故障迁移

缺点:主从模式切换需要时间,切换期间不能对外提供服务,没有解决master写的压力

原理:
在这里插入图片描述

1.监控:sentinel会不断的检查你的主服务器和从服务器是否正常运作
两个定时任务:
每十秒每个sentinel对master和slave执行info 目的:发现是slave节点,确认主从关系

每一秒每个sentinel对其它sentinel和redis实例执行ping 目的:心跳失败判断依据

2.当主机宕机

3.在从机服务器中执行SLAVEOF NO ONE 命令,断开主从关系并且提升为主库继续服务

当有多个从节点遵循下列原则选举新主节点:
slave-priority最高的slave节点(默认相同1)
选择复制偏移量最大的节点
否则选择runid最小的

4.将主库重新启动后执行SLAVEOF 命令,将其设置为从库,数据更新回来

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:14:20  更:2022-02-19 01:14:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:54:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码