Redis Cluster是Redis官方提供的分布式解决方案,它允许将数据分散在多个Redis实例之间,从而提高系统的容错能力和性能,一般建议是至少六个节点,三个主节点和三个从节点。
如果有密码验证,配置文件中需要添加masterauth password,这个密码需要与验证密码一样,不然主从同步会失败,也会产生大量错误日志,容易导致磁盘满,默认的集群从库是不能读取操作的,
- 下载和安装Redis 在官网https://redis.io/download下载Redis,然后解压缩文件,进入Redis的目录执行make命令编译并安装Redis。
- 创建配置文件 在Redis目录下创建6个配置文件和6个目录及对应的配置、数据、日志目录 ,分别是redis_7000.conf、redis_7001.conf、redis_7002.conf、redis_7003.conf、redis_7004.conf和redis_7005.conf,每个配置文件的内容应该包括以下信息:
for n in {7000..7005};do mkdir $n;done
for n in `ls`;do mkdir $n/{conf,data,log}; done
cat 7000/conf/7000_redis.conf
port 7000
maxmemory 1gb
masterauth 123456
requirepass 123456
daemonize yes
appendonly yes
pidfile /data/app/redis-cluster/7000/log/7000_redis.pid
dir /data/app/redis-cluster/7000/data
logfile /data/app/redis-cluster/7000/log/7000_redis.log
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 15000
for n in {7001..7005};do cp 7000/conf/7000_redis.conf $n/conf/"$n"_redis.conf;done
for n in {7001..7005};do sed -i "s#7000#$n#g" $n/conf/"$n"_redis.conf ;done
#启动redis
redis-server 7000/conf/7000_redis.conf
redis-server 7001/conf/7001_redis.conf
redis-server 7002/conf/7002_redis.conf
redis-server 7003/conf/7003_redis.conf
redis-server 7004/conf/7004_redis.conf
redis-server 7005/conf/7005_redis.conf
#创建集群:
redis-cli -a '123456' --cluster create 10.0.2.57:7000 10.0.2.57:7001 10.0.2.57:7002 10.0.2.57:7003 10.0.2.57:7004 10.0.2.57:7005 --cluster-replicas 1
上面命令是直接创建了主从和集群并且分了槽位,也可以使用以下命令(分步创建):
redis-cli -p 7000
cluster meet 127.0.0.1:7001
cluster meet 127.0.0.1:7002
cluster meet 127.0.0.1:7003
cluster meet 127.0.0.1:7004
cluster meet 127.0.0.1:7005
#上面加入之后,都是主节点
#下面是登录到各个主节点去加从节点
cluster replicate 从节点id
#登录各主节点分配置槽位:
主1: cluster addslots {0..5460}
主2: cluster addslots {5461..10922}
主3: cluster addslots {10923..16383}
#查看集群相关信息:
127.0.0.1:7004> CLUSTER info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:5451
cluster_stats_messages_pong_sent:5429
cluster_stats_messages_sent:10880
cluster_stats_messages_ping_received:5429
cluster_stats_messages_pong_received:5451
cluster_stats_messages_received:10880
total_cluster_links_buffer_limit_exceeded:0
127.0.0.1:7004> CLUSTER NODES
094b5be95f93ec1a7c0c1978edd41524912a287b 10.0.2.57:7003@17003 slave 38a82f4e273a9296a239ef159c8b3db10bf8b9d1 0 1678419267601 3 connected
5eceecfbfa429fdcec02c61b2b837e3da343181e 10.0.2.57:7004@17004 myself,slave 3f6beb15c0b0db2c81309bffe9a166614a010ed4 0 1678419267000 1 connected
1846e71cdcb22a7487af44e1546987964556af94 10.0.2.57:7005@17005 slave b862cddbb95ce5868de14cf2c850482f3137c17b 0 1678419267000 2 connected
38a82f4e273a9296a239ef159c8b3db10bf8b9d1 10.0.2.57:7002@17002 master - 0 1678419269000 3 connected 10923-16383
3f6beb15c0b0db2c81309bffe9a166614a010ed4 10.0.2.57:7000@17000 master - 0 1678419269605 1 connected 0-5460
b862cddbb95ce5868de14cf2c850482f3137c17b 10.0.2.57:7001@17001 master - 0 1678419268603 2 connected 5461-10922
#cluster help可以看命令帮助,常用命令如下:
INFO 返回当前集群信息
MEET <ip> <port> [<bus-port>] 添加一个节点至当前集群
MYID 返回当前节点集群ID
NODES 返回当前节点的集群信息
REPLICATE <node-id> 将当前节点作为某一集群节点的从库
FAILOVER [FORCE|TAKEOVER] 将当前从库升级为主库
RESET [HARD|SOFT] 重置集群并清空所有数据
ADDSLOTS <slot> [<slot> ...] 为当前集群节点增加一个或多个插槽位,推荐在bash shell中执行,可通过{int..int}指定多个插槽位
DELSLOTS <slot> [<slot> ...] 为当前集群节点删除一个或多个插槽位,推荐在bash shell中执行,可通过{int..int}指定多个插槽位
FLUSHSLOTS 删除当前节点中所有的插槽信息
FORGET <node-id> 从集群中删除某一节点
COUNT-FAILURE-REPORTS <node-id> 返回当前集群节点的故障报告数量
COUNTKEYSINSLOT <slot> 返回某一插槽中的键的数量
GETKEYSINSLOT <slot> <count> 返回当前节点存储在插槽中的key名称。
KEYSLOT <key> 返回该key的哈希槽位
SAVECONFIG 保存当前集群配置,进行落盘操作
SLOTS 返回该插槽的信息
原文链接:redis cluster单机上创建集群,转载请注明来源!