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:/ ...
随机推荐
- HDU 2419 Boring Game(并查集+map)
感觉做得有点复杂了,但是AC了还是...爽... 题意:给你n个点每个点有一个价值,接下来有m条边,然后是q个操作,每个操作有三种情况: F X K:寻找与X点直接或间接相连的不小于价值K的最小价值, ...
- 扩展KMP(转)
拓展kmp是对KMP算法的扩展,它解决如下问题: 定义母串S,和字串T,设S的长度为n,T的长度为m,求T与S的每一个后缀的最长公共前缀,也就是说,设extend数组,extend[i]表示T与S[i ...
- 51nod 1363 最小公倍数的和 欧拉函数+二进制枚举
1363 最小公倍数之和 题目来源: SPOJ 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 160 给出一个n,求1-n这n个数,同n的最小公倍数的和.例如:n = 6,1,2,3 ...
- LAMP环境搭建问题
//////////////////////////LAMP环境搭建问题///////////////////////////////////////LAMP常见的问题A.安装相关问题(1)MySQL ...
- Windows10安装Linux子系统
在win10上面可以直接在powershell里面安装Linux,具体步骤如下: 首先我们要打开Windows功能 在这里把勾打上 然后打开设置>>更新和安全>>针对开发人员, ...
- mysql数据库优化课程---5、要索引和不要索引的区别是什么
mysql数据库优化课程---5.要索引和不要索引的区别是什么 一.总结 一句话总结: 索引速度快,就是查表的时候,操作的话设置索引就好了 1.数据库设计的时候不允许字段为null的好处是什么? nu ...
- MySQL复制:主从和双主配置
对比Replication和Cluster 应用层中间件的负载均衡 异步的复制过程 MySQL官方使用Replication场景
- get、post请求的区别
get.post请求 自己接触前端也是许久时间了,但是对get和post请求的认识也还只是停留在网络上大多数人流传的那样: post比get安全 post可以传大数据,get传的数据量较少: 就这样, ...
- LightOJ - 1027 数学期望
题意:有n扇门,每扇门有一个值x,大于0代表x分钟后出去,小于0代表x分钟后回到原地,求出去的时间的期望 题解:假设出去的总时间为sum1,回来的总时间为sum2,出去的门个数为out,进来的门的个数 ...
- linux服务器应用NTP配置时间同步
linux服务器应用NTP配置时间同步 • 为什么建议使用ntpd而不是ntpdate? #####原因很简单,ntpd是步进式的逐渐调整时间,而ntpdate是断点更新,比如现在服务器时间是9.18 ...