redis实战_07_redis集群

redis集群的搭建:html

下面咱们来进行学习下redis3.2.4如何搭建集群。node

集权配置:至少三个mastergit

 

第一步:建立一个文件夹redis-cluster,而后在其下面分别建立6个文件以下:redis

(1)mkdir -p /usr/local/redis-clustersql

(2)mkdir 700一、mkdir 700二、mkdir 700三、mkdir 700四、mkdir 700五、mkdir 7006vim

 

第二步:把以前的redis.conf配置文件分别copy到700*下,进行修改各个文件内存,也就是对700*下的每个copy的redis.conf文件进行修改!以下:api

(1)daemonize yesruby

(2)port 700*(分别对每一个机器的端口进行设置)app

(3)bind 192.168.1.171(必需要绑定当前机器的ip,否则会无限悲剧下去啊,深坑勿入!!!)nosql

(4)dir /usr/local/redis-cluster/700*/(指定数据文件存放位置,必需要指定不一样的目录位置,否则会丢失数据,深坑勿入!!!)

(5)cluster-enabled yes(启动集群模式,开始玩耍)

(6)cluster-config-file nodes700*.conf(这里700x最好和port对应上)

(7)cluster-node-timeout 5000

(8)appendonly yes

(9)requirepass 123456(设置redis链接密码,全部的配置文件的密码是同样的,感受在集群前配置密码是否是更好一点???这里暂时看成一个遗留问题吧)

 

第三步:把修改后的配置文件,分别copy到各个文件夹下,注意每一个文件要修改端口号,而且nodes文件也要不相同!!

vi下全局替换:%s/7001/7002/g 全局替换7001成7002

 

第四步:因为redis集群须要使用ruby命令,因此咱们须要安装ruby

(1) yum install ruby

(2)yum install rubygems

(3)gem install redis(安装redis和ruby的接口)

 

第五步:分别启动6个redis实例,而后检查是否启动成功

(1)/usr/local/redis/bin/redis-server /usr/local/redis-cluster/700*/redis.conf

(2)ps -el | grep redis 查看是否启动成功

 

第六步:首先到redis3.0的安装目录下,而后执行redis-trib.rb指令

(1)cd /usr/local/redis3.0/src

(2)./redis-trib.rb create --replicas 1  192.168.1.171:7001 192.168.1.171:7002 192.168.1.171:7003 192.168.1.171:7004 192.168.1.171:7005 192.168.1.171:7006

 其中

create 表示 建立集群的意思;

1 表示主节点与从节点的比例,这里是1,也就是说6台redis服务,有3台是主节点,3台是从节点;

执行输出打印信息:

 1 >>> Creating cluster
 2 >>> Performing hash slots allocation on 6 nodes...
 3 Using 3 masters:
 4 192.168.1.171:7001
 5 192.168.1.171:7002
 6 192.168.1.171:7003
 7 Adding replica 192.168.1.171:7004 to 192.168.1.171:7001
 8 Adding replica 192.168.1.171:7005 to 192.168.1.171:7002
 9 Adding replica 192.168.1.171:7006 to 192.168.1.171:7003
10 M: 201503eb5f050814a56ae6a5c8623a0bf774fd0f 192.168.1.171:7001
11    slots:0-5460 (5461 slots) master
12 M: 18cbda8addae41f73c184cfd67e26414184a5498 192.168.1.171:7002
13    slots:5461-10922 (5462 slots) master
14 M: d4a9a5b02611b4d8e7e4150f485b966f7de1c26b 192.168.1.171:7003
15    slots:10923-16383 (5461 slots) master
16 S: 91a6d479718ca5a23bdb007f6f55088e0d979707 192.168.1.171:7004
17    replicates 201503eb5f050814a56ae6a5c8623a0bf774fd0f
18 S: e014b1f935c0fc4ee0860b4e2200c960619e1fa6 192.168.1.171:7005
19    replicates 18cbda8addae41f73c184cfd67e26414184a5498
20 S: 1dfc3c8f170506216ecf3b53841d681e07f3c81e 192.168.1.171:7006
21    replicates d4a9a5b02611b4d8e7e4150f485b966f7de1c26b
22 Can I set the above configuration? (type 'yes' to accept): 

 从输出结果来看,从节点没有"槽",由于从节点没有写权限

 

