Docker搭建redis集群
关闭防火墙
systemctl status firewalld.service
安装启动Docker
安装(略)
启动
systemctl start docker
创建6个docker容器实例(计划3主3从)
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 是创建容器实例
- –name redis-node-6 中 redis-node-6 就是容器实例的名字
- –net host 使用宿主机的ip和端口,保持默认
- –privileged=true 获取宿主机root用户权限
- -v /data/redis/share/redis-node-6:/data 将宿主机的真实地址**/data/redis/share/redis-node-6挂载到容器的/data** 中
- redis:6.0.8 redis的镜像和版本号
- –cluster-enabled yes 开启redis集群
- –appendonly yes 开启持久化
- –port 6386 redis端口号是6386(自定义)
查看容器是否创建
docker ps -a
进入节点1构建主从关系
docker exec -it redis-node-1 /bin/bash
构建主从关系
这个命令中的端口都是我们之前创建容器定义的端口
ip就是宿主机的ip
redis-cli --cluster create ip:6381 ip:6382 ip:6383 ip:6384 ip:6385 ip:6386 --cluster-replicas 1
–cluster-replicas 1 表示为每个master创建一个slave节点
查看节点状态
进入第一节点
docker exec -it redis-node-1 /bin/bash
打开redis-cli
redis-cli -p 6381
执行
cluster info
cluster node
成功!