docker-compose安装redis集群教程
作者:下一个明天_tgm
docker-compose安装redis集群
1、安装docker-compose命令
此处略过
2、编写docker-compose.yml文件
version: '2.2' services: redis-node1: image: redis:5.0 ## --cluster-announce-ip 你的公网IP 这部分参数 command: redis-server --port 7000 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10 ports: - "7000:7000" - "17000:17000" volumes: - ./data/node1:/data networks: - redis-cluster redis-node2: image: redis:5.0 command: redis-server --port 7001 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10 ports: - "7001:7001" - "17001:17001" volumes: - ./data/node2:/data networks: - redis-cluster redis-node3: image: redis:5.0 command: redis-server --port 7002 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10 ports: - "7002:7002" - "17002:17002" volumes: - ./data/node3:/data networks: - redis-cluster redis-node4: image: redis:5.0 command: redis-server --port 7003 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10 ports: - "7003:7003" - "17003:17003" volumes: - ./data/node4:/data networks: - redis-cluster redis-node5: image: redis:5.0 command: redis-server --port 7004 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10 ports: - "7004:7004" - "17004:17004" volumes: - ./data/node5:/data networks: - redis-cluster redis-node6: image: redis:5.0 command: redis-server --port 7005 --requirepass lingco --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10 ports: - "7005:7005" - "17005:17005" volumes: - ./data/node6:/data networks: - redis-cluster redis-init: image: redis:5.0 command: > sh -c "redis-server --port 7000 --cluster-enabled yes --cluster-config-file /data/nodes.conf --appendonly yes --bind $$(hostname -i) && sleep 5 && redis-cli --cluster create redis-node1:7000 redis-node2:7001 redis-node3:7002 redis-node4:7003 redis-node5:7004 redis-node6:7005 --cluster-replicas 1" depends_on: - redis-node1 networks: - redis-cluster redis-node7: image: redis:5.0 command: redis-server --port 7006 --appendonly yes --bind 0.0.0.0 --cluster-announce-ip 192.168.1.10 --cluster-announce-port 7006 --cluster-announce-bus-port 17006 ports: - "7006:7006" - "17006:17006" volumes: - ./data/node7:/data networks: redis-cluster:
备注:端口7000-7005为集群,密码统一为 lingco,7006为单节点无密码;在同路径下创建 volumes配置的文件夹。
3、执行docker compose命令
在docker-compose.yml目录中执行命令 docker-compose up -d,如果需要在其它目录执行,则需要指定配置文件yml的路径。
4、查看执行结果
5、创建集群
如果docker-compose.yml中command未执行成功或是集群未创建,则需要手动执行,如下:
- 步骤1、通过命令找到redis集群中的一台,执行:docker ps -a 命令,找到docker容器id
- 步骤2、执行bash命令:docker exec -it 2b93cf1f4c4f bash,进入控制台
- 步骤3、执行创建集群:
redis-cli --cluster create 192.168.1.10:7000 192.168.1.10:7001 192.168.1.10:7002 192.168.1.10:7003 192.168.1.10:7004 192.168.1.10:7005 --cluster-replicas 1 -a lingco
备注:如果集群设置有密码,则需要 -a 密码(lingco),需要确认 输入 yes
集群创建成功,可以通过redis管理工具连接
6、问题排查
采用docker compose安装redis集群,端口正常启动,无法连接
测试连接可以使用,使用库号无法连接,出现如上问题可能是 集群未创建成功,需要手动执行创建集群
通过上面 5 中的 步骤1,步骤2,步骤3,来执行。
如果执行 “步骤3” 时出现提示:
“[ERR] Node xxx is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.”
则需要清空集群中所有节点的数据 data,重新执行命令进行集群创建。
如果执行 “步骤3” 时出现提示:
“[ERR] Node 192.168.1.10:7001 NOAUTH Authentication required.”
则需要在命令中增加 -a参数来指定密码,
如:
redis-cli --cluster create 192.168.1.10:7000 192.168.1.10:7001 192.168.1.10:7002 192.168.1.10:7003 192.168.1.10:7004 192.168.1.10:7005 --cluster-replicas 1 -a lingco
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。