本文是博主使用Docker搭建redis集群的记录。
一、是否安装 Docker 和 Docker Compose
使用如下命令验证
docker --version docker-compose --version
二、创建Redis配置文件
创建一个目录redis-cluster,在目录下创建redis.conf文件
port 6379 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes
三、编写docker-compose.yml
version: 'v1.0' services: redis-node-1: image: redis:latest container_name: redis-node-1 command: redis-server /usr/local/etc/redis/redis.conf ports: - "7001:6379" volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf - ./data/node1:/data redis-node-2: image: redis:latest container_name: redis-node-2 command: redis-server /usr/local/etc/redis/redis.conf ports: - "7002:6379" volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf - ./data/node2:/data redis-node-3: image: redis:latest container_name: redis-node-3 command: redis-server /usr/local/etc/redis/redis.conf ports: - "7003:6379" volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf - ./data/node3:/data redis-node-4: image: redis:latest container_name: redis-node-4 command: redis-server /usr/local/etc/redis/redis.conf ports: - "7004:6379" volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf - ./data/node4:/data redis-node-5: image: redis:latest container_name: redis-node-5 command: redis-server /usr/local/etc/redis/redis.conf ports: - "7005:6379" volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf - ./data/node5:/data redis-node-6: image: redis:latest container_name: redis-node-6 command: redis-server /usr/local/etc/redis/redis.conf ports: - "7006:6379" volumes: - ./redis.conf:/usr/local/etc/redis/redis.conf - ./data/node6:/data
上面文件定义了6个Redis节点的服务,每个节点映射到主机的不同端口,并将之前创建的 redis.conf
文件挂载到容器内,并且也为每个节点创建了独立的数据目录data。
四、启动所有Redis节点
执行以下命令一键启动所有的redis容器
docker-compose up -d
对应的停止命令
docker-compose down
五、创建 Redis 集群
使用以下命令进入其中一个redis容器
docker exec -it redis-node-1 bash
然后在容器内执行以下命令创建集群:
redis-cli --cluster create 内网ip:7001 内网ip:7002 内网ip:7003 内网ip:7004 内网ip:7005 内网ip:7006 --cluster-replicas 1
因为我们是在一个服务器上,利用不同端口,所以最好使用内网ip,并且7000-7006的安全组端口要打开,可以防止出现以下错误
--cluster-replicas 1
表示每个主节点有一个从节点。执行该命令后,会提示你确认集群配置,输入 yes
即可完成集群创建,注意一定是yes,搭建成功之后,可以使用以下命令进入redis进行验证
redis-cli -c -h 内网ip -p 7001 set key1 value1 get key1
六、总结
以上是一台服务器通过docker搭建redis集群,如果是多台服务器,那redis.conf的配置文件上bind需要改为公网ip,并且不会使用docker-compose,而是使用docker run命令启动容器,redis-cli后面的ip和端口也要同步进行变化。