内容简介:以所有找到一份原始的redis.conf文件,将其重命名为:redis-cluster.tmpl
Docker快速构建 Redis 集群(cluster)
以所有 redis
实例运行在同一台宿主机上为例子
搭建步骤
redis
集群目录清单
. ├── Dockerfile ├── make_master_slave.sh ├── run_master_slave.sh ├── compose_master_slave.sh ├── redis-trib.rb ├── master │ ├── 7000 │ │ ├── data │ │ │ ├── appendonly.aof │ │ │ ├── dump.rdb │ │ │ └── nodes.conf │ │ └── redis.conf │ ├── 7001 │ │ ├── data │ │ │ ├── appendonly.aof │ │ │ ├── dump.rdb │ │ │ └── nodes.conf │ │ └── redis.conf │ └── 7002 │ ├── data │ │ ├── appendonly.aof │ │ ├── dump.rdb │ │ └── nodes.conf │ └── redis.conf ├── redis-cluster.tmpl └── slave ├── 7003 │ ├── data │ │ ├── appendonly.aof │ │ ├── dump.rdb │ │ └── nodes.conf │ └── redis.conf ├── 7004 │ ├── data │ │ ├── appendonly.aof │ │ ├── dump.rdb │ │ └── nodes.conf │ └── redis.conf └── 7005 ├── data │ ├── appendonly.aof │ ├── dump.rdb │ └── nodes.conf └── redis.conf
1.redis.conf
找到一份原始的redis.conf文件,将其重命名为:redis-cluster.tmpl
redis-cluster.tmpl
# bind 127.0.0.1 protected-mode no port ${PORT} daemonize no dir /data/redis appendonly yes cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 15000
2.构建redis-trib镜像
redis-trib.rb
是 redis
官方推出的管理 redis
集群的工具,集成在 redis
的源码 src
目录下,因为搭建redis-cluster的时候需要用到redis-trib工具。
构建 redis-trib
镜像
Dockerfile
FROM ruby:2.5.5-slim MAINTAINER xinchen<xcmelody@gmail.com> RUN gem install redis RUN mkdir /redis WORKDIR /redis # redis-trib.rb 可在https://github.com/antirez/redis中找到 # 此处已经 wget https://raw.githubusercontent.com/antirez/redis/4.0/src/redis-trib.rb ADD ./redis-trib.rb /redis/redis-trib.rb
构建镜像
docker build -t redis-trib .
3.创建 docker 内部网络
# docker network ls 可查看 docker network create redis-cluster-net
4.创建 master 和 slave 文件夹并生成配置文件
make_master_slave.sh
# 创建 master 和 slave 文件夹 for port in `seq 7000 7005`; do ms="master" if [ $port -ge 7003 ]; then ms="slave" fi mkdir -p ./$ms/$port/ && mkdir -p ./$ms/$port/data \ && PORT=$port envsubst < ./redis-cluster.tmpl > ./$ms/$port/redis.conf; done
5.运行docker redis 的 master 和 slave 实例
run_master_slave.sh
# 运行docker redis 的 master 和 slave 实例 for port in `seq 7000 7005`; do ms="master" if [ $port -ge 7003 ]; then ms="slave" fi docker run -d -p $port:$port -p 1$port:1$port \ -v $PWD/$ms/$port/redis.conf:/data/redis.conf \ -v $PWD/$ms/$port/data:/data/redis \ --restart always --name redis-$ms-$port --net redis-cluster-net \ redis redis-server /data/redis.conf; done
6.组装masters : slaves 节点参数
组装masters : slaves 节点参数
# 组装masters : slaves 节点参数 matches="" for port in `seq 7000 7005`; do ms="master" if [ $port -ge 7003 ]; then ms="slave" fi matches=$matches$(docker inspect --format '{{(index .NetworkSettings.Networks "redis-cluster-net").IPAddress}}' "redis-$ms-${port}"):${port}" "; done echo $matches # 172.20.0.2:7000 172.20.0.3:7001 172.20.0.4:7002 172.20.0.5:7003 172.20.0.6:7004 172.20.0.7:7005 # 创建docker-cluster,这里就用到了上面的redis-trib镜像 docker run -it --rm --net redis-cluster-net redis-trib ruby redis-trib.rb create --replicas 1 $matches # 最后需要在接下来的console中输入“yes”,即可完成docker-cluster的搭建
参考
以上所述就是小编给大家介绍的《Docker快速构建Redis集群(cluster)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 构建高可用ZooKeeper集群
- 构建高可用ZooKeeper集群
- 轻松构建 基于docker的 redis 集群
- 构建生产环境可用的高可用kubernetes集群
- 构建生产就绪的Kubernetes集群的16点清单
- .net core下简单构建高可用服务集群 原 荐
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Agile Web Application Development with Yii 1.1 and PHP5
Jeffrey Winesett / Packt Publishing / 2010-08-27
In order to understand the framework in the context of a real-world application, we need to build something that will more closely resemble the types of applications web developers actually have to bu......一起来看看 《Agile Web Application Development with Yii 1.1 and PHP5》 这本书的介绍吧!