注意事项:

1.若是是使用redis-trib.rb工具构建集群,集群构建完成前不要配置密码,集群构建完毕再经过config set + config rewrite命令逐个机器设置密码

2.若是对集群设置密码,那么requirepass和masterauth都须要设置,不然发生主从切换时,就会遇到受权问题,能够模拟并观察日志

3.各个节点的密码都必须一致,不然Redirected就会失败

 

1 config set masterauth 123456  
2 config set requirepass 123456  
3 config rewrite  

设置密码后,redis-trib.rb check 192.168.1.171:7001  报错链接不上实例,解决方法:

vim /usr/lib/ruby/gems/1.8/gems/redis-3.3.3/lib/redis/client.rb

 1 class Redis
 2   class Client
 3 
 4     DEFAULTS = {
 5       :url => lambda { ENV["REDIS_URL"] },
 6       :scheme => "redis",
 7       :host => "127.0.0.1",
 8       :port => 6379,
 9       :path => nil,
10       :timeout => 5.0,
11       :password => nil,
12       :db => 0,
13       :driver => nil,
14       :id => nil,
15       :tcp_keepalive => 0,
16       :reconnect_attempts => 1,
17       :inherit_socket => false
18     }

 

修改下默认密码就能够了,好比:password => "123456",

 

 

第七步:到此为止咱们集群搭建成功!进行验证:

(1)链接任意一个客户端便可:./redis-cli -c -h -p(-c表示集群模式,指定ip地址和端口号)如:/usr/local/redis -c -h 192.168.1.171 -p 700*

(2)进行验证:cluster info(查看集群信息)、cluster nodes(查看节点列表)

(3)进行数据操做验证

(4)关闭集群则须要逐个进行关闭,使用命令:

/usr/local/redis/bin/redis-cli -c -h 192.168.171 -p 700* shutdown

 

