Redis安装及集群部署
文章目录
- 一.redis编译安装
- 二 .redis主从复制
- 三. redis哨兵模式
- 1.配置sentinel
- 2 开启哨兵模式
- 3 观察效果
- 四. redis的集群cluster
- 1. 集群构建
- 1)、手动构建集群
- 2) .脚本构建集群
- 2.自动切换
- 3、添加节点和分片
- 五. Redis+Mysql读写分离
一.redis编译安装
下载安装包,解压后进行编译
编辑自带安装程序的脚本文件,注释以下内容
[root@server1 redis-6.2.4]# cd utils/
[root@server1 utils]# vim install_server.sh
[root@server1 utils]# ./install_server.sh xs ##执行安装脚本
安装成功后查看端口6379已经成功开启
[root@server1 utils]# netstat -antlp
查看etc目录下的redis配置文件也已经生成,修改配置文件,编辑配置文件
启动redis
[root@server1 redis]# /etc/init.d/redis_6379 start
同样server2和server3都安装redios
二 .redis主从复制
设定server2为server1的slave.设定server1为master
编辑server上redis的配置文件,添加master
[root@server2 utils]# vim /etc/redis/6379.conf
slaveof 172.25.1.1 6379
重启1和2的redis,在1中查看redis的info信息,即可查看到他有一个slave
:[root@server1 redis]# redis-cli
127.0.0.1:6379> info
在server上同样添加master指定后重启,在server1上即可查看到一主两从
此时在1中新建库“二千”,会在2和3中都能看到
三. redis哨兵模式
Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis
的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中。sentinel是redis高可用的解决方案,sentinel系统可以监视一个或者多个redis
master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。sentinel可以让redis实现主从复制,当一个集群中的master失效之后,sentinel可以选举出一个新的master用于自动接替master的工作,集群中的其他redis服务器自动指向新的master同步数据。一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。
1.配置sentinel
在server1主机中,配置sentinel,并复制到server2和server3中
在解压目录里复制模板文件到安装目录下,
[root@server1 ~]# cd redis-6.2.4/
[root@server1 redis-6.2.4]# cp sentinel.conf /etc/redis/
[root@server1 redis-6.2.4]# vim /etc/redis/sentinel.conf
sentinel monitor mymaster 172.25.1.1 6379 2 ##master为server1,2表示需要两票通过,这台主机就被认定宕掉
sentinel down-after-milliseconds mymaster 10000 ##修改连接超时为10s
将编辑好的sentinel配置文件复制到2和3
2 开启哨兵模式
[root@server3 utils]# redis-sentinel /etc/redis/sentinel.conf
3 观察效果
此时我们打开一个新的shell,连接server1的redis,并手动关停,此时master被关闭,两台slave就会投票并选举出新的master
可以非常清楚的看到选举新master的过程,此时master已经自动变成了3
查看2的info信息,也能看到master已经变成了3
[root@server2 utils]# redis-cli
127.0.0.1:6379> info
当1重启后就会成为一个新的slave加入集群
四. redis的集群cluster
Redis集群的几个重要特征:
1.Redis 集群的分片特征在于将键空间分拆了16384个槽位,每一个节点负责其中一些槽位。2.Redis提供一定程度的可用性,可以在某个节点宕机或者不可达的情况下继续处理命令.(只要集群中大多数Master可达、且失效的Master至少有一个Slave可达,即集群非Fail状态,集群都是可用)
3.Redis 集群中不存在中心(central)节点或者代理(proxy)节点, 集群的其中一个主要设计目标是达到线性可扩展性(linear scalability)
Redis3.0版本以上
要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点
1. 集群构建
1)、手动构建集群
在server3主机(master),重启redis,开启AOF模式,建立medis目录,并建立集群7001~7006目录,切入7001,修改配置文件,启动服务。将配置文件复制到其他几个实例目录中,根据情况做修改。
[root@server3 utils]# vim /etc/redis/6379.conf
开启AOF模式
[root@server3 utils]# cd /usr/local/
[root@server3 local]# mkdir redis
[root@server3 local]# cd redis
[root@server3 local]# mkdir 700{1..6}
[root@server3 local]# cd 7001/
[root@server3 7001]# vim redis.conf
编辑配置文件
port 7001
cluster-enabled yes ##开启集群
cluster-config-file nodes.conf ##集群配置文件
cluster-node-timeout 5000 ##节点超时
appendonly yes ##开启AOF模式
daemonize yes `##用守护线程的方式开启
[root@server3 7001]# redis-server redis.conf ##启动服务
此时我们成查看pid ,已经能看到7001
将配置文件复制到其他五个节点中,并修改端口号
然后启动服务
cd使用redis-cli来进行集群的交互,客户端连接任意一个节点,使用-c表示以集群的方式登录,-p指定端口。
[root@server3 ~]# redis-cli -c -p 7001
创建集群主从节点,–cluster-replicas 参数为数字,1表示每个主节点需要1个从节点。然后检查集群,查看集群信息。
[root@server3 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
输入yes后创建成功
[root@server3 redis]# redis-cli --cluster check 127.0.0.1:7001 ## 检查集群
[root@server3 redis]# redis-cli --cluster info 127.0.0.1:7001/ ## 集群信息查看
2) .脚本构建集群
[root@server3 redis]# cd
[root@server3 ~]# cd redis-6.2.4/
[root@server3 redis-6.2.4]# cd utils/create-cluster/
[root@server3 create-cluster]# ./create-cluster start
[root@server3 create-cluster]# ./create-cluster stop
##停止所有实例,使用手动构建的集群来做接下来的实验
2.自动切换
由cheek信息可知,主从对应关系为7006为7001的slave
当我们手动关闭7001
[root@server3 redis]# redis-cli -c -p 7001
127.0.0.1:7001> SHUTDOWN
not connected>
[root@server3 redis]# ps ax
再次cheek集群节点时,发现7006以经成为了master
3、添加节点和分片
1中相同的方式再创建两个节点,加入之前的集群
将7007节点加入集群中,执行check就能看到
[root@server3 7008]# redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001
[root@server3 7008]# redis-cli --cluster check 127.0.0.1:7002
7007节点加入集群中,但是并没有分配slot,所以这个节点并没有真正的开始分担集群工作,所以要进行分片。重新分片基本上意味着将哈希槽从一组节点移动到另一组节点
[root@server3 7008]# redis-cli --cluster reshard 127.0.0.1:7001
How many slots do you want to move (from 1 to 16384)? 1000 ##移动的插槽数量
What is the receiving node ID? ##接收节点的ID
Source node #1: all
##从哪些节点获取这些密钥,键入all以从所有其他主节点获取哈希槽,每个节点都拿出一些
Do you want to proceed with the proposed reshard plan (yes/no)? yes ##确定是否要继续重新分片,输入yes
分片完成后check可以看到,7007有1000个哈希槽,且平均来源于其他三个主节点
现在将7008 节点加入到7001 节点的集群中,并且指定其为7007的slave,id为要添加的主节点的ID
redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7001 --cluster-slave --cluster-master-id
再次check 可以看到节点添加成功
五. Redis+Mysql读写分离
Redis安装及集群部署相关推荐
- elasticsearch2.3安装以及集群部署
摘要: elasticsearch安装以及集群部署 一.下载 1.1安装elasticsearch-2.3.3要求是安装官方新版的Java,必须是JDK 1.7以上,1.7以下执行的时候会报以下错误. ...
- redis学习之集群部署
redis学习之集群部署 1.Redis主从架构 1.1.主从复制原理 1.2.主从复制优缺点 1.3.redis主从架构搭建,配置从节点步骤 1.4.校验结果 1.5.数据部分复制 2.Redis哨 ...
- Redis高可用集群部署和集群扩展
文章目录 一.前言 二.集群配置 2.1 说明 2.2 配置 2.3 启动redis 2.4 集群操作 2.5 验证集群 2.5.1 springboot配置文件 2.5.2 代码测试 2.5.3 集 ...
- redis 主从 哨兵 集群部署
介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多,包括stri ...
- K8S集群搭建:安装kubeadm集群部署工具
将镜像包上传至服务器每个节点 mkdir /usr/local/k8s-install cd /usr/local/k8s-install XFTP上传安装文件 每个CentOS上安装Docker 使 ...
- Linux中级实战专题篇:rabbitmq(消息中间件p2p模式和pub模式,消息队列rabbitmq详解,单机安装,集群部署以及配置实战)
一.消息中间件相关概念 1.简介 消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台相关 的数据交流,并基于数据通信来进行分布式系统的集成.通过提供消息传递和消息 队列模型,可以在分布 ...
- 分布式业务Redis安装与集群配置
Redis在百度百科里的解释:Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API,包括C#.Java.PHP等等 ...
- elasticsearch 8.3版本安装和集群部署
我跟着一些网页教程提示部署我的集群,发现我集群里面的服务器互相看不到,于是咨询了我的老师,加上自己的实验终于成功了.因为之前网上找的参数和我的版本没对上,导致起不来,我这个集群服务器版本是8.3.1 ...
- redis安装、集群搭建等
1 Redis介绍 1.1 什么是NoSql 为了解决高并发.高可扩展.高可用.大数据存储问题而产生的数据库解决方案,就是NoSql数据库. NoSQL,泛指非关系型的数据库,NoSQL即Not-On ...
最新文章
- Tensorflow CIFAR-10训练例子报错解决
- WebStorm 打开多个项目的方法
- Guava API学习之Multimap
- 附笔记pdf下载,MIT中文线性代数课程精细笔记[第四课]
- 插图 引用 同一行两个插图_提出食物主题中的插图
- redis 计数器 java_Redis介绍
- Python爬虫入门学习线路图2019最新版
- 查看Eclipse版本号,及各个版本区别
- 生物信息学数据库及在线工具汇总 (更新)
- 成都市计算机会考,四川省高中信息技术会考资料及试题
- (数据分析)网课评论分析
- Java-好玩的猜数小游戏
- 安卓手机管理_彻底解决安卓手机通知管理难题,顺便还实现了聊天消息防撤回!?
- 阿里云视频服务(视频边缘智能服务)接入流程
- 华为AC忘记console密码
- 深入了解计算机系统(CS:APP)思考题
- 黑马程序员-MyBatis 框架-最全入门笔记、阿伟看了都得说真大、真细、真全!!!
- 率土之滨服务器进备战区维护多久,率土之滨备战区维护,备战区为什么不拆战法...
- 使用Visual Studio Code进行ABAP开发
- gmail邮箱中显示的名字如何修改?
热门文章
- 川大c语言程序设计第二次作业答案,川大《C语言程序设计0008》15秋在线作业1满分答案...
- AD通孔焊盘单独设置铺铜规则
- secureCRT上传CentOS镜像
- tx2串口与can通信控制c620电机(使用usb转can模块)
- 京东商品浏览网页制作:HTML+CSS
- 京东购物车网页(静态)搭建
- python数据库实体_python---使用get方法访问‘数据库’实体
- 经济基础知识(初级)【16】
- 【小白向】简单随意DIY你的U盘图标
- OpenCV计算机视觉(三) —— 图像的几何变换