服务器
小编这次要给大家分享的是docker怎么快速搭建redis集群,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。
什么是redis集群
redis集群是redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。
节点
一个redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都处于一个只包含自己的集群当中,要组建一个真正可工作的集群,我们必须将各个独立的节点连接起来,构成一个包含多个节点的集群。
集群配置
配置文件
调整 cluster 节点配置
# 开启cluster集群cluster-enabled yes# 集群配置文件cluster-config-file nodes-6379.conf# 集群节点超时cluster-node-timeout 15000docker快速搭建redis集群
安装redis
参考文章:https://www.jb51.net/article/150054.htm
准备工作
├── conf│ ├── redis.conf│ └── sentinel.conf├── redis│ ├── data_6379│ ├── data_6380│ ├── data_6381│ ├── data_6382│ ├── data_6383│ └── data_6384└── scripts ├── cluster.sh ├── run.sh └── sentinel.shrun.sh 脚本文件
#!/usr/bin/env bashset -e# 脚本当前目录cpath=$(cd $(dirname "$0") || exit; pwd)# 根目录dirpath=$(dirname "$cpath")# 获取端口port="$1"if [[ ! "$port" ]]; then port=6379fi# 创建数据目录mkdir -p "$dirpath"/redis/data_"$port"# 删除已启动服务containerid=$(docker ps -a | grep "redis_$port" | awk -f' ' '{print $1}')if [[ "$containerid" ]]; then docker rm -f ${containerid} > /dev/nullfi# 启动服务containername=redis_"$port"docker run -itd --privileged=true -p "$port":6379 --name ${containername} \\\\-v="$dirpath"/conf/redis.conf:/etc/redis/redis.conf \\\\-v="$dirpath"/redis/data_"$port":/data \\\\redis \\\\redis-server /etc/redis/redis.conf > /dev/null# 获取容器ip地址dockerip=$(docker inspect -f "{{.networksettings.ipaddress}}" "$containername")# 获取容器启动状态isrunning=$(docker inspect -f "{{.state.running}}" "$containername")if [[ "$isrunning" == "true" ]]; then echo "容器:$containername - ip:$dockerip - 启动成功"ficluster.sh 脚本文件
#!/usr/bin/env bashset -e# 脚本当前目录cpath=$(cd $(dirname "$0") || exit; pwd)# 启动集群数量num="$1"if [[ ! "$num" ]]; then num=6fisport=6378for((i=1;i<=$num;i )); do sh ${cpath}/run.sh $(($sport $i))done启动服务
执行脚本文件,默认创建6个节点
sh scripts/cluster.sh脚本返回结果
容器:redis_6379 – ip:172.17.0.2 – 启动成功
容器:redis_6380 – ip:172.17.0.3 – 启动成功
容器:redis_6381 – ip:172.17.0.4 – 启动成功
容器:redis_6382 – ip:172.17.0.5 – 启动成功
容器:redis_6383 – ip:172.17.0.6 – 启动成功
容器:redis_6384 – ip:172.17.0.7 – 启动成功
执行 docker ps 确实是否启动成功
root@desktop-q13ei52:~/docker-config/redis# docker pscontainer id image command created status ports namesc0601df1a456 redis "docker-entrypoint.s…" 27 seconds ago up 26 seconds 0.0.0.0:6384->6379/tcp redis_63846fecf70465b8 redis "docker-entrypoint.s…" 27 seconds ago up 26 seconds 0.0.0.0:6383->6379/tcp redis_63831af15e90b7a0 redis "docker-entrypoint.s…" 28 seconds ago up 27 seconds 0.0.0.0:6382->6379/tcp redis_63826c495f31a5df redis "docker-entrypoint.s…" 28 seconds ago up 28 seconds 0.0.0.0:6381->6379/tcp redis_6381e54fd9fd0550 redis "docker-entrypoint.s…" 29 seconds ago up 28 seconds 0.0.0.0:6380->6379/tcp redis_6380be92ad2f7046 redis "docker-entrypoint.s…" 29 seconds ago up 29 seconds 0.0.0.0:6379->6379/tcp redis_6379到此为止,6个独立集群节点创建完毕,目前还无法正常工作。
创建集群
此处可以跳过,本人是为了省事
获取容器为redis_开始所有的容器ip地址
docker inspect -f "{{.networksettings.ipaddress}}:6379" `docker ps | grep redis_ | awk -f' ' '{print $1}'` | sort |xargs | sed 's/ /, /g'# 返回结果# 172.17.0.2:6379, 172.17.0.3:6379, 172.17.0.4:6379, 172.17.0.5:6379, 172.17.0.6:6379, 172.17.0.7:6379初次创建集群执行
./redis-cli --cluster create 172.17.0.2:6379, 172.17.0.3:6379, 172.17.0.4:6379, 172.17.0.5:6379, 172.17.0.6:6379, 172.17.0.7:6379 --cluster-replicas 1输出结果
licas 1>>> performing h
阿里云服务器多少钱一年?阿里云服务器报价服务器云区别特价日本服务器相关云计算内容为何不跳转?-云服务器问题1元虚拟主机是什么云服务器怎么调最佳性能参数表借力名人效应引来源源不断流量【滁州seo】单页面网站怎么做seo优化