机器资源准备
# 机器 110.120.13.202:637910.120.13.202:6380# 机器 210.120.13.207:637910.120.13.207:6380# 机器 310.120.13.209:637910.120.13.209:6380
cluster-enabled:yes/no, redis模式,yes为集群模式,否则为普通模式 cluster-config-file: 集群配置文件,存储集群节点列表,用户不用编辑,redis 自动生成
# 节点ID ip:port@tcp_bus_port master/slave/myself 节点对应主节点id/- ping_ts pong_ts 节点配置版本 连接状态 槽位信息d16e227af18daf265d5bbd5183a227b754ca7812 10.120.13.207:6380@16380 slave 3e816f1768d6388fbff2c7e72035251c0408d6ae 0 1599648012641 4 connected57a26110c251688de48641853a9761336c576811 10.120.13.207:6379@16379 master - 0 1599648010634 3 connected 5461-10922bdf749bb3d39421c806fd6e8a666d068ec9351c4 10.120.13.209:6380@16380 slave 57a26110c251688de48641853a9761336c576811 0 1599648010000 6 connected35a188ae062bd6f8706f0b65674a234c6fde2752 10.120.13.202:6380@16380 slave 06ea3111d88082cb1d2b6959a4de730f7e6940cf 0 1599648011638 5 connected06ea3111d88082cb1d2b6959a4de730f7e6940cf 10.120.13.209:6379@16379 master - 0 1599648012000 5 connected 10923-163833e816f1768d6388fbff2c7e72035251c0408d6ae 10.120.13.202:6379@16379 myself,master - 0 1599648009000 1 connected 0-5460vars currentEpoch 6 lastVoteEpoch 0
cluster-node-timeout:毫秒,节点不可用最大时长,超过此时间将故障转移处理,从节点竞选为主。
bind 10.120.13.202port 6380daemonize yes# 进程号和log存储位置pidfile "/var/run/redis/redis-server-6380.pid"logfile "/var/log/redis/redis-server-6380.log"# 快照配置save 3600 1stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename "dump-6380.rdb"# 持久化文件,node列表存储目录dir "/var/lib/redis"# 集群模式开启cluster-enabled yes# 集群节点列表信息,默认 var/lib/rediscluster-config-file nodes-6380.confcluster-node-timeout 5000
此步非必须,检查redis 版本若在5.0以上就不需要这一步。对于低于5.0的,redis-cli 不支持创建集群功能,所以这里编译一个 redis-cli 工具
# 下载 5.0.9 版本root@lacr_r1: ~/# wget http://download.redis.io/releases/redis-5.0.9.tar.gz# 解压和编译root@lacr_r1: ~/# tar xf redis-5.0.9.tar.gzroot@lacr_r1: ~/# cd ~/redis-5.0.9root@lacr_r1:~/redis-5.0.9# make
$: scp redis-6379.conf root@10.120.13.202:/etc/redis/$: scp redis-6380.conf root@10.120.13.202:/etc/redis/$: ssh root@10.120.13.202$: (redis-server etc/redis/redis-6379.conf &)$: (redis-server /etc/redis/redis-6380.conf &)$: exit# 修改配置中的端口,ip$: scp redis-6379.conf root@10.120.13.207:/etc/redis/$: scp redis-6380.conf root@10.120.13.207:/etc/redis/$: ssh root@10.120.13.207$: (redis-server etc/redis/redis-6379.conf &)$: (redis-server etc/redis/redis-6380.conf &)$: exit# 修改配置中的端口,ip$: scp redis-6379.conf root@10.120.13.209:/etc/redis/$: scp redis-6380.conf root@10.120.13.209:/etc/redis/$: ssh root@10.120.13.209$: (redis-server /etc/redis/redis-6379.conf &)$: (redis-server /etc/redis/redis-6380.conf &)$: exit
命令很简单,只需要指定节点列表和从节点数即可,如下:
# 若不指定从节点数,默认会将所有的节点设置为主节点redis-cli --cluster create ip1:port1 ip2:port2 ... --cluster-replicas 从节点数
root@lacr_r1:~/redis-5.0.9/src# ./redis-cli --cluster create 10.120.13.202:6379 10.120.13.202:6380 10.120.13.207:6379 10.120.13.207:6380 10.120.13.209:6379 10.120.13.209:6380 --cluster-replicas 1>>> Performing hash slots allocation on 6 nodes...Master[0] -> Slots 0 - 5460Master[1] -> Slots 5461 - 10922Master[2] -> Slots 10923 - 16383Adding replica 10.120.13.207:6380 to 10.120.13.202:6379Adding replica 10.120.13.209:6380 to 10.120.13.207:6379Adding replica 10.120.13.202:6380 to 10.120.13.209:6379M: 3e816f1768d6388fbff2c7e72035251c0408d6ae 10.120.13.202:6379slots:[0-5460] (5461 slots) masterS: 35a188ae062bd6f8706f0b65674a234c6fde2752 10.120.13.202:6380replicates 06ea3111d88082cb1d2b6959a4de730f7e6940cfM: 57a26110c251688de48641853a9761336c576811 10.120.13.207:6379slots:[5461-10922] (5462 slots) masterS: d16e227af18daf265d5bbd5183a227b754ca7812 10.120.13.207:6380replicates 3e816f1768d6388fbff2c7e72035251c0408d6aeM: 06ea3111d88082cb1d2b6959a4de730f7e6940cf 10.120.13.209:6379slots:[10923-16383] (5461 slots) masterS: bdf749bb3d39421c806fd6e8a666d068ec9351c4 10.120.13.209:6380replicates 57a26110c251688de48641853a9761336c576811Can I set the above configuration? (type 'yes' to accept): yes>>> Nodes configuration updated>>> Assign a different config epoch to each node>>> Sending CLUSTER MEET messages to join the clusterWaiting for the cluster to join...>>> Performing Cluster Check (using node 10.120.13.202:6379)M: 3e816f1768d6388fbff2c7e72035251c0408d6ae 10.120.13.202:6379slots:[0-5460] (5461 slots) master1 additional replica(s)S: d16e227af18daf265d5bbd5183a227b754ca7812 10.120.13.207:6380slots: (0 slots) slavereplicates 3e816f1768d6388fbff2c7e72035251c0408d6aeM: 57a26110c251688de48641853a9761336c576811 10.120.13.207:6379slots:[5461-10922] (5462 slots) master1 additional replica(s)S: bdf749bb3d39421c806fd6e8a666d068ec9351c4 10.120.13.209:6380slots: (0 slots) slavereplicates 57a26110c251688de48641853a9761336c576811S: 35a188ae062bd6f8706f0b65674a234c6fde2752 10.120.13.202:6380slots: (0 slots) slavereplicates 06ea3111d88082cb1d2b6959a4de730f7e6940cfM: 06ea3111d88082cb1d2b6959a4de730f7e6940cf 10.120.13.209:6379slots:[10923-16383] (5461 slots) master1 additional replica(s)[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.
root@lacr_r1:~/redis-5.0.9/src# redis-cli -h lacr_r1lacr_r1:6379> CLUSTER INFOcluster_state:ok # 集群状态cluster_slots_assigned:16384 # 分片数量或可分配槽位数cluster_slots_ok:16384cluster_slots_pfail:0cluster_slots_fail:0cluster_known_nodes:6 # 集群节点数cluster_size:3 # 集群主节点数目cluster_current_epoch:6 # 集群配置版本cluster_my_epoch:1cluster_stats_messages_ping_sent:88cluster_stats_messages_pong_sent:97cluster_stats_messages_sent:185cluster_stats_messages_ping_received:92cluster_stats_messages_pong_received:88cluster_stats_messages_meet_received:5cluster_stats_messages_received:185
lacr_r1:6379> CLUSTER SLOTS1) 1) (integer) 5461 # 节点1,槽位范围2) (integer) 10922 # [5461, 10922]3) 1) "10.120.13.207" # 主节点2) (integer) 63793) "57a26110c251688de48641853a9761336c576811"4) 1) "10.120.13.209" # 从节点2) (integer) 63803) "bdf749bb3d39421c806fd6e8a666d068ec9351c4"2) 1) (integer) 109232) (integer) 163833) 1) "10.120.13.209"2) (integer) 63793) "06ea3111d88082cb1d2b6959a4de730f7e6940cf"4) 1) "10.120.13.202"2) (integer) 63803) "35a188ae062bd6f8706f0b65674a234c6fde2752"3) 1) (integer) 02) (integer) 54603) 1) "10.120.13.202"2) (integer) 63793) "3e816f1768d6388fbff2c7e72035251c0408d6ae"4) 1) "10.120.13.207"2) (integer) 63803) "d16e227af18daf265d5bbd5183a227b754ca7812"lacr_r1:6379>
https://github.com/dingkegithub/redis-cluster
文章转载自老码农空杯修行记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




