搭建三主三从redis集群。分片+高可用+负载均衡
1 创建redis网络
[root@iZuf65o9ovhniso4w0oji5Z ~]# docker network create redis --subnet 172.38.0.0/16
[root@iZuf65o9ovhniso4w0oji5Z ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
ebab00407ee4 bridge bridge local
f5ddb2cf2442 host host local
9167bc2bd975 mynet bridge local
ffecf7ecf421 none null local
4ded758c3600 redis bridge local
2f62a5163aa1 somenetwork bridge local
2 通过脚本创建六个redis配置
for port in $(seq 1 6); \
do \
mkdir -p /mydata/redis/node-${port}/conf
touch /mydata/redis/node-${port}/conf/redis.conf
cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.1${port}
cluster-announce-port 6379
cluster- announce-bus-port 16379
appendonly yes
EOF
done
3 shell执行
[root@iZuf65o9ovhniso4w0oji5Z ~]# for port in $(seq 1 6); \
> do \
> mkdir -p /mydata/redis/node-${port}/conf
> touch /mydata/redis/node-${port}/conf/redis.conf
> cat << EOF >/mydata/redis/node-${port}/conf/redis.conf
> port 6379
> bind 0.0.0.0
> cluster-enabled yes
> cluster-config-file nodes.conf
> cluster-node-timeout 5000
> cluster-announce-ip 172.38.0.1${port}
> cluster-announce-port 6379
> cluster- announce-bus-port 16379
> appendonly yes
> EOF
> done
[root@iZuf65o9ovhniso4w0oji5Z ~]# cd /mydata
[root@iZuf65o9ovhniso4w0oji5Z mydata]# ls
redis
[root@iZuf65o9ovhniso4w0oji5Z mydata]# cd redis/
[root@iZuf65o9ovhniso4w0oji5Z redis]# ls
node-1 node-2 node-3 node-4 node-5 node-6
[root@iZuf65o9ovhniso4w0oji5Z redis]# cd node-1
[root@iZuf65o9ovhniso4w0oji5Z node-1]# ls
conf
[root@iZuf65o9ovhniso4w0oji5Z node-1]# cd conf/
[root@iZuf65o9ovhniso4w0oji5Z conf]# ls
redis.conf
[root@iZuf65o9ovhniso4w0oji5Z conf]# cat redis.conf
port 6379
bind 0.0.0.0
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 172.38.0.11
cluster-announce-port 6379
cluster- announce-bus-port 16379
appendonly yes
[root@iZuf65o9ovhniso4w0oji5Z conf]#
4 启动
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \
-v /mydata/redis/node-1/data:/data \
-v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
docker run -p 6371:6379 -p 16371:16379 --name redis-2 \
-v /mydata/redis/node-2/data:/data \
-v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
docker run -p 6371:6379 -p 16371:16379 --name redis-3 \
-v /mydata/redis/node-3/data:/data \
-v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
docker run -p 6371:6379 -p 16371:16379 --name redis-4 \
-v /mydata/redis/node-4/data:/data \
-v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
docker run -p 6371:6379 -p 16371:16379 --name redis-5 \
-v /mydata/redis/node-5/data:/data \
-v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
docker run -p 6371:6379 -p 16371:16379 --name redis-6 \
-v /mydata/redis/node-6/data:/data \
-v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
5 集群搭建
redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1