redis学习redis我爱编程

使用docker搭建redis主从复制、哨兵机制

2018-03-02  本文已影响88人  kylinxiang

1. 拓扑结构

本文搭建如下图所示的redis拓扑结构,拓扑中共有3个哨兵,1和mater结点和2个slave结点。


redis拓扑结构

拓扑信息:

角色 ip port
redis-master redis-master或者master或者master-sentinel或者master-sentinel2或者master-sentinel3或自动分配的ip 6379
redis-slave1 容器启动时自动分配的ip 6380
redis-slave2 容器启动时自动分配的ip 6381
redis-master-sentinel 容器启动时自动分配的ip 26379
redis-master-sentinel2 容器启动时自动分配的ip 26380
redis-master-sentinel3 容器启动时自动分配的ip 26381

注:master或者master-sentinel或者master-sentinel2或者master-sentinel3都是主节点容器的别名。与之相关联的容器可以通过别称来代替ip访问容器。

2. 搭建主从复制结构

2.1 master节点配置

2.1.1 master节点配置文件

master节点配置文件

2.1.2 master节点配置文件详解

其他配置请参考redis中文官网:www.redis.cn

2.1.3 在docker中运行redis master节点服务

master节点docker命令

命令说明:

容器启动后,进入容器挂载的目录,执行redis-server redis-6379.conf命令,使用redis-6379.conf配置启动redis服务。具体操作如下图所示:

启动master节点
执行上述命令之后,如果没有消息,那么就是最好的消息,说明redis-server已经成功启动了。可以通过redis-6379.conf中配置的日志文件来查看启动情况。具体操作如下图所示:
查看日志文件
日志说明:

上述警告对于demo来说可以忽略,但是对于生产环境,需要重新对系统进行相关配置之后,再重新启动容器。
至此,master节点已经成功启动了。

2.2 slave节点配置

2.2.1 slave节点配置文件

两个slave节点的配置一模一样,除了端口号之外。slave1的端口为6380,slave2的端口号为6381。


slave1节点的配置文件

2.2.2 slave节点配置文件详解

2.2.3 在docker中运行redis slave节点服务

启动slave节点容器

命令说明:

容器启动后使用redis-server redis-6380.conf命令启动redis server服务。如下图所示:

启动redis server服务
redis-server redis-6380.conf命令执行后,如果没有任何消息,那么就是最好的消息,说明redis server已经成功启动。
下面可以通过查看日志文件来查看启动情况。如下图所示:
查看17slave2的日志
日志分析:

2.3 配置redis哨兵

2.3.1 redis哨兵配置文件

redis-sentinel1配置文件

配置说明:

其他配置请参加redis中文官网:www.redis.cn

2.3.3 在docker容器中启动redis哨兵服务

使用下图命令在容器中启动redis哨兵服务。

docker启动redis哨兵命令
其他两个哨兵服务只需要修改:
--name参数(比如 redis-master-sentinel2)
-v挂载相应的配置文件(比如~/redis/redis-26380.conf:/redis/redis-62380.conf),--link参数给主节点去不同的别名(比如redis-master:master-sentinel2)。

在容器中启动redis-sentinel服务:


在容器中启动redis-sentinel服务

运行上述命令后没有消息,就是最好的消息。
下面可以查看工作目录下的日志文件来查看启动情况。如下图所示:


查看哨兵节点的日志
日志说明:

至此,redis-sentinel节点配置完毕,其余两个sentinel节点请读者根据上面配置自行配置完成(很容易)。

3 总结

本文从配置角度描述了怎么使用Docker搭建redis主从复制,并且添加了哨兵机制,但是并没有对redis进行详细剖析,这里强烈建议读者阅读相关书籍或是到redis官网了解redis运行机制。
若有问题,欢迎在评论区留言。
本文会定期更新,以便使用跟新版本的redis和docker。

`

上一篇 下一篇

猜你喜欢

热点阅读