Redis集群搭建-韩国庆
认真一步一步搭建下来,就可以成功....
Redis-cluster集群架构讲解
redis集群专业名词称之为Redis-cluster,redis集群是从3.0版本以后才有的概念,也就是说在3.0之前我们是搭建不了集群的。
如下图,使我们redis集群搭建图,那么这里redis集群中没有一个准确的入口,也就是说没有一个指认的可连接的redis服务,因为任何一个节点都可以作为入口连接进去。那么每个redis服务之间都可以进行通讯的,来检查对方的状态。
redis没有准确的指认入口,任意一个redis服务都可以作为入口进行连接,那么我们考虑一个问题:我们需要知道每一个redis服务的工作状态,比如如果某一个redis服务突然停止,我们如何知道呢?
投票容错
如上图,每一个redis服务之间是否可以通讯及采用ping,pong的机制进行互相打招呼。当ping一个服务时,该服务相应pong,则代码服务通讯,反之不可以通讯。
投票容错:只要有一半的redis服务认为当前某一个redis服务有问题,则判定该服务有问题存在。
如:黄色redis服务ping下红色redis服务,发现红色redis服务没有给它响应,则黄色redis就告诉其他redis服务,你们也连接下红色redis服务,如果其它redis服务超过一半连接不上红色redis服务,则红色redis有问题存在。
redis集群故障分解
同学们注意,上面讲述如果其中有一台redis服务有问题,我们认为这台redis服务有问题存在。那么对于整个redis集群角度来看,有两种情况存在:
1.如果集群中redis服务存在故障,切已做了主从复制,那么访问的时候会访问redis从服务,集群正常运行。
2.redis集群中没有做主从备份,如果其中有一台redis服务故障挂掉,那么很遗憾,整个集群则都不能使用。
为什么有redis服务挂掉,整个服务就不能使用呢?
通过上图我们了解到,redis-cluster中在一个名此叫槽,这个槽起到什么做作用呢?
槽:在集群中的作用是为每一个redis节点合理的分配资源,达到负载均衡的作用。redis集群中物理节点是从0~16383,则一共16384个槽,除以几点的个数就是每个节点所承载槽的个数。
根据什么来把数据放在哪个槽里呢?如下则是原理
上述我们了解槽的概念,更进一步的看下槽在每个节点的分布图
问题:最多分布几个redis服务呢?最多也就是16384个,每一个槽对应一个服务。
搭建集群
3个节点是因为redis要保证一半以上才能决策哪一台redis有问题,容错。
那么为了保证每一台节点的稳定性,我们还要给每一个节点备份一台节点。所以这里要有6个节点。
我们运行6台服务器,基本上老师电脑挂掉,每一个更好的主机。所以老师在这里演示使用redis的实例,每一个实例其实就是一台redis服务。这种搭建比分布在6台虚拟机上更难,因为还要考虑每个redis服务端口号的问题。
我们在这里6端口号方便好记所以设置的区间是 7001-7006
搭建redis服务
如果现有的虚拟机上正在运行着redis服务,需要停止到。
停止redis服务命令
1.redis的实例
redis实例在老师电脑上/usr/local/bin下,这里是redis服务的实例。
2.在local目录下创建一个文件
3.把local/bin 拷贝纸 redis-cluster目录下,再命名redis01
cp -r bin redis-cluster/redis01
4.切换至redis-cluster/redis01目录下
一个干净的redis服务时没有dump.rdb文件的,这个是redis数据的快照
rm -r dump.rdb
5.编辑redis01下的redis.conf文件
修改端口号
6.redis如果要搭建集群,需要开启一个集群设置。
修改bind的ip地址
每个redis节点都要修改当前主机ip
7.拷贝此实例
拷贝redis01---redis06,拷贝5次
8.拷贝如下所示
9.修改端口号
集群设置我们复制的时候都更改了,但是端口号我们需要修改独自的。
所以去每一个redisX里的redis.conf下修改即可
10.启动redis
这里我们可以写一个文件,里面写着每一个redis服务启动的命令
如上创建一个文件,那么该文件是保存在了/local/redis-cluster/这个目录下
保存退出编辑
11.文件权限
此时该文件startRedis.sh文件还不能执行,因为权限不够。
添加可执行权限 chmod +x startRedis.sh
查看如下
12.进入到/usr/local/redis-cluster下启动脚本文件
./startRedis.sh
如上启动成功。
并且以cluster(集群模式)模式进行启动
确认是否有端口号7001--7006服务开启,如下命令
ps aux|grep redis
安装ruby
redis-cluster安装前需要安装ruby环境,搭建集群需要使用到官方提供的ruby脚本。
安装ruby的环境需要依赖于环境,首先安装ruby环境
yum -y install ruby
yum -y install rubygems
需要安装ruby脚本环境
老师提供了ruby脚本包,在资料中-->redis--->redis-3.0.0.gem包
1.安装redis-3.0.0.gem
gem install redis-3.0.0.gem
2.进入到/usr/local/redis-4.0.5/src解压文件下
可以找一个redis-trib.rb,这个是脚本文件。后缀.rb就是ruby的缩写
3.拷贝一份至/usr/local/redis-cluster下
4.查看
5.运行脚本
ruby包装好了,环境也装好了,那么这个脚本就可以运行了。使用ruby来搭建redis集群
启动命令如下
./redis-trib.rb create --replicas 1 123.14.0.223:7001 123.14.0.223:7002 123.14.0.223:7003 123.14.0.223:7004 123.14.0.223:7005 123.14.0.223:7006
replicas: 1 表示每个redis服务只有1台备份机。
连接集群
redis给我提供了客户端,那么我们如何连接redis服务呢?redis服务集群特点是每一个节点都可以作为入口,备份节点也可以作为主机。
redis01/redis-cli -h "123.14.0.223" -p 7001 -c
操作数据存入对应的槽
集群的几个简单命令
cluster info 查看集群状态
cluster nodes 查看该集群节点数
客户端连接集群(单机版和集群版)
单机版
集群版
Redis集群搭建-韩国庆的更多相关文章
- mysql集群搭建--韩国庆
按照我给大家提供的步骤,一步一步来,你就能配好mysql集群环境 什么是mycat 简单的说,MyCAT就是: •一个彻底开源的,面向企业应用开发的“大数据库集群” •支持事务.ACID.可以替代My ...
- 25.redis集群搭建笔记
###Redis集群### 0.准备 软件: redis-3.0.0.gem redis-3.0.0.tar.gz#源码 1.安装ruby环境 redis基于ruby槽位计算,hash算法技术,k ...
- Redis 集群搭建详细指南
先有鸡还是先有蛋? 最近有朋友问了一个问题,说毕业后去大城市还是小城市?去大公司还是小公司?我的回答都是大城市!大公司! 为什么这么说呢,你想一下,无论女孩男孩找朋友都喜欢找个子高胸大的.同样的道理嘛 ...
- 二、redis集群搭建
redis集群搭建 redis3.0后支持集群.集群中应该至少有三个节点,每个节点有一备份节点.需要6台服务器.搭建伪分布式,需要6个redis实例.搭建集群的步骤: 一.安装单机版redis 第一步 ...
- redis集群搭建及注意事项
上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ...
- Linux Redis集群搭建与集群客户端实现(Python)
硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...
- [转载] Redis集群搭建最佳实践
转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问 ...
- Linux Redis集群搭建与集群客户端实现
硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...
- redis集群搭建及设置账户(转)
Redis集群搭建以及为集群设置密码 介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. ...
随机推荐
- pyCharm django 中新加app
1.在manage.py@djangotest中输入命令: 1.startapp realnameauth ---新建一个app,名字为realnameauth 2.在 django 项目中的 ...
- 本地搭建json-server
1.前言 为了前端项目获取数据,需要在本地搭建json-server,这样保证可以在本地实现增删改查的操作. 2.安装 全局安装: npm -g json-server 3.创建一个json-serv ...
- pytorch怎么抽取中间的特征或者梯度
for i, (input, target) in enumerate(trainloader): # measure data loading time data_time.update(time. ...
- 前端跨域(二):JSONP
上一篇文章 前端跨域(一):CORS 实现了跨域的一种解决方案,IE8 和其他浏览器分别通过 XDomainRequest 和 XHR 对象原生支持 CORS.这次我将补一补 Web 服务中也非常流行 ...
- 【Spring框架】<mvc:default-servlet-handler/>的作用
优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...
- spring注解注入:<context:component-scan>详解
spring从2.5版本开始支持注解注入,注解注入可以省去很多的xml配置工作.由于注解是写入java代码中的,所以注解注入会失去一定的灵活性,我们要根据需要来选择是否启用注解注入. 我们首先看一个注 ...
- mysql启动报错 mysql InnoDB: Error: could not open single-table tablespace file
mysql启动不成功,报错 mysql InnoDB: Error: could not open single-table tablespace file innodb_force_recovery ...
- 选择器与I/O多路复用
Selector选择器是NIO技术中的核心组件,可以将通道注册进选择器中,其主要作用是使用1个线程来对多个通道中的已就绪通道进行选择,然后就可以对选择的通道进行数据处理,属于一对多的关系,也就是使用1 ...
- 一个简单springboot搭建
首先,新建一个maven项目,new maven project 然后打开pom.xml,引入需要的jar包,代码如下: <parent> <groupId>org.sprin ...
- opencv+qt+vtk,编程时报错'detail':ambiguous symbol
解决办法: 把#include <vtkSmartPointer.h>放到所有头文件的最前面: