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:/ ...
随机推荐
- JavaScript -- 练习 window 流氓广告
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Android 实现http通信(servlet做服务器端) HttpClient、HttpURLConnection实现登录验证
一,写好服务器端 在eclipse或其它javaee开发工具中新建一个web项目(我这里的项目名是:Android),建一个servlet(我这里的servlet名是:LoginServlet),模拟 ...
- Codeforces 893E Counting Arrays:dp + 线性筛 + 分解质因数 + 组合数结论
题目链接:http://codeforces.com/problemset/problem/893/E 题意: 共q组数据(q <= 10^5),每组数据给定x,y(x,y <= 10^6 ...
- 结合两张表person和address
Table: Person +-------------+---------+ | Column Name | Type | +-------------+---------+ | PersonId ...
- js设计模式理解干货
构造函数本身就是一个函数,只不过该函数是出于创建对象的目的而定义的. 创建Object实例的两种方式: new 操作符 var person = new Object(); person.name = ...
- Windows 10 SDK 10.0.10158
昨天微软发布了Windows 10 SDK 10158版本: http://blogs.windows.com/buildingapps/2015/06/30/windows-10-sdk-previ ...
- Element 'beans' cannot have character [children], because the type's content type is element-only
这个小问题快搞死我了,找了大半个小时. Element 'beans' cannot have character [children], because the type's content typ ...
- 06-THREE.JS 给所有物体相同的材质
<!DOCTYPE html> <html> <head> <title></title> <script src="htt ...
- SFTP 利用对称公钥免密码的方法
在客户端的操作: #cd .ssh 进入.ssh目录 #ssh-keygen -t rsa 执行创建密钥对命令 Generating public/private rsa ...
- 魔法效果——dijkstra+堆(邻接表存储)
dijkstra本身每次要for一遍,才能找出最小的节点,但用了堆之后,直接取出堆首就可以了. 但要注意的一点是,c++自带的stl里的priority_queue本身是先入大出的,而我们要求的是最小 ...