链接192.168.1.171:7001,输入info,查看主从信息以下:

  1 [root@iZ11wt0u6kbZ yucong]# /usr/local/redis/bin/redis-cli -c -h 192.168.1.171 -p 7001
  2 192.168.1.171:7001> info
  3 # Server
  4 redis_version:3.2.4
  5 redis_git_sha1:00000000
  6 redis_git_dirty:0
  7 redis_build_id:6b401482e8c31daa
  8 redis_mode:cluster
  9 os:Linux 2.6.32-573.7.1.el6.x86_64 x86_64
 10 arch_bits:64
 11 multiplexing_api:epoll
 12 gcc_version:4.4.7
 13 process_id:20352
 14 run_id:057db549bba87f39bdf7e2a9483cf3ecc6b49867
 15 tcp_port:7001
 16 uptime_in_seconds:3722
 17 uptime_in_days:0
 18 hz:10
 19 lru_clock:9975830
 20 executable:/usr/local/redis/bin/redis-server
 21 config_file:/usr/local/redis-cluster/7001/redis.conf
 22 
 23 # Clients
 24 connected_clients:1
 25 client_longest_output_list:0
 26 client_biggest_input_buf:0
 27 blocked_clients:0
 28 
 29 # Memory
 30 used_memory:2418328
 31 used_memory_human:2.31M
 32 used_memory_rss:10010624
 33 used_memory_rss_human:9.55M
 34 used_memory_peak:2521056
 35 used_memory_peak_human:2.40M
 36 total_system_memory:4018704384
 37 total_system_memory_human:3.74G
 38 used_memory_lua:37888
 39 used_memory_lua_human:37.00K
 40 maxmemory:0
 41 maxmemory_human:0B
 42 maxmemory_policy:noeviction
 43 mem_fragmentation_ratio:4.14
 44 mem_allocator:jemalloc-4.0.3
 45 
 46 # Persistence
 47 loading:0
 48 rdb_changes_since_last_save:0
 49 rdb_bgsave_in_progress:0
 50 rdb_last_save_time:1486367331
 51 rdb_last_bgsave_status:ok
 52 rdb_last_bgsave_time_sec:0
 53 rdb_current_bgsave_time_sec:-1
 54 aof_enabled:1
 55 aof_rewrite_in_progress:0
 56 aof_rewrite_scheduled:0
 57 aof_last_rewrite_time_sec:-1
 58 aof_current_rewrite_time_sec:-1
 59 aof_last_bgrewrite_status:ok
 60 aof_last_write_status:ok
 61 aof_current_size:0
 62 aof_base_size:0
 63 aof_pending_rewrite:0
 64 aof_buffer_length:0
 65 aof_rewrite_buffer_length:0
 66 aof_pending_bio_fsync:0
 67 aof_delayed_fsync:0
 68 
 69 # Stats
 70 total_connections_received:8
 71 total_commands_processed:3539
 72 instantaneous_ops_per_sec:1
 73 total_net_input_bytes:183131
 74 total_net_output_bytes:5986856
 75 instantaneous_input_kbps:0.04
 76 instantaneous_output_kbps:0.00
 77 rejected_connections:0
 78 sync_full:1
 79 sync_partial_ok:0
 80 sync_partial_err:0
 81 expired_keys:0
 82 evicted_keys:0
 83 keyspace_hits:0
 84 keyspace_misses:0
 85 pubsub_channels:0
 86 pubsub_patterns:0
 87 latest_fork_usec:722
 88 migrate_cached_sockets:0
 89 
 90 # Replication
 91 role:master
 92 connected_slaves:1
 93 slave0:ip=192.168.1.171,port=7004,state=online,offset=4901,lag=0
 94 master_repl_offset:4901
 95 repl_backlog_active:1
 96 repl_backlog_size:1048576
 97 repl_backlog_first_byte_offset:2
 98 repl_backlog_histlen:4900
 99 
100 # CPU
101 used_cpu_sys:2.21
102 used_cpu_user:1.65
103 used_cpu_sys_children:0.00
104 used_cpu_user_children:0.00
105 
106 # Cluster
107 cluster_enabled:1
108 
109 # Keyspace
110 192.168.1.171:7001> 

 再输入cluster nodes,查看集权信息以下:

1 192.168.1.171:7001> cluster nodes
2 d4a9a5b02611b4d8e7e4150f485b966f7de1c26b 192.168.1.171:7003 master - 0 1486371253432 3 connected 10923-16383
3 e014b1f935c0fc4ee0860b4e2200c960619e1fa6 192.168.1.171:7005 slave 18cbda8addae41f73c184cfd67e26414184a5498 0 1486371254934 2 connected
4 91a6d479718ca5a23bdb007f6f55088e0d979707 192.168.1.171:7004 slave 201503eb5f050814a56ae6a5c8623a0bf774fd0f 0 1486371252931 4 connected
5 201503eb5f050814a56ae6a5c8623a0bf774fd0f 192.168.1.171:7001 myself,master - 0 0 1 connected 0-5460
6 1dfc3c8f170506216ecf3b53841d681e07f3c81e 192.168.1.171:7006 slave d4a9a5b02611b4d8e7e4150f485b966f7de1c26b 0 1486371253932 6 connected
7 18cbda8addae41f73c184cfd67e26414184a5498 192.168.1.171:7002 master - 0 1486371253932 2 connected 5461-10922
8 192.168.1.171:7001>

 

 

第八步:(补充)

友情提示:当出现集群没法启动时,删除临时的数据文件,再次从新启动每个redis服务,而后从新构造集权环境。

redis-trib.rb官方群操做命令:http://redis.io/topics/cluster-tutorial

推荐博客:http://blog.51yip.com/nosql/1726.html/comment-page-1

redis-cli客户端操做命令:

http://blog.csdn.net/qachenzude/article/details/32098777

 

 

相关文章
相关标签/搜索