docker 启动 redis集群
docker run -d --name redis-node-1 --net host --privileged=true -v /var/docker/redis/share/redis-node-1:/data redis --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /var/docker/redis/share/redis-node-2:/data redis --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /var/docker/redis/share/redis-node-3:/data redis --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /var/docker/redis/share/redis-node-4:/data redis --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /var/docker/redis/share/redis-node-5:/data redis --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /var/docker/redis/share/redis-node-6:/data redis --cluster-enabled yes --appendonly yes --port 6386
说明:
--net 使用宿主机的ip和端口, 默认
--privileged=true 获取宿主机root用户权限
--cluster-enabled yes 开启redis集群
--appendonly yes 开启持久化
--port 6386 redis端口号
docker exec -it redis-node-1 /bin/bash
redis-cli --cluster create 10.0.0.3:6381 10.0.0.3:6382 10.0.0.3:6383 10.0.0.3:6384 10.0.0.3:638\5 10.0.0.3:6386 --cluster-replicas 1
说明
--cluster=replicas 1 表示为每个master创建一个slave节点
查看集群状态
redis-cli -p 6381
cluster info
cluster nodes
redis-cli -p 6381 -c
防止路由失效加参数 -c 并新增两个key
redis-cli --cluster check 10.0.0.3:6381
主从容错切换迁移
主从扩容
redis-cli --cluster add-node 10.0.0.3:6387 10.0.0.3:6381
6387是要作为master新增节点
6381是原来集群节点里面的领路人
重新分派槽号
redis-cli --cluster reshared 10.0.0.3:6381
redis-cli --cluster add-node 10.0.0.3:6388 10.0.0.3:6387 --cluster-slave --cluster-master-id xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
主从缩容
redis-cli --cluster del-node 10.0.0.3:6388 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
redis-cli --cluster reshared 10.0.0.3:6381
redis-cli --cluster del-node 10.0.0.3:6387 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
redis-cli --cluster check 10.0.0.3:6381
docker run -d -p 6379:6379 --name redis --privileged=true -v /var/docker/redis/redis.conf:/etc/redis/redis.conf -v /var/docker/data:/data redis redis-server /etc/redis/redis.conf