七,redis集群
2017-01-10 15:23
337 查看
redis基本集群配置
整体示意图
配置方法
进入redis的安装目录,我的路径是/opt/redis-3.2.6/,使用文件目录中的utils文件夹
[jiang@localhost redis-3.2.6]$ ls 00-RELEASENOTES CONTRIBUTING deps Makefile README.md runtest runtest-sentinel src utils BUGS COPYING INSTALL MANIFESTO redis.conf runtest-cluster sentinel.conf tests [jiang@localhost redis-3.2.6]$ cd utils [jiang@localhost utils]$ ls build-static-symbols.tcl corrupt_rdb.c generate-command-help.rb hyperloglog lru redis_init_script redis-sha1.rb speed-regression.tcl cluster_fail_time.tcl create-cluster hashtable install_server.sh redis-copy.rb redis_init_script.tpl releasetools whatisdoing.sh [jiang@localhost utils]$ cd reate-cluster -bash: cd: reate-cluster: No such file or directory [jiang@localhost utils]$ cd create-cluster [jiang@localhost create-cluster]$ ls 30001.log 30004.log appendonly-30001.aof appendonly-30004.aof create-cluster dump-30003.rdb dump-30006.rdb nodes-30003.conf nodes-30006.conf 30002.log 30005.log appendonly-30002.aof appendonly-30005.aof dump-30001.rdb dump-30004.rdb nodes-30001.conf nodes-30004.conf README 30003.log 30006.log appendonly-30003.aof appendonly-30006.aof dump-30002.rdb dump-30005.rdb nodes-30002.conf nodes-30005.conf [jiang@localhost create-cluster]$ ./create-cluster start
使用以上操作命令,出现以下信息说明cluster已经启动
Starting 30001 Starting 30002 Starting 30003 Starting 30004 Starting 30005 Starting 30006
然后在当前目录中使用
./create-cluster create命令,会让你输入是否采用默认的配置,输入yes即可。
... # output omitted M: bfe5766a6c75729fba842add9fa05f9fddda128c 127.0.0.1:30001 slots:0-5460 (5461 slots) master M: 0d4ae9e8d6e3150920030774e3a3fa4584578cd3 127.0.0.1:30002 slots:5461-10922 (5462 slots) master M: da73d3f09aa544f154e48854a3cf8372822134e1 127.0.0.1:30003 slots:10923-16383 (5461 slots) master ... # output omitted [OK] All 16384 slots covered.
然后可以对配置好的集群进行测试
$ redis-cli -c -h localhost -p 30001 localhost:30001> SET hello world OK localhost:30001> SET foo bar -> Redirected to slot [12182] located at 127.0.0.1:30003 OK 127.0.0.1:30003> GET foo "bar" 127.0.0.1:30003> GET hello -> Redirected to slot [866] located at 127.0.0.1:30001 "world" 127.0.0.1:30001>
如果在上面使用命令,出现有关ruby的错误的话,请使用一下命令安装有关ruby软件包
yum install ruby
gem install redis
这样的基本配置集群,是不能够满足业务的需要的,如果其中的一个master出现问题,就会导致整个集群不能够使用。
所以下面的主从配置就是要改变这样的情况
redis主从架构集群配置
主从配置的示意图
这样的一种配置是每个master都有一个slave,当其中的一个master failover,而其下的slave将会变成master,但是此时的master将是没有salve的。
这样的话我们可以让一个master拥有多个的slave来连接,但是过多的slave会影响到系统的性能,所以我们采用的是让第一个拥有多个slave,当其中的一个master出现问题,出现问题的master下的slave成为master,而让第一个下面的slave成为刚刚成为master的slave。
当出现问题后,整体架构的演变
配置方法
我在根目录下新建了redis-cluster目录,在目录中又新建了7个文件夹,分别是6379,6380,6381,6382,6383,6384,6385分别对应的是redis的服务端口,同时在这些目录中copy了redis.conf文件,同时将redis-server这个文件copy到redis-cluster文件夹中。将redis.conf文件中添加如下信息,并且将port改成你需要的端口号。
cluster-enabled yes cluster-config-file nodes-[端口号].conf cluster-node-timeout 2000 cluster-slave-validity-factor 10 cluster-migration-barrier 1 cluster-require-full-coverage yes
首先启动6379,6380,6381端口号服务器
redis-server /redis-cluster/6379/redis.conf redis-server /redis-cluster/6380/redis.conf redis-server /redis-cluster/6381/redis.conf
刚启动好的服务器,集群是没有成功的,可以先进入到redis的交互模式
redis-cli -c -p 6379中输入
CLUSTER INFO命令查看
cluster_state:fail cluster_slots_assigned:0 cluster_slots_ok:0 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:1 cluster_size:0 cluster_current_epoch:0 cluster_my_epoch:0 cluster_stats_messages_sent:0 cluster_stats_messages_received:0
下面为3个master分配slots
redis-cli -c -p 6379 CLUSTER ADDSLOTS {0..5460} redis-cli -c -p 6380 CLUSTER ADDSLOTS {5461..10922} redis-cli -c -p 6381 CLUSTER ADDSLOTS {10923..16383}
配置epoch
redis-cli -c -p 6379 CLUSTER SET-CONFIG-EPOCH 1 redis-cli -c -p 6380 CLUSTER SET-CONFIG-EPOCH 2 redis-cli -c -p 6381 CLUSTER SET-CONFIG-EPOCH 3
使用
CLUSTER MEET让彼此节点能够互相识别
redis-cli -c -p 6379 CLUSTER MEET 127.0.0.1 6380 redis-cli -c -p 6379 CLUSTER MEET 127.0.0.1 6381
此时可以使用
CLUSTER INFO查看cluster信息
cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:3 cluster_size:3 cluster_current_epoch:3 cluster_my_epoch:1 cluster_stats_messages_sent:164 cluster_stats_messages_received:144
下面为6379添加slave(6382,6383)
要做的首先是启动6382和6383的服务器
redis-server /redis-cluster/6382/redis.conf redis-server /redis-cluster/6383/redis.conf
然后让6382和6383的服务器可以与6379服务器能够互相识别
redis-cli -c -p 6379 CLUSTER MEET 127.0.0.1 6382 redis-cli -c -p 6379 CLUSTER MEET 127.0.0.1 6383
查看节点信息,复制6379的节点信息
redis-cli -c -p 6379 CLUSTER NODES
出现信息为,该信息是我整个配置之后的信息,之前刚开始配的被清屏了
6ab52dd9fcbdf88c4ed6363246608f6f4333c90f 127.0.0.1:6380 master - 0 1484032464000 2 connected 5461-10922 ecd9fa56b7779cd1f444e2514a908674649abaad 127.0.0.1:6379 myself,master - 0 0 1 connected 0-5460 119e2b238d4e2d2fe63a1a69a8de3308c7d03360 127.0.0.1:6381 master - 0 1484032464000 3 connected 10923-16383 4aac879e53426d58c2b762531af4ed548b7f08b4 127.0.0.1:6385 slave 119e2b238d4e2d2fe63a1a69a8de3308c7d03360 0 1484032464614 3 connected 6a43e1bf3acc59c89dc33b728c4a5e5655186d69 127.0.0.1:6384 slave 6ab52dd9fcbdf88c4ed6363246608f6f4333c90f 0 1484032464000 2 connected 1a92cb53d20a04f38207d339d36682dec9f0b1ac 127.0.0.1:6382 slave ecd9fa56b7779cd1f444e2514a908674649abaad 0 1484032464000 1 connected 90695e8ff62455d97de9eacae4c171ff68d3532e 127.0.0.1:6383 slave ecd9fa56b7779cd1f444e2514a908674649abaad 0 1484032464000 1 connected
我的6379节点信息为ecd9fa56b7779cd1f444e2514a908674649abaad
为6379添加slave
redis-cli -c -p 6382 CLUSTER REPLICATE ecd9fa56b7779cd1f444e2514a908674649abaad redis-cli -c -p 6383 CLUSTER REPLICATE ecd9fa56b7779cd1f444e2514a908674649abaad
下面就是为master[6380]配置slave[6384],为master[6381]配置slave[6385],配置步骤如上所述。
slave服务器是不予许进行写操作的,如果想要让slave进行写操作,使用READWRITE命令,不建议slave进行写操作,READONLY就可以
相关文章推荐
- redis集群
- 【redis学习(二)】手把手教你windows下的redis安装以及集群搭建
- redis中用哈希槽实现集群
- 最大的Redis集群:新浪Redis集群揭秘
- Redis集群方案及实现
- 【redis】redis集群配置小结
- Centos7中安装Redis3.2.3集群
- docker搭建redis集群
- IT忍者神龟之Redis+Tomcat+Nginx集群实现Session共享
- 使用Redis存储Nginx+Tomcat负载均衡集群的Session
- Redis配置集群二(window)
- redis集群
- Redis集群方案收集
- Redis集群搭建与简单使用
- Redis 视频教程 大数据 高性能 集群 NoSQL 设计 实战 入门 命令
- redis集群替换服务器
- redis集群部署
- 安装redis集群时出现redis requires Ruby version >= 2.2.2
- 解决WEB集群session同步的方案,Redis内存缓存
- Redis集群 Java客户端Jedis的使用