LINUX安装REDIS集群
linux安装单机版redis已经在另一篇文章说过了,下边来搞集群,环境是新浪云服务器:
redis3.0以后开始支持集群。
前言:redis用什么做集群?
用一个叫redis-trib.rb的ruby脚本。redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下(redis-xxx/src/)。是基于redis提供的集群命令封装成简单、便捷、实用的操作工具。redis-trib.rb是redis作者用ruby完成的。所以redis集群需要先安装ruby环境。
先瞅瞅在哪:进入到redis的源代码目录,就可以看到redis-trib.rb脚本
正文,一:安装ruby环境:(前提条件)
上文已经说了,redis集群是用的ruby脚本,所以要想执行该脚本,需要ruby环境。
安装ruby环境:
yum install ruby
yum install rubygems (ruby包的管理器,用来下载ruby的包)
显示Nothing todo,说明服务器已经安装了ruby。
二:安装ruby包redis-3.3.0.gem
redis-trib.rb的运行需要的ruby包,正如我们的java程序需要的jar包一样。
这个包和redis版本不是非得匹配,只要支持就行,我在网上找了个和redis -3.2.9版本接近的3.3.0版本。切换到redistar目录,用secureCRT的rz命令redis-3.3.0.gem上传到redistar目录,这个包安装到哪都行,只是提供一个环境而已。
用的secureCRT的rz命令上传到服务器,进入到redistar目录,执行rz命令,即可上传文件。
执行gem install redis-3.0.0.gem命令安装。
安装完成:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
这里是介绍性东西:
进入到redis的src目录,用ll *.rb找到redis-trib.rb文件,
执行命令./redis-trib help 可以查看该工具包提供的命令和功能
-rwxrwxr-x 1 root root 60852 May 17 15:39 redis-trib.rb
[root@lihaoyang /redistar/redis-3.2.9/src]# ./redis-trib.rb help
Usage: redis-trib <command> <options> <arguments ...> create host1:port1 ... hostN:portN
--replicas <arg>
check host:port
info host:port
fix host:port
--timeout <arg>
reshard host:port
--from <arg>
--to <arg>
--slots <arg>
--yes
--timeout <arg>
--pipeline <arg>
rebalance host:port
--weight <arg>
--auto-weights
--use-empty-masters
--timeout <arg>
--simulate
--pipeline <arg>
--threshold <arg>
add-node new_host:new_port existing_host:existing_port
--slave
--master-id <arg>
del-node host:port node_id
set-timeout host:port milliseconds
call host:port command arg arg .. arg
import host:port
--from <arg>
--copy
--replace
help (show this help) For check, fix, reshard, del-node, set-timeout you can specify the host and port of any working node in the cluster.
下边是从别人文章找的解释:
可以看到redis-trib.rb具有以下功能:
- 1、 create :创建集群
- 2、 check :检查集群
- 3、 info :查看集群信息
- 4、 fix :修复集群
- 5、 reshard :在线迁移slot
- 6、 rebalance :平衡集群节点slot数量
- 7、 add-node :将新节点加入集群
- 8、 del-node :从集群中删除节点
- 9、 set-timeout :设置集群节点间心跳连接的超时时间
- 10、 call :在集群全部节点上执行命令
- 11、 import :将外部redis数据导入集群
- redis-trib.rb主要有两个类:
ClusterNode
和RedisTrib
。ClusterNode
保存了每个节点的信息,RedisTrib
则是redis-trib.rb各个功能的实现。 - ++++++++++++++++++++++++++++++++++++++++
暂且只关注创建集群的功能。先简单介绍下redis-trib.rb脚本的使用,以create为例:
create host1:port1 ... hostN:portN
--replicas <arg>
host1:port1 ... hostN:portN
表示子参数,这个必须在可选参数之后, --replicas <arg>
是可选参数,带 的表示后面必须填写一个参数,像 --slave
这样,后面就不带参数,掌握了这个基本规则,就能从help命令中获得redis-trib.rb的使用方法。
例子:create创建集群
create命令可选replicas参数,replicas表示需要有几个slave。
有一个slave的集群的创建命令如下:
$ruby redis-trib.rb create--replicas 1 10.180.157.199:6379 10.180.157.200:6379 10.180.157.201:6379 10.180.157.202:6379 10.180.157.205:6379 10.180.157.208:6379
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
三:搭建我们的集群:
集群中有三个节点的集群,每个节点有一主一备。需要6台虚拟机。
搭建一个伪分布式的集群,使用6个redis实例来模拟。
1,在user/local 下创建redis-cluster目录:
mkdir redis-cluster
在创建redis01目录
进入usr/local/redis,把redis-cli、redis-server、redis.conf复制到/usr/local/redis-cluster/redis01目录
查看:
说明:这里安装redis单机版的时候,只用了make命令,没有make install,然后把redis-cli、redis-server、redis.conf三个文件copy到了自己手动建的/usr/local/redis目录,
如果用[root@bogon redis-3.0.0]# make install PREFIX=/usr/local/redis安装的redis单机版,还会有其他几个文件在/usr/local/redis目录,至于区别用途还不很清楚。
第一步:创建6个redis实例,端口号从7001~7006
第二步:修改redis的配置文件,后端启动daenonize改为yes是之前安装单机版已经做过的。
1、 修改端口号,进入vim编辑模式后,非insert模式下(insert了按esc即可退出)输入/port 回车可快速定位
2,打开cluster-enable前面的注释。:wq!保存编辑
3,复制redis01到当前目录,cp是复制,-r是连带子目录一并复制,并起名redis02、redis03、redis04、redis05、redis06
cp –r redis01/ redis02
修改redis02、redis03、redis04、redis05、redis06的端口号为7002、7003、7004、7005、7006
4:把创建集群的ruby脚本复制到redis-cluster目录下。
进入redis源码redistar/redis-3.2.9/src去copy:
cp *.rb /usr/local/redis-cluster/ *通配符,src目录只有一个.rb文件就是redis-trib.rb
查看
:
启动6个redis实例,一个一个去启动有点复杂,在redis-cluster目录创建一个脚本来启动6个实例:
cd /usr/local/redis-cluster
vim startall.sh就会打开vim编辑器,创建一个空的文本:
:wq!保存脚本,创建成功:
执行./startall.sh 提示permission denied说明权限不足,执行命令chmod 777 startall.sh修改权限
再执行./startall.sh, ps -aux|grep redis查看redis运行情况,6379是之前的redis没有停止
可以看到端口7001、7002、7003、7004、7005、7006的redis都起来了。
5:创建集群。
基于上边分割线内的介绍:在redis-cluster目录下执行以下命令:
./redis-trib.rb create --replicas 1 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
[root@lihaoyang /usr/local/redis-cluster]# ./redis-trib.rb create --replicas 1 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
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7001
127.0.0.1:7002
127.0.0.1:7003
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
Adding replica 127.0.0.1:7006 to 127.0.0.1:7003
M: b370efb2e0dd8dd09aeee2177099d68c5982a01c 127.0.0.1:7001
slots:0-5460 (5461 slots) master
M: 387d8975195982ed96a08cd0d14587bfa68659db 127.0.0.1:7002
slots:5461-10922 (5462 slots) master
M: bc46045f41d337e4316230fb40bdfb8c1784d419 127.0.0.1:7003
slots:10923-16383 (5461 slots) master
S: d99c5ba8d944a45d3393a5c84b014446ff16c1e0 127.0.0.1:7004
replicates b370efb2e0dd8dd09aeee2177099d68c5982a01c
S: a3352a69d5f1b69bed39d4ffe636305dc808f891 127.0.0.1:7005
replicates 387d8975195982ed96a08cd0d14587bfa68659db
S: ad04e4409aae4295d1198403330e967285396d05 127.0.0.1:7006
replicates bc46045f41d337e4316230fb40bdfb8c1784d419
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join....
>>> Performing Cluster Check (using node 127.0.0.1:7001)
M: b370efb2e0dd8dd09aeee2177099d68c5982a01c 127.0.0.1:7001
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: a3352a69d5f1b69bed39d4ffe636305dc808f891 127.0.0.1:7005
slots: (0 slots) slave
replicates 387d8975195982ed96a08cd0d14587bfa68659db
S: ad04e4409aae4295d1198403330e967285396d05 127.0.0.1:7006
slots: (0 slots) slave
replicates bc46045f41d337e4316230fb40bdfb8c1784d419
M: bc46045f41d337e4316230fb40bdfb8c1784d419 127.0.0.1:7003
slots:10923-16383 (5461 slots) master
1 additional replica(s)
S: d99c5ba8d944a45d3393a5c84b014446ff16c1e0 127.0.0.1:7004
slots: (0 slots) slave
replicates b370efb2e0dd8dd09aeee2177099d68c5982a01c
M: 387d8975195982ed96a08cd0d14587bfa68659db 127.0.0.1:7002
slots:5461-10922 (5462 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
[root@lihaoyang /usr/local/redis-cluster]#
集群搭建好了
测试集群
[root@lihaoyang /usr/local/redis-cluster]# redis01/redis-cli -h 192.168.25.153 -p 7002 –c
说明:-h+host –p+端口号 –c 是要连接集群,注意坑,不加会报错的
可以看到连接的是7001的节点,set name的时候计算了存在哪个hash槽上,会跳转到那个槽对应的节点。
不写-c的坑:
----------------------先写到这里,明天在补充,2017-05-25:23:20
首先,我们来看一下创建集群命令中 --replicas 1,这个代表什么意思呢?1其实代表的是一个比例,就是主节点数/从节点数的比例。那么想一想,在创建集群的时候,哪些节点是主节点呢?哪些节点是从节点呢?答案是将按照命令中IP:PORT的顺序,先是3个主节点,然后是3个从节点。这一点可以通过上面的2张图片印证。
其次,注意到图中slot的概念。slot对于Redis集群而言,就是一个存放数据的地方,就是一个槽。对于每一个Master而言,会存在一个slot的范围,而Slave则没有。在Redis集群中,依然是Master可以读、写,而Slave只读。数据的写入,实际上是分布的存储在slot中,这和以前1.X的主从模式是不一样的(主从模式下Master/Slave数据存储是完全一致的),因为Redis集群中3台Master的数据存储并不一样。这一点将在后续的实验中得到验证。
第五步:验证Redis集群搭建是否成功
到这里,Redis集群的搭建就完毕了,See U~
这种方式必须要3个主节点。
[root@VM_0_13_centos redis-cluster]# ./redis-trib.rb create --replicas 127.0.0.1: 127.0.0.1:
>>> Creating cluster
*** ERROR: Invalid configuration for cluster creation.
*** Redis Cluster requires at least master nodes.
*** This is not possible with nodes and replicas per node.
*** At least nodes are required.
LINUX安装REDIS集群的更多相关文章
- Linux 安装Redis<集群版>(使用Mac远程访问)
阅读本文需要先阅读安装Redis<准备> 一 架构细节 所有的redis节点彼此互联(PING-PONG机制) 内部使用二进制协议优化传输速度和带宽 节点的fail是通过集群中超过半数的节 ...
- 从零开始安装Redis 集群(Linux CenOS7)
从零开始安装Redis 集群(Linux CenOS7) 使用ISO安装CentOS7虚拟机 配置静态IP(参考Mac VMware Fusion CentOS7配置静态IP) 安装vim [root ...
- Linux配置Redis集群 和 缓存介绍。
// 一.什么是缓存? mybatis一级缓存和二级缓存 mybatis的一级缓存存在哪? SqlSession,就不会再走数据库 什么情况下一级缓存会失效? 当被更新,删除的时候sqlsession ...
- centos7.0 安装redis集群
生产环境下redis基本上都是用的集群,毕竟单机版随时都可能挂掉,风险太大.这里我就来搭建一个基本的redis集群,功能够用但是还需要完善,当然如果有钱可以去阿里云买云数据库Redis版的,那个还是很 ...
- liunx contos 7.4 安装redis集群
前前后后安装了几次redis集群,基本上每次安装都会采坑,耗时伤神. 安装redis依赖gcc环境,安装前先检查liunx上面有没有安装GCC 命令:gcc -v 上传redis-4.0.1.tar. ...
- Linux 下Redis集群安装部署及使用详解(在线和离线两种安装+相关错误解决方案)
一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,其中主要包括在联网的Linux环境和脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网 ...
- Linux离线安装redis集群
一.应用场景介绍 本文主要是介绍Redis集群在Linux环境下的安装讲解,联网环境安装较为简单,这里只说脱机的Linux环境下是如何安装的.因为大多数时候,公司的生产环境是在内网环境下,无外网,服务 ...
- Linux(ubuntu)安装redis集群,redis集群搭建
今天学习一下redis集群的搭建.redis在现在是很常用的数据库,在nosql数据库中也是非常好用的,接下来我们搭建一下redis的集群. 一.准备 首先我们要安装c语言的编译环境,我们要安装red ...
- linux系统——Redis集群搭建(主从+哨兵模式)
趁着这几天刚好有点空,就来写一下redis的集群搭建,我跟大家先说明,本文的redis集群因为linux服务器只是阿里云一台服务器,所以集群是redis启动不同端口,但是也能达到集群的要求.其实不同服 ...
随机推荐
- Android支持全面屏设置
在AndroidManifest的application里面设置resizeableActivity的属性为true <application android:name=".Compl ...
- mysql报错Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage
mysql报错Multi-statement transaction required more than 'max_binlog_cache_size' bytes of storage 在执行cr ...
- 20180310 KindEditor 富文本编辑器
问题: 如何判断富文本编辑器文本内容非空 错误的办法,采用js 对控件本身的txt ID 号抓取获取值,由于加载富文本编辑器时,界面的ID 已经经过了修改或者可以用转换来说,所以抓取是无效果的. 需要 ...
- what's the python之异常处理
what's the 异常 python程序中会出现异常,即bug.若出现异常程序就报错,异常之后的代码就不会继续往下执行,这是一个正常程序不允许出现的,但是在某些程序交互的时候难免会因为用户输入问题 ...
- 在WCF服务端的web.config中增加如下设置,具体的错误会记录在.svclog文件中
<system.diagnostics> <sources> <source name="System.ServiceModel" switchVal ...
- Python开发【项目】:选课系统-改良版
程序名称: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...
- 如何用Win7远程链接ubuntu14.04桌面
如何用Win7远程链接ubuntu14.04桌面 采用vnc技术 参考:http://blog.csdn.net/hnjztyx/article/details/69739137
- 《Java程序设计》第十一章 JDBC与MySQL数据库
目录 java.sql Tips java.sql 安装导入方法见娄老师博客Intellj IDEA 简易教程 照惯例给出官方文档Package java.sql,记得熟练使用ctrl+f以及提高英语 ...
- shell实现SSH自动登陆【转】
前言 公司开发使用docker,每次登陆自己开发机总要输入 ssh user_name@ip_string,然后再确认输入password,手快了还经常会输错.作为一个懒人,肯定要找一个取巧的方式,查 ...
- centos7及服务器端安装python2.7.13, setuptools, pip
1. 安装python2.7.13 因为涉及到安装到服务器,所以可能不能直接在usr/bin及usr/local/bin下安装,所以本文详解安装在自定义目录下. 下载安装包: $ wget https ...