害,作为一个只会写代码的程序员现在完全是远远不够的,还得啥都要会点。
第一步,确保服务器已经安装好docker(md docker是真好用),创建redis网络。
docker network create redis --subnet 172.18.0.1/16
查看创建是否成功
第二步,编写脚本 (备注:在home下循环创建6个文件并写入配置文件)
for port in $(seq 1 6);
do
mkdir -p /home/redis/node-${port}/conf
touch /home/redis/node-${port}/conf/redis.conf
cat << EOF >/home/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
第二步,启动redis,确认挂载文件路径与上面脚本生成的一致,网络为刚刚创建的redis网络
docker run -p 6371:6379 -p 16371:16379 --name redis-1 -v /home/redis/node-1/data:/data -v /home/redis/node-1/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.18.0.11 redis redis-server /etc/redis/redis.conf
第三步,继续启动redis,修改端口号、挂载文件、自定义网络、名称
docker run -p 6372:6379 -p 16372:16379 --name redis-2 -v /home/redis/node-2/data:/data -v /home/redis/node-2/conf/redis.conf:/etc/redis/redis.conf -d --net redis --ip 172.18.0.12 redis redis-server /etc/redis/redis.conf
第四步,重复第三步启动6个镜像(因为配置文件我们生成6个),完成后查看镜像。
没问题启动成功。
第五步,随便进入一个容器内
创建集群
redis-cli --cluster create 172.18.0.11:6379 172.18.0.12:6379 172.18.0.13:6379 172.18.0.14:6379 172.18.0.15:6379 172.18.0.16:6379 --cluster-replicas 1
问是否设置以上配置,输入yes即可
M为主,S为从。完成后查看集群
redis-cli -c
第五步,存值测试,成功会返回当前处理的节点是哪一个。
set a b
将当前处理的节点镜像关闭
重新连接redis,获取刚刚存入的值,因为主服务已经关闭,子服务会将刚刚存入的值返回。
到这就 了