docker的安装,redis镜像拉取
创建外部桥接网络
docker network create -d macvlan --subnet=192.168.148.0/24 --gateway=192.168.148.1 -o parent=ens33 mycluster
配置docker-compose.yml帮助快速启动redis镜像
version: "3"
services:
redis7001:
image: redis:latest # 指定redis镜像,可以是name:tag/id
container_name: redis7001 # 启动后的镜像名称,可有可无
ports:
- "7001:7001" # 指定对外端口
- "17001:17001" # 指定集群端口,根据官网一般为对外端口+10000
volumes:
# 挂载主机中的配置文件
- /home/duron/docker/redis_cluster/redis.conf:/conf/redis.conf
# 将数据保存在主机上, 防止丢失
- /home/duron/docker/redis_cluster/7001:/data
command:
# 默认的redis启动命令
- "redis-server"
# 加载指定的配置文件,这里是镜像内的路径
- "/conf/redis.conf"
# 对外端口号,也可以在redistribution.conf中配置
- "--port 7001"
# 开启redis集群模式,也可以在redistribution.conf中配置
- "--cluster-enabled yes"
# 集群节点配置文件名,也可以在redistribution.conf中配置
- "--cluster-config-file nodes-7001.conf"
networks:
extnetwork:
ipv4_address: 192.168.148.71 # 向桥接网络申请ip地址
redis7002:
image: redis:latest
container_name: redis7002
ports:
- "7002:7002"
- "17002:17002"
volumes:
- /home/duron/docker/redis_cluster/redis.conf:/conf/redis.conf
- /home/duron/docker/redis_cluster/7002:/data
command:
- "redis-server"
- "/conf/redis.conf"
- "--port 7002"
- "--cluster-enabled yes"
- "--cluster-config-file nodes-7002.conf"
networks:
extnetwork:
ipv4_address: 192.168.148.72
redis7003:
image: redis:latest
container_name: redis7003
ports:
- "7003:7003"
- "17003:17003"
volumes:
- /home/duron/docker/redis_cluster/redis.conf:/conf/redis.conf
- /home/duron/docker/redis_cluster/7003:/data
command:
- "redis-server"
- "/conf/redis.conf"
- "--port 7003"
- "--cluster-enabled yes"
- "--cluster-config-file nodes-7003.conf"
networks:
extnetwork:
ipv4_address: 192.168.148.73
redis7004:
image: redis:latest
container_name: redis7004
ports:
- "7004:7004"
- "17004:17004"
volumes:
- /home/duron/docker/redis_cluster/redis.conf:/conf/redis.conf
- /home/duron/docker/redis_cluster/7004:/data
command:
- "redis-server"
- "/conf/redis.conf"
- "--port 7004"
- "--cluster-enabled yes"
- "--cluster-config-file nodes-7004.conf"
networks:
extnetwork:
ipv4_address: 192.168.148.74
redis7005:
image: redis:latest
container_name: redis7005
ports:
- "7005:7005"
- "17005:17005"
volumes:
- /home/duron/docker/redis_cluster/redis.conf:/conf/redis.conf
- /home/duron/docker/redis_cluster/7005:/data
command:
- "redis-server"
- "/conf/redis.conf"
- "--port 7005"
- "--cluster-enabled yes"
- "--cluster-config-file nodes-7005.conf"
networks:
extnetwork:
ipv4_address: 192.168.148.75
redis7006:
image: redis:latest
container_name: redis7006
ports:
- "7006:7006"
- "17006:17006"
volumes:
- /home/duron/docker/redis_cluster/redis.conf:/conf/redis.conf
- /home/duron/docker/redis_cluster/7006:/data
command:
- "redis-server"
- "/conf/redis.conf"
- "--port 7006"
- "--cluster-enabled yes"
- "--cluster-config-file nodes-7006.conf"
networks:
extnetwork:
ipv4_address: 192.168.148.76
networks:
extnetwork: # 定义外部桥接网络
external:
name: mycluster
启动集群
docker-compose up -d
镜像全部启动成功。准备下一步,开始创建集群
docker exec -it redis7006 redis-cli --cluster create 192.168.148.71:7001 192.168.148.72:7002 192.168.148.73:7003 192.168.148.74:7004 192.168.148.75:7005 192.168.148.76:7006 --cluster-replicas 1
中途需要输入:yes
此时的redis集群是不安全的,可以在配置文件中使用密码(requirepass)参数。
验证集群
输入cluster info
查看集群信息,此时已为 ok
,再测试一下set和get,另外可以看到,结点会自己切换,并且6061端口set和数据可以在6062端口get到
进入其中一个容器,执行redis-cli。
docker exec -it redis7001 redis-cli -p 7001 -c