redis主从搭建和分片集群搭建
文章目录
- redis主从搭建
- 搭建一主一从:
- 下载安装redis:两台机器都需要操作
- 权限认证
- 理解主从复制原理、同步数据集
- 全量同步三个阶段:
- 增量同步:
- 心跳检测
- redis哨兵模式
- 部署方案
- 搭建配置
- 哨兵模式原理
- 建立连接
- 获取主服务器信息
- 获取从服务器信息
- redis分配集群搭建
redis主从搭建
搭建一主一从:
下载安装redis:两台机器都需要操作
- redis下载地址 https://redis.io/download
tar -zxvf redis-5.0.5.tar.gz
mv redis-5.0.5 redis
cd redis
make
cd src
make install
cd ..
mkdir bin
mv src/redis* bin/
修改master redis.conf:
#开启守护线程,后台启动
daemonize yes
# 开启远程访问
bind 0.0.0.0
# 关闭保护模式
protected-mode no
修改slave redis.conf
#开启守护线程,后台启动
daemonize yes
# 开启远程访问
bind 0.0.0.0
# 关闭保护模式
protected-mode no
# 配置主redis ip port
replicaof 39.96.204.209 6379
两天机器分别启动redis
cd bin
./redis-server ../redis.conf
进入master客户端:
./redis-cli
127.0.0.1:6379> set weijie 666
进入slave客户端
127.0.0.1:6379> get weijie
"666"127.0.0.1:6379> set weijie 222
(error) READONLY You can't write against a read only replica.#Slaver向Master发送ping命令,Master的响应pong命令
127.0.0.1:6379> ping
PONG
如果出现该值,则说明主从搭建成功!!!
权限认证
修改master redis.conf:
配置主redis密码
requirepass 123456
修改slaver redis.conf,配置从redis的master密码
masterauth 123456
重启master slaver机器的redis,写入和读取测试
master中:
127.0.0.1:6379> info replication
127.0.0.1:6379> set jie
(error) ERR wrong number of arguments for 'set' command
127.0.0.1:6379> set jie 666
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set jie 666
OK
slaver中:
127.0.0.1:6379> info replication
127.0.0.1:6379> get jie
"666"
配置成功!!!
理解主从复制原理、同步数据集
redis 2.8以前:只能支持全量同步+命令传播,slave发送sync命令给master --> master生成rdb文件以及缓冲区所有写命令给slave --> salve清空数据解释rdb文件,保存数据一致。
缓冲区是对redis的一种保护机制,redis会将写命令保存在缓冲区,然后再取出执行,有AOF缓冲区、AOF重写缓冲区(解决重写期间数据不一致问题)、输出缓冲区
等
AOF 缓冲区的作用:目的是维持主线程 AOF 文件的正常写入,保证在重写阶段,AOF 文件写入的逻辑不变。
AOF 重写缓存区作用:目的是记录 AOF 重写开始之后的键增删改的命令。
解释:https://www.v2ex.com/t/193687
redis 2.8以后:全量同步+增量同步,从第一次连上master --> 全量同步 --> 断线重连触发全量同步、增量同步(master 判断runid是否一致),除此之外都是增量同步。
全量同步三个阶段:
- 同步快照阶段:master创建并发送快照RDB给slave --> slave载入解析RDB,master同时将此阶段所产生的新的写命令存储到缓冲区。
- 同步写缓冲阶段:master向slave同步缓冲区的命令
- 同步增量阶段:master向slave同步写命令
增量同步:
- Redis增量同步主要值slave完成初始化后开始正常工作时,master发生的写操作同步到slave的过程。
- 通常情况下,master每执行一个写命令就会向slave发送相同的写命令,然后slave接受并执行
心跳检测
在命令传播阶段,从服务器默认会以每秒一次的频率向主服务器发送命令。
主要作用有三个:
- 检测主从的连接状态
- 辅助实现min-slaves,Redis可以通过配置防止主服务器在不安全的情况下执行写命令,配置信息(min-slaves-to-writ 3 min-slaves-max-lag 10 )表示从服务器的数量少于3个,或者三个从服务器的延迟(lag)值都大于或等于10
秒时,主服务器将拒绝执行写命令。 - 检测命令丢失,补发命令
redis哨兵模式
哨兵是Redis高可用解决方案:
由于一个或多个sentinel实例组成sentinel集群可以监视一个或多个主服务器和多个从服务器。
当主服务器进入下线状态时,sentinel可以将该主服务器下的某一从服务器升级为主服务器继续提供服务,从而保证redis的高可用。
redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务:监控、提醒、自动故障转移。
1、监控(Monitoring): Redis Sentinel实时监控主服务器和从服务器运行状态,并且实现自动切换。
2、提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知。
3、自动故障转移(Automatic failover): 当一个主服务器不能正常工作时,Redis Sentinel 可以将一个从服务器升级为主服务器, 并对其他从服务器进行配置,让它们使用新的主服务器。当应用程序连接Redis 服务器时, Redis Sentinel会告之新的主服务器地址和端口。
部署方案
搭建配置
slaves是自动发现,所以你没必要明确指定slaves
预留:后期补充
哨兵模式原理
建立连接
sentinel是一个特殊的redis服务器,不会进行持久化,sentinel实例启动后,每个sentinel会创建2个连向主服务器的网络连接。
命令连接:用于向主服务器发送命令,并接收响应
订阅连接:用于订阅主服务器的 sentinel:hello频道
!在这里插入图片描述
获取主服务器信息
Sentinel默认每10s一次,向被监控的主服务器发送info命令,获取主服务器和其下属从服务器的信息
127.0.0.1:6379> info
# Server
redis_version:5.0.5
os:Linux 3.10.0-229.el7.x86_64 x86_64
run_id:a4e06ab61b4116660aa37b85079ed482b0b695b1
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=1571684,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=1571551,lag=1
master_replid:366322125dd7dc9bc95ed3467cfec841c112e207
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1571684
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset
获取从服务器信息
当sentinel发现主服务器有新的从服务器出现时,sentinel会向从服务器建立命令连接和订阅连接了,在命令连接建立之后,sentinel还是默认10s一次,向从服务器发送info命令,并记录从服务器信息
向主服务器和从服务器发送消息(以订阅的方式)
哨兵模式后期搭建成功后再记录!
redis分配集群搭建
redis 3.0之后,Redis官方提供了完整的集群解决方案。
方案去中心化的方式,包括:sharding(分片)、replication(分区)、failover(故障转移)。称为redisCluster。
redis 5.0前采用redis-trib进行集群的创建和管理,需要ruby支持
redis 5.0可以直接使用redis-cli进行集群的创建和管理。
下面开始集群的搭建:redis 版本:5.0.5
搭建效果:
1.编译安装
tar -zxvf redis-5.0.5.tar.gz
mkdir redis-cluster
cd redis-cluster
mkdir 7001
cd ..
cd redis-5.0.5/src
make install PREFIX=/home/weijie/redis-cluster/7001
查看7001目录下出现bin目录,则按照成功
2.集群配置
配置准备
cd redis-cluster
cd 7001
#引用配置文件
cp /home/weijie/redis-5.0.5/redis.conf ./
修改配置
#修改配置文件
vim redis.conf
#修改端口
port=7001
#关闭保护模式
protected-mode no
#后台启动
daemonize yes
#禁用bind ip 端口
#bind 127.0.0.1 ::1
#开启集群模式
cluster-enabled yes
集群配置准备
cd redis-clustercp -r 7001 7002cp -r 7001 7003cp -r 7001 7004cp -r 7001 7005cp -r 7001 7006拷贝完后,修改其他redis.conf对应的端口号,其他参数不用动
配置启动脚本
cd redis-cluster
vim start.sh
start.sh内容如下
cd /home/weijie/redis-clustercd 7001
./bin/redis-server redis.confcd ..
cd 7002
./bin/redis-server redis.confcd ..
cd 7003
./bin/redis-server redis.confcd ..
cd 7004
./bin/redis-server redis.confcd ..
cd 7005
./bin/redis-server redis.confcd ..
cd 7006
./bin/redis-server redis.conf
stop.sh内容如下
kill -9 `ps -ef|grep redis-server | awk '{print $2}'
赋脚本写和执行的权限
chmod u+x start.sh
chmod u+x stop.sh
启动脚本:sh start.sh
启动成功!
创建redis集群:
./redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1
进入客户端:
cd 7001/bin
# -c 表示集群模式客户端
./redis-cli -h 127.0.0.1 -p 7001 -c
# 查看集群信息
cluster nodes
写入测试:
发现数据分片到7003,然后自动调整到7003
集群搭建完成!!!
redis主从搭建和分片集群搭建相关推荐
- Redis主从、哨兵及集群搭建
1.主从复制 目的:读写分离,主写,从读,容灾的快速恢复 主从复制原理: Slave 启动成功连接到master后会发送-个sync命令. Master 接到命令启动后台的存盘进程,同时收集所有接收 ...
- Redis 分片集群搭建
Redis 分片集群模式 主从和哨兵可以解决高可用.高并发读的问题.但是依然有两个问题没有解决: 海量数据存储问题,单台服务的磁盘存储终究是有瓶颈: master 负责写操作,高并发写情况下,单台 m ...
- linux系统中MongoDB数据库安装及分片集群搭建
史上最全的mongodb分片集群搭建,从介绍安装到集群搭建授权,你再也找不到比他更加详细的资料了,未经允许禁止转载!! 一.简介 MongoDB是一个便于开发和扩展设计的文档数据库,属于NoSQL数据 ...
- 搭建MongoDB分片集群
在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...
- DOCKER-COMPOSE搭建MONGODB分片集群(单机版)
docker-compose搭建mongodb分片集群(单机版) - 丰哥坑到 - 博客园
- Zookeeper单例搭建与伪集群搭建
Zookeeper单例搭建与伪集群搭建 搭建方式 单机安装 伪集群搭建 搭建方式 单机模式-- 运行在一台机器上 集群模式-- 运行在多个机器上形成"集合体" 伪集群模式-- 一台 ...
- CDH大数据平台搭建之SPARK集群搭建
CDH大数据平台搭建之SPARK集群搭建 一.安装规划 二.下载 三.安装及配置 1.解压 2.修改配置文件 四.启动 五.JPS检查节点 一.安装规划 参考CHD大数据平台搭建之集群规划 二.下载 ...
- redis主从、哨兵、集群概念
关于redis主从.哨兵.集群的介绍网上很多,这里就不赘述了. 一.主从 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重 ...
- CDH大数据平台搭建之KAFKA集群搭建
CDH大数据平台搭建之KAFKA集群搭建 一.安装规划 二.下载KAFKA 三.安装及配置 1.先安装zookeeper 2.解压 3.新建文件夹 4.修改config目录server.propert ...
最新文章
- TechTarget数据库Redis
- 3rd_party/flatbuffers/tmp/flatc: No such file or directory
- 010_JMS消息选择器
- vb+socket 编写入侵监听程序
- 一些常规形几何形状的绘制和效果填充(二)
- Docker_DockerFile
- [silverlight]WCF和Web Service(ASMX)的soap header传输方法
- mysql 42642 安装报错_1/5 MySQL入门总结:下载安装
- 新概念英语(1-37)Making a bookcase
- 0. 跟踪标记 (Trace Flag) 简介
- Adobe Ps/Pr/ME/PL/Au/Ae/Ch/An/Lr/Dw/Ai/Id/Acrobat/2019/windows/mac
- (最完美)MIUI12系统的Usb调试模式在哪里开启的步骤
- 微信公众号卡券php开发,微信公众号实现会员卡领取功能
- 关键时刻不纠结的秘密:极简选择
- canvas 画图移动端出现锯齿毛边的解决方法
- 【免费or付费】外卖优惠券公众号的申请以及做法有什么不同?
- 软件定义网络(PART 3)
- linux .so文件详解
- 人大金仓和达梦的空间数据能力对比
- 如何使用京东的关键字搜索你想要的商品详情
热门文章
- java8新特性(2)--- 方法引用
- 获取iOS任意线程调用堆栈(二)符号化理论:Mach-o文件结构
- python总结教程_python基础教程总结10——文件
- Android studio的布局总结
- 未能初始化appscan应用程序现在将关闭_企业区块链应用程序的两个关键问题
- cad钣金展开插件_户外垃圾桶顶盖钣金拆分展开方法
- python db文件_python中查看.db文件中表格的名字及表格中的字段操作
- 宋浩 概率统计 笔记_推论统计分析学习笔记
- freebsd java 能用吗_在FreeBSD 4.9下安装JAVA环境
- import oracle utility_教你如何Oracle数据导入