Docker构建Redis集群

Redis基础镜像

在目录/data下创建redis_base目录。

mkdir redis_base
cd redis_base
vim Dockerfile

Redis基础镜像的Dockerfile如下:

FROM ubuntu
MAINTAINER chen "383936915@qq.com"
ENV REFRESHED_AT 2017-09-16
RUN apt-get -yyq update && apt-get -yqq install redis-server redis-tools
VOLUME [ "/var/lib/redis","/var/log/redis/"]
EXPOSE 6379
CMD []

进入/data/redis_base目录,执行命令:

docker build -t chen/redis_base .

构建完成后,查看镜像:

docker images 

可以看到Redis的镜像已经构建完成。

Redis Master节点

在目录/data下创建redis_primary目录。

mkdir redis_primary
cd redis_primary
vim Dockerfile

Redis Master节点镜像的Dockerfile如下:

FROM chen/redis_base
MAINTAINER chen "383936915@qq.com"
ENV REFRESHED_AT 2017-09-22
ENTRYPOINT ["redis-server","--logfile /var/log/redis/redis-server.log"]

进入/data/redis_primary目录,执行命令:

docker build -t chen/redis_primary .

构建完成后,查看镜像:

docker images 

可以看到Redis Master的镜像已经构建完成。

创建Docker NetWork

创建express network,Redis集群的节点都运行在express中。
执行以下命令创建express network:

docker network create express 

这样我们就创建了一个express network,执行以下命令可以查看express的信息:

docker network inspect express

Redis从节点

步骤跟主节点一致,主要是Dockfile不一样,Dockerfile如下:

FROM chen/redis_replica
MAINTAINER chen "383936915@qq.com"
ENV REFRESHED_AT 2017-09-22
ENTRYPOINT ["redis-server","--logfile /var/log/redis/redis-replica.log","--slaveof redis_primary 6379"]

构建/data/redis_replica目录下执行以下命令:

docker build -t chen/redis_replica .

这样一个Redis从节点的镜像就构建好了。

启动Redis主从节点

我们需要先启动主节点,并运行在express network中,执行以下命令:

docker run -d -h redis_primary --net express --name redis_primary chen/redis_primary 

依次启动两个从节点,执行以下命令:

docker run -d -h redis_replica1 --name redis_replica1 --net express chen/redis_replica 
docker run -d -h redis_replica2 --name redis_replica2 --net express chen/redis_replica 

这样一个主节点和两个从节点都启动起来了。

查看Redis主从节点的日志

先查看Redis Master节点的日志,如下:

docker run -ti --rm --volumes-from redis_replica1 ubuntu cat /var/log/redis/redis-replica.log

可以看到主节点具体的日志输出:

1:S 24 Sep 07:35:15.929 * The server is now ready to accept connections on port 6379
1:S 24 Sep 07:35:15.934 * Connecting to MASTER redis_primary:6379
1:S 24 Sep 07:35:15.939 * MASTER <-> SLAVE sync started
1:S 24 Sep 07:35:15.939 * Non blocking connect for SYNC fired the event.
1:S 24 Sep 07:35:15.939 * Master replied to PING, replication can continue...
1:S 24 Sep 07:35:15.939 * Partial resynchronization not possible (no cached master)
1:S 24 Sep 07:35:15.941 * Full resync from master: 3dc967ddf2be0a82b9c9af0027a478e058f523cf:1
1:S 24 Sep 07:35:16.044 * MASTER <-> SLAVE sync: receiving 18 bytes from master
1:S 24 Sep 07:35:16.044 * MASTER <-> SLAVE sync: Flushing old data
1:S 24 Sep 07:35:16.044 * MASTER <-> SLAVE sync: Loading DB in memory
1:S 24 Sep 07:35:16.044 * MASTER <-> SLAVE sync: Finished with success

从节点的具体日志输出,执行以下命令:

docker run -ti --rm --volumes-from redis_replica1 ubuntu cat /var/log/redis/redis-replica.log
docker run -ti --rm --volumes-from redis_replica2 ubuntu cat /var/log/redis/redis-replica.log

可以看到Redis从节点的日志输出:

1:S 24 Sep 07:48:48.937 * Connecting to MASTER redis_primary:6379
1:S 24 Sep 07:48:48.939 * MASTER <-> SLAVE sync started
1:S 24 Sep 07:48:48.939 * Non blocking connect for SYNC fired the event.
1:S 24 Sep 07:48:48.939 * Master replied to PING, replication can continue...
1:S 24 Sep 07:48:48.939 * Partial resynchronization not possible (no cached master)
1:S 24 Sep 07:48:48.939 * Full resync from master: 3dc967ddf2be0a82b9c9af0027a478e058f523cf:1135
1:S 24 Sep 07:48:48.965 * MASTER <-> SLAVE sync: receiving 18 bytes from master
1:S 24 Sep 07:48:48.966 * MASTER <-> SLAVE sync: Flushing old data
1:S 24 Sep 07:48:48.966 * MASTER <-> SLAVE sync: Loading DB in memory
1:S 24 Sep 07:48:48.966 * MASTER <-> SLAVE sync: Finished with success

这样Redis集群就弄好啦:]

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值