实战
本实验将练习三主三从的Redis的docker集群快速搭建,实现集群的动态扩容和缩容,主从切换等常见实践项目。
拉取镜像
docker pull redis:6.0.8
搭建主从
docker run -d --name redis-node-1 --net host --privileged=true -v /data/redis/share/redis-node-1:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6381
docker run -d --name redis-node-2 --net host --privileged=true -v /data/redis/share/redis-node-2:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6382
docker run -d --name redis-node-3 --net host --privileged=true -v /data/redis/share/redis-node-3:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6383
docker run -d --name redis-node-4 --net host --privileged=true -v /data/redis/share/redis-node-4:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6384
docker run -d --name redis-node-5 --net host --privileged=true -v /data/redis/share/redis-node-5:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6385
docker run -d --name redis-node-6 --net host --privileged=true -v /data/redis/share/redis-node-6:/data redis:6.0.8 --cluster-enabled yes --appendonly yes --port 6386
字段描述
- docker run 创建并运行docker容器实例
- –name redis-node-6 容器名字
- –net host 使用宿主机的IP和端口,默认
- –privileged=true 获取宿主机root用户权限
- -v /data/redis/share/redis-node-6:/data 容器卷,宿主机地址:docker内部地址
- redis:6.0.8 redis镜像和版本号
- –cluster-enabled yes 开启redis集群
- –appendonly yes 开启持久化
- –port 6386 redis端口号
集群信息查看
#连接redis
redis-cli -p 6381
#创建集群 --cluster-replicas 1从服务器为1
redis-cli --cluster create 192.168.0.4:6381 192.168.0.4:6382 192.168.0.4:6383 192.168.0.4:6384 192.168.0.4:6385 192.168.0.4:6386 --cluster-replicas 1
#获取集群信息
CLUSTER INFO
#获取集群主从信息
CLUSTER NODES
#获取集群详细信息
redis-cli --cluster check 192.168.0.4:6381
主从切换
停止主服务器,从服务器自动替换主服务器功能
扩容
扩容的服务器加入集群之后,需要重新对插槽进行重分
#作为主节点加入集群
redis-cli --cluster add-node 192.168.0.4:6387 192.168.0.4:6381
#添加从机到集群
redis-cli --cluster add-node 192.168.0.4:6388 192.168.0.4:6387 --cluster-slave --cluster-master-id d32aa949d5fc5de02987df6cc4416576efa61ed5
redis-cli --cluster check 192.168.0.4:6381
#连接
redis-cli --cluster check 192.168.0.4:6381
服务器下线
从集群删除从服务器
redis-cli --cluster del-node 192.168.0.4:6388 81b8e37c6b0b94f1ba8ffab15b05e2a52e4300b1
去除主服务器
#先将插槽分配到其他服务器
redis-cli --cluster reshard 192.168.0.4:6381
输入done,开始分配