redis sentinel哨兵实现redis高可用

一.redis主从

在同一台机器上部署主从:

主上的配置
配置文件:

/etc/redis.conf

关于和主从有关的具体配置

bind 127.0.0.1
port 6379
pidfile /var/run/redis_6379.pid
logfile "/var/log/redis_6379.log"
dir /data/redis

从上的配置
配置文件:

cp /etc/redis.conf /etc/redis2.conf

具体需要更改的配置:

port 6380
pidfile /var/run/redis_6380.pid
logfile "/var/log/redis_6380.log"
dir /data/redis2
还需要增加一行(指定主):
replicaof 127.0.0.1 6379 #我的redis是5以上
或者
Slaveof 127.0.0.1 6379 #5以下的

然后,创建从的数据目录:

mkdir /data/redis2

启动主从:

redis-server /etc/redis.conf
redis-server /etc/redis2.conf

查看:

netstat -lnpt |grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      6669/redis-server 1
tcp        0      0 127.0.0.1:6380          0.0.0.0:*               LISTEN      10022/redis-server

进入从redis:

redis-cli -h 127.0.0.1 -p 6380

关于主从的补充:
如果主上配置了密码:
requirepass ligen #ligen是密码
那么从上也需要进行相应的配置:

masterauth ligen #后面是密码

从上默认只读:

replica-read-only yes

redis主从事先不用同步,设置之后自动同步。

二.redis集群

redis集群是从3.0之后才支持的架构,官方称之为cluster。
redis集群有什么用?
一个redis,数据量大的话太过于臃肿,超过设备读写能力将会十分缓慢,而且单一设备不安全,容易导致丢失。
什么是redis集群?
redis集群是有多个redis节点组成。每个redis节点有主从redis构成,其中主只有一个,从可以有多个,而且从一般只做备份。多个redis节点共享数据,所有的redis数据集合才是完整的。
redis集群的特点:
它不支持同时处理多个键,当并发量很高的时候,同时创建键值会降低性能且导致不可预测是行为。redis集群根据算法均匀把键均匀的分布在各个节点上。支持在线增加、删除节点。客户端可以连任何一个节点进行读写。

redis集群配置搭建:
环境准备,准备三台机器,每台机器两个节点一主一从(需要把前面的Slaveof 127.0.0.1 6379 从配置删除),总共6个redis节点:
192.168.247.160:6379 master
192.168.247.160:6380 slave

192.168.247.170:6379 master
192.168.247.170:6380 slave

192.168.247.180:6379 master
192.168.247.180:6380 slave

额外用一台机器用来集群搭建好之后的增加和删除节点:
192.168.247.160:6381 master
192.168.247.160:6382 slave

环境准备好后,开始集群配置:

其中两台的配置如下,其他改端口和文件名就可以:

bind 192.168.247.160
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
dir /var/redis_6379
appendonly yes
#开启集群
cluster-enabled yes
#集群的配置文件,首次启动会自动创建
cluster-config-file nodes-6379.conf
#集群节点连接超时时间,15秒
cluster-node-timeout 15000
bind 192.168.247.160
port 6380
daemonize yes
pidfile /var/run/redis_6380.pid
dir /var/redis_6380
appendonly yes
#开启集群
cluster-enabled yes
#集群的配置文件,首次启动会自动创建
cluster-config-file nodes-6380.conf
#集群节点连接超时时间,15秒
cluster-node-timeout 15000

如果开启了firewalld,所有机器都需要增加如下规则:

firewall-cmd --permanent --add-port 6379-6380/tcp
firewall-cmd --permanent --add-port  16379-16380/tcp
firewall-cmd --reload

构建集群:

redis-cli --cluster create 192.168.247.160:6379 192.168.247.160:6380 192.168.247.170:6379 192.168.247.170:6380 192.168.247.180:6379 192.168.247.180:6380 --cluster-replicas 1

显示:

注意:如果提示如下错误

则是由于上次redis集群没有配置成功,生成了每个节点的配置文件和db的备份文件,所以才会产生这个错误。
所以办法就是删除redis数据目录文件。

redis集群增加节点

增加主节点192.168.247.160:6381 master
首先配置好配置文件:

bind 192.168.247.160
port 6381
daemonize yes
pidfile /var/run/redis_6381.pid
dir /data/redis_6381
appendonly yes
#开启集群
cluster-enabled yes
#集群的配置文件,首次启动会自动创建
cluster-config-file nodes-6381.conf
#集群节点连接超时时间,15秒
cluster-node-timeout 15000

创建目录:

mkdir /data/redis_6381

启动:

redis-server /etc/redis3.conf

将6381增加到集群中:

redis-cli --cluster add-node 192.168.247.160:6381 192.168.247.160:6380
#命令格式:6381 为要添加的节点
#6380 为已经存在的节点
#此时该节点只是作为主节点添加到了集群中,但是没有进行分片,是不可存储数据的,如果要存储数据,需要进行分片操作。

给6381节点分配槽:

redis-cli --cluster reshard 192.168.247.160:6381


查看节点:

为6381添加从节点
配置配置文件,跟之前类似,只需要修改端口和文件名就行。
启动之后,执行:

redis-cli --cluster add-node 192.168.247.160:6382 192.168.247.160:6381 --cluster-slave --cluster-master-id cb03a50941a8818e2f7bf4acfbbc68c4dbaf97e8
#添加从且指定主
#cb03a50941a8818e2f7bf4acfbbc68c4dbaf97e8 是master的id

redis集群操作

连接集群:
可以在任何一个节点上去连接集群,创建键值redis将根据算法分到主节点上

redis-cli -c -h 192.168.247.160 -p 6380

