本篇文章介紹redis集群的快速搭建,不對redis進行深入探究,方便想要了解redis集群的朋友快速進行測試。
服務器基礎配置
創建掛載目錄
mkdir /mnt/data/rediscluster/7001/data
mkdir /mnt/data/rediscluster/7001/conf
mkdir /mnt/data/rediscluster/7002/data
mkdir /mnt/data/rediscluster/7002/conf
mkdir /mnt/data/rediscluster/7003/data
mkdir /mnt/data/rediscluster/7003/conf
mkdir /mnt/data/rediscluster/7101/data
mkdir /mnt/data/rediscluster/7101/conf
mkdir /mnt/data/rediscluster/7102/data
mkdir /mnt/data/rediscluster/7102/conf
mkdir /mnt/data/rediscluster/7103/data
mkdir /mnt/data/rediscluster/7103/conf
分別在每個conf目錄下創建文件redis.conf
#端口號,寫文件夾對映的端口
Port 7001
#開啟集群
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
#開啟aof存儲
appendonly yes
#設置登錄密碼
requirepass 123123
#設置節點密碼,集群必設
masterauth 123123
# 關閉保護,外網可直接訪問
protected-mode no
開放端口
iptables -I INPUT -p tcp --dport 7001 -j ACCEPT
iptables -I INPUT -p tcp --dport 7002 -j ACCEPT
iptables -I INPUT -p tcp --dport 7003 -j ACCEPT
iptables -I INPUT -p tcp --dport 7101 -j ACCEPT
iptables -I INPUT -p tcp --dport 7102 -j ACCEPT
iptables -I INPUT -p tcp --dport 7103 -j ACCEPT
iptables -I INPUT -p tcp --dport 17001 -j ACCEPT
iptables -I INPUT -p tcp --dport 17002 -j ACCEPT
iptables -I INPUT -p tcp --dport 17003 -j ACCEPT
iptables -I INPUT -p tcp --dport 17101 -j ACCEPT
iptables -I INPUT -p tcp --dport 17102 -j ACCEPT
iptables -I INPUT -p tcp --dport 17103 -j ACCEPT
同時在雲服務器安全組開放以上端口
docker 配置
編輯docker-compose.yml文件
version: "3.4"
services:
redis1:
image: redis:5.0.3
restart: "no"
container_name: redis5-m1
command: redis-server /etc/redis/redis.conf
volumes:
- /mnt/data/rediscluster/7001/data:/data
- /mnt/data/rediscluster/7001/conf/redis.conf:/etc/redis/redis.conf
network_mode: "host"
redis2:
image: redis:5.0.3
restart: "no"
container_name: redis5-m2
command: redis-server /etc/redis/redis.conf
volumes:
- /mnt/data/rediscluster/7002/data:/data
- /mnt/data/rediscluster/7002/conf/redis.conf:/etc/redis/redis.conf
network_mode: "host"
redis3:
image: redis:5.0.3
restart: "no"
container_name: redis5-m3
command: redis-server /etc/redis/redis.conf
volumes:
- /mnt/data/rediscluster/7003/data:/data
- /mnt/data/rediscluster/7003/conf/redis.conf:/etc/redis/redis.conf
network_mode: "host"
redis4:
image: redis:5.0.3
restart: "no"
container_name: redis5-s1
command: redis-server /etc/redis/redis.conf
volumes:
- /mnt/data/rediscluster/7101/data:/data
- /mnt/data/rediscluster/7101/conf/redis.conf:/etc/redis/redis.conf
network_mode: "host"
redis5:
image: redis:5.0.3
restart: "no"
container_name: redis5-s2
command: redis-server /etc/redis/redis.conf
volumes:
- /mnt/data/rediscluster/7102/data:/data
- /mnt/data/rediscluster/7102/conf/redis.conf:/etc/redis/redis.conf
network_mode: "host"
redis6:
image: redis:5.0.3
restart: "no"
container_name: redis5-s3
command: redis-server /etc/redis/redis.conf
volumes:
- /mnt/data/rediscluster/7103/data:/data
- /mnt/data/rediscluster/7103/conf/redis.conf:/etc/redis/redis.conf
network_mode: "host"
執行命令
docker-compose up -d
運行命令docker ps查看redis6個實例是否都啟動成功
建立集群
隨意進入一個容器內
docker exec -it redis5-m1 /bin/bash
在容器內執行命令:
redis-cli --cluster create 外網ip:7001 外網ip:7002 外網ip:7003 外網ip:7101 外網ip:7102 外網ip:7103 --cluster-replicas 1
中途會提示是否啟用上述配置,輸入 yes
執行命令:exit 退出容器
至此集群搭建完成
查看集群當前狀態
隨意進入一個容器內輸入命令:
redis-cli -a 123123 --cluster info 外網ip:7001
注意:
建立集群時需要保證集群每個節點中都沒有數據。如果寫入了數據想要重建集群,需要先把
/mnt/data/rediscluster/*/data 目錄下的文件清空
find /mnt/data/rediscluster/ -name "nodes.*" |xargs rm -rf
find /mnt/data/rediscluster/ -name "*.aof" |xargs rm -rf