通过docker创建一个redis主从复制集群

前言:项目中用到的缓存数据库是同事自己写的,虽然可用,但是很多特性都感觉差了一点意思,仅仅是可用。于是乎萌生一个想法,能不能用redis来替代我们自己的内存数据库。
这里尝试使用一下redis的主从复制的特性。

在选择搭建redis集群的时候,为了方便,选用docker来组建一个简单的redis集群,节点也不太多,只需要两个节点,一个master,一个slave。

开始尝试:
安装docker的过程就赘述了。

拉取镜像

首先将redis的镜像拉下来
执行命令:
<code>
docker pull redis
</code>

创建master节点

由于redis镜像里面没有redis.conf文件,需要提前准备redis.conf配置文件。
redis官网下载最新的Stable版本的redis,当前版本是redis 3.2.解压下载的软件包,获取到redis.conf文件。
默认的redis.conf文件启用的安全配置,为了方便测试,需要先将安全配置注释掉。
拷贝一份redis.conf文件,命名为redis_master.conf.
在redis_master.conf中注释掉如下两行配置:
bind 127.0.0.1
protected-mode yes

并修改如下配置项:
daemonize no 改为 daemonize yes

启动一个名为redis-master的docker容器:
<code>
docker run -v configdir/redis_master.conf:/usr/local/etc/redis/redis.conf -it –name redis-master redis /bin/bash
</code>
注:configdir改成配置文件所在的路径。
容器启动后,在容器中运行命令,启动redis-server
<code>
redis-server /usr/local/etc/redis/redis.conf
</code>

在redis中增加一条记录:
在redis-cli中执行:set master master_test

检查记录是否创建成功:
在redis-cli中执行:get master
如果成功了可以看到输出结果是master_test

创建slave节点

同样,根据默认的redis.conf文件复制出一份配置文件:redis_slave.conf
在redis_slave.conf中注释掉如下两行配置:
bind 127.0.0.1
protected-mode yes

并修改如下配置项:
daemonize no 改为 daemonize yes
#slaveof <masterip> <masterport> 改为 slaveof master 6379

启动一个名为redis-slave的docker容器:
<code>
docker run -v configdir/redis_slave.conf:/usr/local/etc/redis/redis.conf -it –name redis-slave –link redis-master:master redis /bin/bash
</code>
注:configdir改成配置文件所在的路径。
容器启动后,在容器中运行命令,启动redis-server
<code>
redis-server /usr/local/etc/redis/redis.conf
</code>

验证slave节点是否能够查询到master节点增加的记录

这里我们可以看看能否在slave节点上查到master节点里面增加的记录
在redis-cli中执行:get master
可以看到输出的结果是:”master_test”

一个简单的主从复制集群搭建完成了。

完!

    原文作者:lsnl8480
    原文地址: https://www.jianshu.com/p/b9171a1449ed
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