说明:在创建key的过程中,它会把不同的key分配到不同的slot中,即使我们登录到了129:6380,但在写入数据时,它会选择其他节点。

查看集群情况:

redis-cli --cluster check 192.168.247.180:6379 #任意节点都可以查看

删除集群节点:

redis-cli --cluster del-node 192.168.247.160:6382 88e3937e0e468ef8417ce47ad6e5aa5cfeb29b42
#这里必须是没有槽的节点,所以必须先移除槽,否则报错 被删除的node重启后,依然记得集群中的其它节点,这是需要执行cluster forget nodeid来忘记其它节点

删除主节点:
首先要归还槽,过程和分配槽类似,只不过是归还:

redis-cli --cluster reshard 192.168.247.160:6381


删除主节点,和删除从一样:

redis-cli --cluster del-node 192.168.247.160:6381 cb03a50941a8818e2f7bf4acfbbc68c4dbaf97e8

redis主从、集群相关推荐

  1. Redis 主从集群搭建及哨兵模式配置

    Redis 主从集群搭建及哨兵模式配置 最近搭建了redis集群及哨兵模式,为方便以后查看特此记录下来: 1.Redis安装 2.主从架构 2.1 Redis主从架构图 2.2Redis主从结构搭建 ...

  2. Redis主从集群搭建及其原理

    Redis主从集群搭建及其原理 1.Redis主从 1.1.搭建主从架构 1.2.准备实例和配置 1.3.启动 1.4.开启主从关系 1.5.测试 2.主从数据同步原理 2.1.全量同步 2.2.增量 ...

  3. redis主从集群搭建及容灾部署(哨兵sentinel)

    Redis也用了一段时间了,记录一下相关集群搭建及配置详解,方便后续使用查阅. 提纲 Redis安装 整体架构 Redis主从结构搭建 Redis容灾部署(哨兵sentinel) Redis常见问题 ...

  4. redis主从集群搭建eclipse_【Redis】Redis 主从模式搭建

    主从模式介绍 Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据 ...

  5. 分布式缓存——Redis高级彻底搞懂(Redis原理+主从+集群)

    -- 基于Redis集群解决单机Redis存在的问题 一.Redis持久化 Redis有两种持久化方案: RDB持久化 AOF持久化 1.RDB持久化 RDB全称Redis Database Back ...

  6. CentOS7 安装Redis Cluster集群

    上一篇中已经讲到了如何安装单击版Redis,这一篇我们来说下如何安装Cluster,关于哨兵模式这里我就不写文章安装了,有兴趣的同学可以自己去研究,哨兵模式可以在主从模式下在创建三台机器的哨兵集群监控 ...

  7. 七、redis分布式集群

    文章目录 一.redis持久化 1.1.RDB持久化 1.1.1.执行时机 1.1.2.RDB原理 1.1.3.小结 1.2.AOF持久化 1.2.1.AOF原理 1.2.2.AOF配置 1.2.3. ...

  8. redis分布式集群环境搭建

    redis 分布式集群可分为主从集群.哨兵集群.分片集群,本片文章我们就来分别介绍这三种集群环境的搭建. 本次搭建环境为 Linux 虚拟机系统. 在搭建 redis集群之前,需要先在 linux 系 ...

  9. redis 主从配置_Laravel 使用Redis缓存集群,主从集群配置就这么简单?

    前一节我们安装了Redis主从复制,在主从复制中,完成了数据的同步,master宕机后,可以切换到另外一台redis服务器进行读取和写入,完全没有不影响业务切换. 这一节我们讲解,Laravel中使用 ...

  10. 基于Docker搭建Redis集群(主从集群)

    最近陆陆续续有不少园友加我好友咨询 redis 集群搭建的问题,我觉得之前写的这篇 <基于Docker的Redis集群搭建> 文章一定是有问题了,所以我花了几分钟浏览之前的文章总结了下面几 ...

最新文章

  1. python —— 装饰器
  2. 最小二乘法矩阵微分偏导法证明
  3. check box 如何调整字体大小_CSS中关于box-sizing你可能需要知道的小知识
  4. 【原】WPF 主界面布局中DockPanel的停靠与默认填充
  5. 华为内核已经升级到鸿蒙,安卓再见!华为升级全力转向鸿蒙OS
  6. Win10 64位安装SQL2000(个人版)
  7. 【BZOJ5093】图的价值
  8. sklearn库各个算法学习笔记
  9. 极域电子书包课堂管理系统怎么控屏_极域电子教室使用说明
  10. 战旗html5播放器为什么卡顿,视频站启用html5播放器
  11. Spark Sql编程
  12. php+网络测速,网络测速步骤
  13. 入门级测试Kotlin实现PopWindow弹窗代码
  14. cmd如何远程重启服务器
  15. 2020-09-22
  16. CAD看图软件中怎么镜像图形?CAD镜像应用实例
  17. 使用 Learner Lab - 使用 Lambda 转换图片为 base64 格式
  18. 再见, Python, 你好, Julia
  19. android eclipse计算器布局,请教eclipse android 简单计算器入门 相关问题。
  20. 17蓝桥javaB 等差素数列

热门文章

  1. 论文精读:Faster R-CNN: Towards Real-Time ObjectDetection with Region Proposal Networks
  2. Error: Can't find Python executa Error: Can'tble python, you can set the PYTHON env variable.解决办法
  3. Errors报错记录
  4. c#上位机开发(三)——简易串口发送数据
  5. 使用Linux Deploy在android手机上部署Ubuntu
  6. c++读取mnn模型
  7. 什么是自动化测试框架?这就是自动化测试框架。
  8. YOLOv5实现目标识别全流程【超级详细!】
  9. GraphSAGE 源代码 -- 分图训练
  10. easyexcel Create workbook failure 问题解决