redis集群配置
0,整体概述
整体来说就是:
1,安装redis
2,配置多个redis实例
3,安装 ruby和rubygems
4,启动redis实例,使用ruby脚本命令将redis实例创建为集群
1,安装
1,安装redis 3.x 下载到手redis-3.2.5.tar.gz之后,放到linux里进行解压make,具体参照网络。
2,安装ruby和rubygems,参照命令(具体可以参照网络)
tar xzvf rubygems-2.2.3.tgz
cd rubygems-2.2.3
ruby setup.rb --no-rdoc --no-ri
wget https://rubygems.org/downloads/redis-3.2.1.gem
gem install redis-3.2.1.gem --local --no-rdoc --no-ri
2,建立多个redis实例 配置
修改redis配置文件,redis.conf
bind 127.0.0.1--绑定只有这个ip能够访问到 配置好集群后也可以修改
cluster-enabled yes---开启集群配置
cluster-config-file nodes-6388.conf--这个配置文件不是要我们去配的,而是Redis运行时保存配置的文件,所以我们也不可以修改这个文件。
cluster-node-timeout 15000--结点超时多久则认为它宕机了。
cluster-require-full-coverage no--默认是yes,只要有结点宕机导致16384个槽没全被覆盖,整个集群就全部停止服务,所以一定要改为no
daemonize yes--后台运行
logfile “./redis.log”--日志文件,自己定义即可
port 6379 端口
pidfile /var/run/redis_6379.pid
dbfilename dump6379.rdb rdb持久化文件
#requirepass fdsafdsa 先注释掉 等配置好集群后,再放开即可
#masterauth fdasfdsa 这个是集群需要密码的时候也放开,和requirepass一样就行(还有个地方是/usr/lib/ruby/gems/1.8/gems/redis-3.3.0/lib/redis/client.rb 这里也有个配置密码的 修改下)
在安装的redis目录同一层中创建多个redis目录至少六个。然后拷贝六份配置文件到这些文件夹里并修改配置文件的端口等其他信息即可。
3,建立集群
启动所有redis实例
redis-server 指定启动的redis.conf的路径。启动完成后,有以下进程
使用redis-trb.rb脚本命令将redis实例创建成集群。
创建集群命令: 默认前3个实例作为Master,后3个作为Slave
redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 ...
这样就创建完成了,使用命令来查看集群的情况(可以查看集群的主从关系,主集群的slots分布情况等等信息)
redis-cli -c -h 127.0.0.1 -p 6379 cluster nodes(如果后期有密码了,那么闲登录进去然后执行 cluster nodes即可)
设置keyvalue测试一下。
随便链接到一个redis实例里,
redis-cli -c -p 6379
然后,set 几个keyvalue,可以看到有重定向的log出来,get的时候也会有,说明集群创建成功了,数据开始分布到各个master节点去了。
4,添加节点到集群
1,按照上面说的,再创建两个redis实例,然后启动起来。6387 6388(上面的截图是我添加过了的 ,下面就只说下步骤即可)
2,使用ruby脚本命令将其中一个添加进去,默认为master
redis-trib.rb add-node 127.0.0.1:6387 127.0.0.1:6379
使用查看集群情况命令
redis-cli -c -h 127.0.0.1 -p 6379 cluster nodes
可以看到刚才添加的已经进去了并且是master
再添加另一个进去 并且作为这个的slave
redis-trib.rb add-node --slave --master-id 907b572063b0a6fd3dc9d1cca2c2daef3adaf043 127.0.0.1:6388 127.0.0.1:6379
中间的id为master的id即可。
3,添加进去之后,下面进行slots迁移,直接使用ruby脚本命令
redis-trib.rb reshard 127.0.0.1:6379
就自动的把没有slots的master给平均从其他master里拿出来,放进去了。
4,然后就可以进去到新添加的master,查看下keys *了。
5,故障转移
在高可用性方面,Redis可算是能够”Auto”一把了!Redis Cluster重用了Sentinel的代码逻辑,不需要单独启动一个Sentinel集群,Redis Cluster本身就能自动进行Master选举和Failover切换。
kill 掉集群中的一个master,然后查看集群的情况,会发现这个master下面的slave会有一个出来当成了master了,保证了集群的可用性。
这里如果这个上来的master没有slave了,redis集群会自动从其他master拿过来一些slave过来。
如果同时把master和它的slave kill掉,那么数据也就没有了。但是可以通过持久化出来的快照或者aof文件恢复。
6 redis自己的集群命令
上面的集群配置都是使用的ruby脚本来创建的,也可以自己用redis的命令来创建集群
类似这样的: redis-cli -c -h 192.168.1.100 -p 7000 cluster meet 192.168.1.100 7001
挨个的meet,这样就都加入到集群里了。
然后就是配置主从关系
redis-cli -c -h 192.168.1.100 -p 7003 cluster replicate 33c0bd93d7c7403ef0239ff01eb79bfa15d2a32c
将一个节点配置成另一个的从节点
然后就是指派slots,总共16384个,按需分配到每个master即可。
redis-cli -c -h 192.168.1.100 -p 7000 cluster addslots {0..5000}
redis-cli -c -h 192.168.1.100 -p 7001 cluster addslots {5001..10000}
redis-cli -c -h 192.168.1.100 -p 7001 cluster addslots {10001..16383}
这样也创建了一个redis集群。
- java:redis(redis安装配置,redis的伪集群配置)
1.redis安装配置: .安装gcc : yum install gcc-c++ .使用FTP工具FileZilla上传redis安装包到linux根目录下(当前步骤可以替换为:在root目录下执行 ...
- redis学习六 集群的原理(转载)
转载自 http://shift-alt-ctrl.iteye.com/blog/2285470 一.Redis Cluster主要特性和设计 集群目标 1)高性能和线性扩展,最大可以支撑到1 ...
- redis:哨兵集群配置
最少配置1主2从3哨兵 一.引言 上一篇文章我们详细的讲解了Redis的主从集群模式,其实这个集群模式配置很简单,只需要在Slave的节点上进行配置,Master主节点的配置不需要做任何更改,但是有一 ...
- 基于redis的cas集群配置(转)
1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...
- 基于redis的cas集群配置
1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...
- CentOS7 配置 Redis Sentinel主从集群配置
Redis Sentinel主从集群 环境.准备 slave配置 sentinel配置 测试 C#连接Redis Sentinel 1.环境.准备 单实例3台CentOS7服务器,IP地址.: 192 ...
- Redis单机和集群配置(版本在5.0后)
摘抄并用于自己后查 单机版的配置: 1. 下载redis压缩包,然后解压缩文件(tar xzf): 2. 进入解压后的redis文件目录,编译redis源文件(make,没有c环境要gcc): 3. ...
- Redis 学习之集群
该文使用centos6.5 64位 redis3.2.8 一. redis-cluster架构图 集群通信:所有redis节点之间通过PING-PONG机制彼此互联,内部使用二进制鞋子优化传输速度 ...
- redis 负载均衡 集群配置
redis 官网 http://redis.io/ 中文网站 http://redis.cn/ 谷歌代码的redis项目 https://code.google.com/p/redis/ http:/ ...
随机推荐
- JavaWeb -- 内省—beanutils工具包 的使用
Apache组织开发了一套用于操作JavaBean的API,这套API考虑到了很多实际开发中的应用场景,因此在实际开发中很多程序员使用这套API操作JavaBean,以简化程序代码的编写. Beanu ...
- 初识Django---视图
MTV模型 一.Django的MTV分别代表: Model(模型):负责业务对象与数据库的对象 Template(模板):负责如何把页面展示给用户 View(视图 ...
- 使用dpkg时,提示:dpkg:处理软件包XXX时出错
今天kali上安装搜狗输入法时,显示依赖关系问题,无法安装,百度搜了一下,找到解决方法. 使用dpkg时,提示:dpkg:处理软件包XXX时出错: 依赖关系问题,仍未被配置 类似于: 时,使用如下命令 ...
- selenium+python3 鼠标事件
1.鼠标右击 ActionChains(driver).contest_click(right_click).perform() 2.鼠标悬停 ActionChains(driver).move_to ...
- MySql基础学习-mysql安装
Linux环境下的安装 1检查是否已经安装 sudo service mysql start #若未安装,则提示: mysql: unrecognized service 2安装MySql #安装 M ...
- html5学习(新增元素)
来源于<实战html5>contenteditable 规定是否可编辑元素的内容 css3圆角 border-radius旋转变换 transform:rotate(); 变换 trans ...
- java:jsp: 一个简单的自定义标签 tld
java:jsp: 一个简单的自定义标签 tld 请注意,uri都是:http://www.tag.com/mytag,保持统一,要不然报错,不能访问 tld文件 <?xml version=& ...
- css3——transition属性和opacity属性
[transition-duration] 是一个css3属性,规定完成过度效果需要花费的时间(一秒或毫秒计).语法:transition-duration: time;time : 规定完成过 ...
- MYSQL 索引创建与使用
可能用到索引的地方: where 子句,order by,group by 不需要创建索引的情况: 1. 表比较小 2.赋值有限的列(枚举),不要创建索引.创建的索引返回的行越少越好,此时区分度大. ...
- 如何实现vue-cli搭建的前端项目的自动打包
实现vue-cli + webpack +vue项目的自动打包: 后台java代码: public class OpenDirectory { public static void main(Stri ...