Redis-3.2.1集群内网部署
摘要: Redis-3.2.1集群内网部署 http://rubygems.org国内连不上时的一种Redis集群部署解决方案。不足之处,请广大网友指正,谢谢!
一、 关于redis cluster 
1、 redis cluster的现状 
目前redis支持的cluster特性: 
1):节点自动发现 
2):slave->master 选举,集群容错 
3):Hot resharding:在线分片 
4):进群管理:cluster xxx
5):基于配置(nodes-port.conf)的集群管理 
6):ASK 转向/MOVED 转向机制. 
2、 redis cluster 架构 
2.1 redis-cluster架构图
架构细节: 
(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. 
(2)节点的fail是通过集群中超过半数的节点检测失效时才生效. 
(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可 
(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value 
2.2 redis-cluster选举:容错 
(1)选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉. 
(2):什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误 
a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态. 
b:如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态. 
二、 安装redis cluster 
安装之前请讲所需的软件包(如下所示)拷贝到服务器的/root目录下: 
gcc-4.4.7-4.el6.x86_64文件夹(因使用的虚拟机没有GCC环境故要安装GCC环境,服务器的话则省略) 
zlib-1.2.8.tar.gz文件 
ruby-2.3.1.tar.gz文件 
rubygems-2.4.2文件夹 
redis-3.2.1.tar.gz文件
1、 安装redis-cluster依赖:redis-cluster的依赖库在使用时有兼容问题,在reshard时会遇到各种错误,请按指定版本安装。 
1.1 首先安装GCC编译环境 
切记:按以下顺序执行命令安装以下软件包,因后面的包依赖前面的包:
rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm
rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
rpm -ivh libmpdclient2-2.1-1.el5.rf.x86_64.rpm
rpm -ivh gmp-4.3.1-7.el6_2.2.x86_64.rpm
rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm
rpm -ivh mpc-0.19-1.el6.rf.x86_64.rpm
rpm -ivh cpp-4.4.7-4.el6.x86_64.rpm
rpm -ivh gcc-4.4.7-4.el6.x86_64.rpm
1.2 确保系统安装zlib,否则gem install会报(no such file to load – zlib) 
首先,检查zlib是否安装以及版本是否是最新版本,若不是卸载zlib后,请安装zlib-1.2.8.tar.gz 具体命令如下:
rpm -qa | grep zlib
rpm -e zlib(上一个命令执行后出现的包名,对不起,全名记不住了。这一步最好执行当然不执行时也没问题,建议执行)
rpm -e zlib(上一个命令执行后出现的包名,对不起,全名记不住了。这一步最好执行当然不执行时也没问题,建议执行)
cd /root
cp -p zlib-1.2.8.tar.gz /usr/local/
tar -xvf zlib-1.2.8.tar.gz
cd /usr/local/
cd zlib-1.2.8
./configure
make && make install
2、 安装ruby-2.3.1.tar.gz:version(2.3.1)
cd /usr/local
mkdir ruby
cp -p /root/ruby-2.3.1.tar.gz /usr/local/
tar -zxvf ruby-2.3.1.tar.gz
cd ruby-2.3.1
./configure –prefix=/usr/local/ruby && make && make install
ruby -v
vi /etc/profile
在该文件最后一行添加: export PATH=$PATH:/usr/local/ruby/bin
//这里也可以执行# cp -p ruby /usr/local/bin/执行后直接在运行#ruby -v 查看版本
. /etc/profile
ruby -v
3、 安装rubygems.tgz:version(2.4.2)
gem -v
cd /usr/local
cp -p /root/rubygems-2.4.2/rubygems.tgz /usr/local/
tar -zxvf rubygems-2.4.2.tgz
cd rubygems-2.4.2
ruby setup.rb
cp -p bin/gem /usr/local/bin/
gem –v 检查是否成功安装
4、 安装redis-3.2.1.gem:version(3.2.1)
cd /root/rubygems-2.4.2
gem sources –remove https://rubygems.org/(这一步一定要执行不然下面执行gem install 时会去链接该网址,连不上有可能执行不了下一步)
gem install -l redis-3.2.1.gem
5、 安装redis-cluster
cd /usr/local
cp -p /root/redis-3.2.1.tar.gz /usr/local/
tar -zxvf redis-3.2.1.tar.gz
cd redis-3.2.1
make && make install
6、 创建Redis主从节点(采取三主三从)
mkdir redis //集群目录
make 7000 7001 7002 7003 7004 7005 //redis节点
#cp -p /usr/local/redis-3.2.1/redis.conf /usr/local/redis/7000
#cd /usr/local/redis/7000/ #vim redis.conf
//修改配置文件中的下面选项 
//port 7000 
//daemonize yes 
//cluster-enabled yes 
//cluster-config-file nodes.conf 
//cluster-node-timeout 5000 
//appendonly yes
  #cp -p /usr/local/redis/7000/redis.conf /usr/local/redis/7001/
      #vim redis.conf
//修改配置文件中的下面选项
//port 7000
      #cp -p /usr/local/redis/7000/redis.conf /usr/local/redis/7002
      #vim redis.conf //同上一条
   #cp -p /usr/local/redis/7000/redis.conf /usr/local/redis/7003
      #vim redis.conf //同上一条
      #cp -p /usr/local/redis/7000/redis.conf /usr/local/redis/7004
      #vim redis.conf //同上一条
   #cp -p /usr/local/redis/7000/redis.conf /usr/local/redis/7005
      #vim redis.conf //同上一条
启动各节点: 
#cd /usr/local/redis/7000 
#redis-server redis.conf 
#ll //查看7000目录下是否生成如下图红圈文件
启动各节点: 
#cd /usr/local/redis/7000 
#redis-server redis.conf 
#ll //查看7000目录下是否生成如下图红圈文件
#cd /usr/local/redis/7001
#redis-server redis.conf
#ll //同上一条
#cd /usr/local/redis/7002
#redis-server redis.conf
#ll //同上一条
#cd /usr/local/redis/7003 #redis-server redis.conf
#ll //同上一条
#cd /usr/local/redis/7004
#redis-server redis.conf
#ll //同上一条
#cd /usr/local/redis/7005
#redis-server redis.conf
#ll //同上一条
检查各节点是否启动:
ps –ef | grep redis
//启动成功如下图:
7、 使用redis自带的redis-trib.rb将各节点创建为集群
/usr/local/redis-3.2.1/src/redis-trib.rb create –replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7005 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
执行后会出现下面界面:
这界面是让你确认是否配置以上集群: 
输入yes,回车,会出现以下界面:
如上所示集群创建成功,接下来我们验证是否可读写数据。 
三、 验证搭建好的redis集群是否可读写 
1、 在任意目录下皆可,执行以下命令启动redis集群客户端:
redis-cli -c -h 127.0.0.1 -p 7000 //结果如下图
 
2、 接上一步在里面执行写入命令:set Hi BeiJing //结果如下图
 
3、 重新开启一个终端命令模式窗口,并执行以下命令启动另一个redis集群客户端:
redis-cli -c -h 127.0.0.1 -p 7004 //结果如下图
 
4、 接上一步在里面执行写入命令:get Hi //结果如下图  
通过验证redis集群成功部署。
Redis-3.2.1集群内网部署的更多相关文章
- service几种访问类型(集群外负载均衡访问LoadBalancer , 集群内访问ClusterIP,VPC内网负载均衡LoadBalancer  ,集群外访问NodePort)
		
一.集群外访问(负载均衡) kind: ServiceapiVersion: v1spec: ports: - protocol: TCP port: 4341 targetPort: 8080 no ...
 - redis + 主从 + 持久化 + 分片 + 集群 + spring集成
		
Redis是一个基于内存的数据库,其不仅读写速度快,每秒可以执行大约110000的写操作,81000的读取操作,而且其支持存储字符串,哈希结构,链表,集合丰富的数据类型.所以得到很多开发者的青睐.加之 ...
 - Centos7下安装redis实战(单机版以及集群)
		
一.背景 因项目需要,要引入redis做缓存,就在centos7下亲自安装了一遍redis,刚好趁着这个机会就来把redis的概念以及单机版和集群版redis安装步骤记录下来,在此和大家一起分享. 二 ...
 - Redis创建高可用集群教程【Windows环境】
		
模仿的过程中,加入自己的思考和理解,也会有进步和收获. 在这个互联网时代,在高并发和高流量可能随时爆发的情况下,单机版的系统或者单机版的应用已经无法生存,越来越多的应用开始支持集群,支持分布式部署了. ...
 - 近千节点的Redis Cluster高可用集群案例:优酷蓝鲸优化实战(摘自高可用架构)
		
(原创)2016-07-26 吴建超 高可用架构导读:Redis Cluster 作者建议的最大集群规模 1,000 节点,目前优酷在蓝鲸项目中管理了超过 700 台节点,积累了 Redis Clus ...
 - Redis集群简介及部署
		
1简介 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...
 - Redis 中常见的集群部署方案
		
Redis 的高可用集群 前言 几种常用的集群方案 主从集群模式 全量同步 增量同步 哨兵机制 什么是哨兵机制 如何保证选主的准确性 如何选主 选举主节点的规则 哨兵进行主节点切换 切片集群 Redi ...
 - Redis 3.0.2集群搭建以及相关问题汇总
		
Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加.删除redis节点,不用停止 ...
 - Redis从单机到集群,一步步教你环境部署以及使用
		
Redis作为缓存系统来说还是很有价值的,在大数据方向里,也是需要有缓存系统的.一般可以考虑tachyon或者redis,由于redis安装以及使用更简单,所以还是优先考虑了它.那么在一些场景下为了保 ...
 
随机推荐
- 12 Cookie、Session和JSP基础
			
1.会话技术 (1)会话概念:一次会话中包含多次请求和响应.一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 (2)会话功能:在一次会话的范围内的多次请求间,共享数据 (3)会 ...
 - python_scratch教程:绘制荧光圈教程
			
在演唱会中,出现最多的就是荧光棒,很多粉丝也都会举着荧光棒为自己的爱豆加油,当然也会有一些人用的荧光圈,为此南京小码王scratch培训机构,就想到了和小朋友一起绘制荧光圈,现在我们就一起来看看吧! ...
 - authenticate的执行流程与重写
			
流程 1.authenticate调用的是_get_backends函数 def authenticate(request=None, **credentials): for backend, bac ...
 - github中的各种操作
			
1.上传文件到github 如图,你现在有三个项目在一个文件夹中,我们要把它上传到自己的github仓库中,该怎么做呢? 1.首先右击空白处,点击Git Bash Here,出现命令行 2. git ...
 - Linux设置普通用户无密码sudo权限
			
配置普通用户无密码sudo权限: root用户进入到Linux系统的/etc目录下 cd /etc 将sudoers文件赋予写的权限 chmod u+w /etc/sudoers 编辑sudoers文 ...
 - Pycharm下直接升级库所遇到的'main'问题
			
Pycharm下直接升级库所遇到的pip模块中无'main'问题 Author : Benjamin142857 Date : 8/19/2018 对于Pycharm中直接升级库,只需在 \(Sett ...
 - Codeforces Round #569 Div. 1
			
A:n-1次操作后最大值会被放到第一个,于是暴力模拟前n-1次,之后显然是循环的. #include<bits/stdc++.h> using namespace std; #define ...
 - 在本地库不连接远远程库的情况下操作远程库-----sql   server
			
--创建链接服务器 --前面都是固定不变的------q:自己随便起-----38.107.111.185:远程服务器的ip exec sp_addlinkedserver 'q', ' ', 'SQ ...
 - ADO.NET 七(一个例子)
			
通过一个完整的实例实现课程信息管理功能的操作,包括查询.修改.删除课程信息等操作. 1) 创建课程信息表 create table StuCourse ( id int primary key ide ...
 - 返璞归真——OO第四单元总结暨学期总结
			
本次作业是第四单元的最后一次作业,也是本学期面向对象的最后一次作业,在此我将分别对第四单元和整个学期进行总结. 一.本单元的两次作业 第四单元的作业是关于UML的一些处理.UML语言是一种区别于具体语 ...