docker Redis的主从配置
redis是k-v型nosql数据库,支持字符串(string)、列表(list)、集合(set)、散列(hash)、有序集合(zset:形如member:score的散列集合,其中member为成员,score为成员得分,必须为float型数据)。
综合使用redis的以上5种数据类型,可以将redis应用于各种场景,比如点赞、投票网站、消息队列、分布式锁(使用setnx指令,该指令只有在key不存在的时候,才会执行写入操作)、文件分发(没研究过)、日志记录等等。
redis支持主从配置(拓展读性能,主机负责读取、写入,从机只负责读取,主机自动向从机以rdb快照形式同步数据)、持久化配置(支持rdb快照持久化、aof持久化,旧版redis不支持同时配置两种持久化方式,新版的貌似可以)、发布订阅(pub、sub)、事务、流水线pipeline(减少客户端和服务端往返连接次数从而提高性能)、客户端分片(拓展写性能)等。
本文主要记录下redis中的主从配置及持久化操作
下载redis镜像
镜像中心
推荐使用国内daocloud镜像 镜像地址:daocloud.io/library/
镜像地址:daocloud.io/library/
拉取redis镜像
docker pull daocloud.io/library/redis:latest
查看拉取的镜像
docker images
搭建redis集群
运行redis镜像
首先使用docker启动3个redis容器服务,分别使用到6379、6380、6381端口
docker run --name redis-6379 -p 6379:6379 -d daocloud.io/library/redis
docker run --name redis-6380 -p 6380:6379 -d daocloud.io/library/redis
docker run --name redis-6381 -p 6381:6379 -d daocloud.io/library/redis
查看运行


配置redis集群
使用如下命令查看容器内网的ip地址等信息

3个redis的内网ip地址为:
redis-6379:172.17.0.2:6379
redis-6380:172.17.0.3:6379
redis-6381:172.17.0.4:6379
进入docker容器内部,查看当前redis角色(主还是从)

可以看到当前3台redis都是master角色,使用redis-cli命令修改redis-6380、redis-6381的主机为172.17.0.2:6379
SLAVEOF host port // SLAVEOF 172.17.0.2 6379
查看redis-6379是否已经拥有2个从机:

至此,redis下的主从配置就ok了。
配置Sentinel哨兵
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务:
监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
具体介绍可参考:http://redisdoc.com/topic/sentinel.html
接下来直接进入3台redis容器内部进行配置
docker exec -ti 容器id /bin/bash
进入根目录创建sentinel.conf文件
cd / && touch sentinel.conf
修改文件内容为:
sentinel monitor mymaster 172.17.0.2 6379 1
最后,启动Redis哨兵:
使用 redis-sentinel /sentinel.conf 启动Redis哨兵监控 使用 ps –ef |grep redis 命令,可以看到redis-server和redis-sentinel正在运行
至此,Sentinel哨兵配置完毕。
测试验证
首先查看哨兵监控情况

然后尝试关闭主机

再查看剩余2个从机,这里会自动选举产生新的主机

然后,我们再次将刚才停止的主机启动起来,发现启动后其自动成为从机

至此,redis的主从高可用模式已经全部配置完毕,持久化下次研究了再过来记录吧,over...
docker Redis的主从配置的更多相关文章
- docker+redis安装与配置,主从+哨兵模式
docker+redis安装与配置 docker安装redis并且使用redis挂载的配置启动 1.拉取镜像 docker pull redis:3.2 2.准备准备挂载的目录和配置文件 首先在/do ...
- CentO7 安装 redis, 主从配置,Sentinel集群故障转移切换
一.Redis的安装(前提是已经安装了EPEL) 安装redis: yum -y install redis 启动/停止/重启 Redis 启动服务: systemctl start re ...
- linux下安装redis及主从配置
安装比较简单,确保linux安装有gcc # gcc -v 查看gcc版本,如果没有yum安装即可 安装开始 1.redis-3.2.8.tar.gz 上传至服务器 (百度网盘:http://pan. ...
- Docker下redis的主从配置
1.拉取redis镜像docker pull redis2.启动3个redis容器服务,分别使用到6379.6380.6381端口docker run --name redis-6379 -p 637 ...
- 【Azure Redis 缓存】由Azure Redis是否可以自定义密码而引申出Azure PaaS的Redis服务是否可以和自建的Redis进行主从配置呢?
问题描述 在自建的Redis服务中,可以通过 config set requirepass <Password> 设置Redis的登录密码,然后使用auth 命令输入密码.操作命令如下: ...
- linux下如何安装配置redis及主从配置
redis的优点:支持主从备份,操作指令丰富,支持异步的数据持久化 将 redis 安装到 /usr/local/webserver/redis 1.下载安装包 wget http://redis.g ...
- redis的主从配置 扩容
由于redis的集群功能没有完全编写好,见:http://redis.io/topics/cluster-spec 集群只有测试版的第8个版本redis3.0.0 见 http://redis.io/ ...
- redis的主从配置
redis的主备配置比较简单,只需要在配置上新增slaveof属性即可,如果主节点需要密码验证,则在加上masterauth属性. 测试安装一个备用redis,备份前一章的节点redis的docker ...
- docker redis安装及配置(外网访问 关闭安全限制 设置密码)
docker run -p 6379:6379 --name redis -v /usr/local/redis/etc/redis.conf:/etc/redis/redis.conf -v /us ...
随机推荐
- .net程序员写业务代码需要注意的地方
代码规范要求1.命名空间规范:dao层的impl实现和接口采用一样的命名空间,到对应文件夹层:IxxDaoContext与其实现类采用顶级命名空间. 2.TableEntity文件夹:所有的实体放到各 ...
- 【POJ】1704.Georgia and Bob
题解 感觉挺神奇的 我们把石子从后往前相邻的两个两两配对,这样他们之间的空格就相当于一堆石子 而配对后左边棋子移动,右边棋子也一定可以跟上取 转化成简单的nim游戏,最后只要看转化出的这(N - 1) ...
- 8-16 不无聊序列 non-boring sequences uva1608
题意: 如果一个序列的任意连续子序列中至少有一个只出现一次的元素 则称这个序列是 不无聊序列 输入一个n个元素的序列a 判断是不是不无聊序列 一开始想当然 以为只要 2位的子序列都满足即可 ...
- nginx中配置文件的讲解
一: 1.配置文件的结构 nginx由配置文件中指定的指令控制的模块组成. 指令分为简单指令和块指令. 一个简单的指令由空格分隔的名称和参数组成,并以分号(;)结尾. 块指令具有与简单指令相同的结构, ...
- Oracle11g 基础 --即将发布
由于整理发布于博客园较为麻烦,所以这可能需要一点时间. 敬请期待.
- redis 发布/订阅 模式
发布/订阅模式的命令如下: * 进入发布订阅模式的客户端,不能执行除发布订阅模式以上命令的其他命令,否则出错.
- [leetcode sort]57. Insert Interval
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
- request.get_full_path() 和request.path区别
1. 都是获取request 请求的url路径 2. request.get_full_path() -- 获取当前url,(包含参数) 请求一个http://127.0.0.1:8000/200/? ...
- JS Function Arguments
Function arguments在ECMAScript中的行为并不像其他大多数语言中的函数参数. 在ECMAScript中,function 并不关心有多少个参数传入函数中,也不关心传入参数的数据 ...
- ASP.net 简单分页的实现
在自己的项目中有一个文章的管理页面需要用到分页, 这种分页方法是在黑马的一个视频中看到的,便用在了自己的项目中. 但是使用控件实在是太丑,虽然我写的也丑....... gridview 控件提供的分页 ...