部署Redis集群

📅 发布时间:2026/7/10 21:28:35 👁️ 浏览次数:
部署Redis集群
部署Redis Cluster集群1.先在虚拟机上安装rediscd /usr/local wget https://download.redis.io/releases/redis-6.2.18.tar.gz tar -zxvf redis-6.2.18.tar.gz cd redis-6.2.18 make make install2.创建目录mkdir -p /redis-cluster/{7001,7002,7003,7004,7005,7006}3.部署节点cat /redis-cluster/7001/redis.conf EOF bind 0.0.0.0 port 7001 daemonize yes pidfile /var/run/redis_7001.pid logfile /redis-cluster/7001/redis.log dir /redis-cluster/7001 cluster-enabled yes cluster-config-file nodes-7001.conf cluster-node-timeout 5000 appendonly yes protected-mode no EOFcat /redis-cluster/7002/redis.conf EOF bind 0.0.0.0 port 7002 daemonize yes pidfile /var/run/redis_7002.pid logfile /redis-cluster/7002/redis.log dir /redis-cluster/7002 cluster-enabled yes cluster-config-file nodes-7002.conf cluster-node-timeout 5000 appendonly yes protected-mode no EOFcat /redis-cluster/7003/redis.conf EOF bind 0.0.0.0 port 7003 daemonize yes pidfile /var/run/redis_7003.pid logfile /redis-cluster/7003/redis.log dir /redis-cluster/7003 cluster-enabled yes cluster-config-file nodes-7003.conf cluster-node-timeout 5000 appendonly yes protected-mode no EOFcat /redis-cluster/7004/redis.conf EOF bind 0.0.0.0 port 7004 daemonize yes pidfile /var/run/redis_7004.pid logfile /redis-cluster/7004/redis.log dir /redis-cluster/7004 cluster-enabled yes cluster-config-file nodes-7004.conf cluster-node-timeout 5000 appendonly yes protected-mode no EOFcat /redis-cluster/7005/redis.conf EOF bind 0.0.0.0 port 7005 daemonize yes pidfile /var/run/redis_7005.pid logfile /redis-cluster/7005/redis.log dir /redis-cluster/7005 cluster-enabled yes cluster-config-file nodes-7005.conf cluster-node-timeout 5000 appendonly yes protected-mode no EOFcat /redis-cluster/7006/redis.conf EOF bind 0.0.0.0 port 7006 daemonize yes pidfile /var/run/redis_7006.pid logfile /redis-cluster/7006/redis.log dir /redis-cluster/7006 cluster-enabled yes cluster-config-file nodes-7006.conf cluster-node-timeout 5000 appendonly yes protected-mode no EOF4.逐个启动redis-server /redis-cluster/7001/redis.conf redis-server /redis-cluster/7002/redis.conf redis-server /redis-cluster/7003/redis.conf redis-server /redis-cluster/7004/redis.conf redis-server /redis-cluster/7005/redis.conf redis-server /redis-cluster/7006/redis.conf5.启动后检查进程是否存在ps -ef | grep redis-server6.部署集群等待后输入yesredis-cli --cluster create \ 192.168.199.115:7001 \ 192.168.199.115:7002 \ 192.168.199.115:7003 \ 192.168.199.115:7004 \ 192.168.199.115:7005 \ 192.168.199.115:7006 \ --cluster-replicas 17.验证集群redis-cli -c -h 192.168.199.115 -p 7001 cluster info从图可看出是 3 主 3 从结构8.关闭集群建议在关闭虚拟机前先执行redis-cli -c -h 192.168.199.115 -p 7001 shutdown redis-cli -c -h 192.168.199.115 -p 7002 shutdown redis-cli -c -h 192.168.199.115 -p 7003 shutdown redis-cli -c -h 192.168.199.115 -p 7004 shutdown redis-cli -c -h 192.168.199.115 -p 7005 shutdown redis-cli -c -h 192.168.199.115 -p 7006 shutdown9.再重新启动执行第四步即可10.删除集群1.先关闭所有节点进程步骤八2.再删除集群目录和相关文件# 删除整个集群目录 rm -rf /redis-cluster # 删除可能残留的pid文件 rm -f /var/run/redis_700*.pid3.清理日志和持久化文件可选# 清理日志如果日志路径在别处 rm -f /var/log/redis_*.log # 清理持久化文件如果dir配置在别处 rm -f /var/lib/redis/*.rdb /var/lib/redis/*.aof11.要想能让自己连接上还要在部署完成后输入以下指令开放防火墙端口firewall-cmd --permanent --add-port7001-7006/tcp firewall-cmd --permanent --add-port17001-17006/tcp firewall-cmd --reload用docker部署Redis集群有问题docker不能用参考https://blog.csdn.net/2302_80248454/article/details/158775162?fromshareblogdetailsharetypeblogdetailsharerId158775162sharereferPCsharesource2402_85101298sharefromfrom_link1.创建目录mkdir -p /opt/redis-cluster/{node1,node2,node3,node4,node5,node6} cd /opt/redis-cluster2.为每个节点创建配置文件cat node1/redis.conf EOF port 7001 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 appendonly yes protected-mode no daemonize no bind 0.0.0.0 EOFfor i in {2..6}; do sed s/7001/700$i/ node1/redis.conf node$i/redis.conf done3.编写docker-compose.yaml文件vi docker-compose.yamlversion: 3.8 services: redis-node1: image: redis:7 container_name: redis-node1 ports: - 7001:7001 - 17001:17001 volumes: - ./node1/redis.conf:/etc/redis/redis.conf - ./node1/data:/data command: redis-server /etc/redis/redis.conf networks: redis-cluster-net: ipv4_address: 172.20.0.2 redis-node2: image: redis:7 container_name: redis-node2 ports: - 7002:7002 - 17002:17002 volumes: - ./node2/redis.conf:/etc/redis/redis.conf - ./node2/data:/data command: redis-server /etc/redis/redis.conf networks: redis-cluster-net: ipv4_address: 172.20.0.3 redis-node3: image: redis:7 container_name: redis-node3 ports: - 7003:7003 - 17003:17003 volumes: - ./node3/redis.conf:/etc/redis/redis.conf - ./node3/data:/data command: redis-server /etc/redis/redis.conf networks: redis-cluster-net: ipv4_address: 172.20.0.4 redis-node4: image: redis:7 container_name: redis-node4 ports: - 7004:7004 - 17004:17004 volumes: - ./node4/redis.conf:/etc/redis/redis.conf - ./node4/data:/data command: redis-server /etc/redis/redis.conf networks: redis-cluster-net: ipv4_address: 172.20.0.5 redis-node5: image: redis:7 container_name: redis-node5 ports: - 7005:7005 - 17005:17005 volumes: - ./node5/redis.conf:/etc/redis/redis.conf - ./node5/data:/data command: redis-server /etc/redis/redis.conf networks: redis-cluster-net: ipv4_address: 172.20.0.6 redis-node6: image: redis:7 container_name: redis-node6 ports: - 7006:7006 - 17006:17006 volumes: - ./node6/redis.conf:/etc/redis/redis.conf - ./node6/data:/data command: redis-server /etc/redis/redis.conf networks: redis-cluster-net: ipv4_address: 172.20.0.7 networks: redis-cluster-net: driver: bridge ipam: config: - subnet: 172.20.0.0/164.启动所有容器该过程会自动拉取镜像docker compose up -d5.初始化 Redis 集群输入以下命令进入任意一个容器docker exec -it redis-node1 /bin/bash执行集群创建命令redis-cli --cluster create \ 172.20.0.2:7001 \ 172.20.0.3:7002 \ 172.20.0.4:7003 \ 172.20.0.5:7004 \ 172.20.0.6:7005 \ 172.20.0.7:7006 \ --cluster-replicas 1当提示Can I set the above configuration? (type yes to accept):时输入yes确认。如图即为成功6.停止集群要先exit退出容器docker compose down7.再次启动集群执行步骤四