docker建立redis集群(多分片+多副本)
整理下docker 创建redis集群 多分片shards、多副本replicas的命令
分片均分系统数据,提升系统容量;副本保证读写分离,提供可用性
本文创建了9个节点,3分片*2副本模式(3个master,每个master包含2个slave)
docker pull redis
docker rm redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6 redis-node7 redis-node8 redis-node9
指定集群模式,通过宿主机网络,直接对应端口。 -v表示将宿主机目录和docker目录对应,直接在宿主机可以查看/修改docker内数据
docker create --name redis-node1 --net host -v /Users/bytedance/Documents/project/docker/redis_cluster/data/node1:/data redis --cluster-enabled yes --cluster-config-file nodes-node-1.conf --port 6378
docker create --name redis-node2 --net host -v /Users/bytedance/Documents/project/docker/redis_cluster/data/node2:/data redis --cluster-enabled yes --cluster-config-file nodes-node-2.conf --port 6379
docker create --name redis-node3 --net host -v /Users/bytedance/Documents/project/docker/redis_cluster/data/node3:/data redis --cluster-enabled yes --cluster-config-file nodes-node-3.conf --port 6380
docker create --name redis-node4 --net host -v /Users/bytedance/Documents/project/docker/redis_cluster/data/node4:/data redis --cluster-enabled yes --cluster-config-file nodes-node-4.conf --port 6381
docker create --name redis-node5 --net host -v /Users/bytedance/Documents/project/docker/redis_cluster/data/node5:/data redis --cluster-enabled yes --cluster-config-file nodes-node-5.conf --port 6382
docker create --name redis-node6 --net host -v /Users/bytedance/Documents/project/docker/redis_cluster/data/node6:/data redis --cluster-enabled yes --cluster-config-file nodes-node-6.conf --port 6383
docker create --name redis-node7 --net host -v /Users/bytedance/Documents/project/docker/redis_cluster/data/node7:/data redis --cluster-enabled yes --cluster-config-file nodes-node-7.conf --port 6384
docker create --name redis-node8 --net host -v /Users/bytedance/Documents/project/docker/redis_cluster/data/node8:/data redis --cluster-enabled yes --cluster-config-file nodes-node-8.conf --port 6385
docker create --name redis-node9 --net host -v /Users/bytedance/Documents/project/docker/redis_cluster/data/node9:/data redis --cluster-enabled yes --cluster-config-file nodes-node-9.conf --port 6386
docker start redis-node1 redis-node2 redis-node3 redis-node4 redis-node5 redis-node6 redis-node7 redis-node8 redis-node9
创建集群模式, --cluster-replicas 2 表示每个主节点有多少slave node,整个可以计算有多少master(集群最少三个主节点)
redis-cli --cluster create 127.0.0.1:6378 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 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 2
-c表示集群模式,否则是单机,set 到非自身节点存储的数据时 会报err
redis-cli -c 进入集群模式,执行set,会自动redirect到key对应slot的节点,get获取对应数据。 太方便了
参考:https://www.cnblogs.com/niceyoo/p/14118146.html https://www.cnblogs.com/niceyoo/p/13011626.html