本示例基于Centos 7,在阿里云的三台机器上部署redis集群,假设目前使用的账号为release,拥有sudo权限。

由于Docker官方镜像下载较慢,可以开启阿里云的Docker镜像下载加速器,可参考此文进行配置。

假设三台主机的ip分别为:

  • 主机一:192.168.0.1
  • 主机二:192.168.0.2
  • 主机三:192.168.0.3

三台主机的安装步骤相似,以主机一为例:

1. 安装docker服务:

 sudo yum install -y docker

2. 启动docker服务:

sudo service docker start

3. 查找redis镜像:

sudo docker search redis

4. 下载官方redis镜像:

sudo  docker pull docker.io/redis

5. 下载完后可检查镜像:

sudo docker images 

6. 主机上建立挂载目录和redis配置文件:

mkdir -p /data/redis_data
cd /data/redis_data
touch redis.conf
vi redis.conf

主机一上的redis.conf配置信息如下:

logfile "redis.log"
port 6379
dir /data
appendonly yes
appendfilename appendonly.aof
requirepass 1234

主机二、三上也同样建立挂载目录和redis配置文件,其内容稍有不同:

logfile "redis.log"
port 6379
dir /data
appendonly yes
appendfilename appendonly.aof
slaveof 192.168.0.1 6389
masterauth 1234
requirepass 1234

配置说明:

  • dir:工作目录
  • logfile:日志文件在工作目录下
  • slaveof:指明为主机一的从机
  • requirepass:redis客户端连接的认证密码,若不需要可不配置
  • masterauth:主从redis同步的认证密码,与连接密码同,若不需要可不用配置
  • appendonly:是否需要持久化,yes为需要

7. 三台主机上都启动容器:

sudo docker run -p : -v /data/redis_data/:/data --name redis- -d docker.io/redis redis-server redis.conf

命令说明:

  • -p 6379:6379 : 将容器的6379端口映射到主机的6379端口
  • -v /data/redis_data:/data : 将主机中目录/data/redis_data挂载到容器的/data
  • --name redis-6379: 给出容器名称
  • -d: 后台运行
  • docker.io/redis: 镜像名称
  • redis-server redis.conf: redis的启动命令,指定配置文件

经过这一步后,三台主机已经建立了主从关系。

8. 查看容器运行情况:

sudo docker ps -a

运行中的容器,其状态为Up,

若要停止并删除容器,其命令为:

sudo docker stop 容器id
sudo docker rm 容器id 

9. 观察容器内部redis的情况:

sudo docker exec -it 容器id /bin/bash

该命令可进入容器内部,其默认的工作目录即为/data,再执行redis-cli命令,观察redis信息:

[release@sh-lbs02 -sentinel]$ sudo docker exec -it cac /bin/bash
root@cac589144cfd:/data# redis-cli
127.0.0.1:> info
NOAUTH Authentication required.
127.0.0.1:> auth SVKFGKPaFT
OK
127.0.0.1:> info
# Server
...
# Replication
role:slave
master_host:192.168.0.1
master_port:
...

至此,可确认三台主机的主从模式已经建立成功。

10. 主机上建立哨兵目录和其配置文件:

cd /data/redis_data
touch sentinel.conf
vi sentinel.conf

三台主机上sentinel.conf的内容相同,如下:

logfile "sentinel.log"
sentinel monitor mymaster 192.168.0.1
sentinel auth-pass mymaster

配置说明:

  •   logfile "sentinel.log":输出日志目录
  •   sentinel monitor mymaster 192.168.0.1 6379 1:哨兵监控的主服务器名称为mymaster,ip为192.168.0.1,端口为6379,将这个主服务器标记为失效至少需要1个哨兵进程的同意
  •   sentinel auth-pass mymaster 1234 : 哨兵的认证密码

11. 三台主机上启动哨兵模式:

sudo docker run -p : -v /data/redis_data/:/data --name redis- -d docker.io/redis redis-sentinel sentinel.conf

命令说明:

  • -p 26379:26379 : 将容器的26379端口映射到主机的26379端口
  • -v /data/redis_data:/data : 将主机中目录/data/redis_data挂载到容器的/data
  • --name redis-26379: 给出容器名称
  • -d: 后台运行
  • docker.io/redis: 镜像名称
  • redis-sentinel sentinel.conf: sentinel的启动命令,指定配置文件

经过这一步后,哨兵模式已经建立起来。可通过观察日志查看启动情况

12. 观察容器内哨兵情况:

sudo docker exec -it 容器id /bin/bash

该命令可进入哨兵容器内部,其默认的工作目录即为/data,再执行redis-cli命令,观察redis信息:

[release@sh-lbs02 -sentinel]$ sudo docker exec -it  /bin/bash
root@259da4458937:/data# redis-cli -h 127.0.0.1 -p
127.0.0.1:> info
# Server
...
# Sentinel
sentinel_masters:
sentinel_tilt:
sentinel_running_scripts:
sentinel_scripts_queue_length:
sentinel_simulate_failure_flags:
master0:name=mymaster,status=ok,address=192.168.0.1:,slaves=,sentinels=
127.0.0.1:>

至此,可以确定哨兵模式已启动成功。

Docker应用系列(一)| 构建Redis哨兵集群的更多相关文章

  1. Redis哨兵集群创建脚本--v2

    1. 基础环境 操作系统版本  CentOS Linux release 7.6.1810 (Core) Docker 版本  19.03.11, build 42e35e61f3 Redis  版本 ...

  2. Linux - redis哨兵集群实例

    目录 Linux - redis哨兵集群实例 命令整理 配置流程 Linux - redis哨兵集群实例 命令整理 官网地址:http://redisdoc.com/ redis-cli info # ...

  3. helm部署Redis哨兵集群

    介绍 Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现.故障自动转移.配置中心和客户端通知. 如下图: Redis Sentinel 故障转移过程: 从这 ...

  4. 11.Redis 哨兵集群实现高可用

    作者:中华石杉 Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis mast ...

  5. python连接redis哨兵集群

    一.redis集群模式有多种, 哨兵模式只是其中的一种实现方式, 其原理请自行谷歌或者百度 二.python 连接 redis 哨兵集群 1. 安装redis包 pip install redis 2 ...

  6. redis哨兵集群搭建

    下载redis jar包redis-4.0.11.tar.gz放在/data/redis目录下 解压 命令:tar -zxvf redis-4.0.11.tar.gz 解压后如图所示 在/usr/lo ...

  7. redis哨兵集群、docker入门

    redis-sentinel主从复制高可用 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果m ...

  8. 单台服务器-利用docker搭建Redis哨兵集群模式

    前言:只有一台华为云服务器,所以打算创建三个容器来模拟三个服务器了. 一:拉取redis镜像 二:拉取redis.conf文件 放在自定义的目录下:wget -c http://download.re ...

  9. redis哨兵集群+spring boot 2.×

    Ubuntu集群构建篇 redis-cli:不跟参数,默认访问localhost:6379端口,无密码登陆 redis-cli -h ${host} -p ${port} -a ${password} ...

随机推荐

  1. 排序构造 GYM 101149 F - The Weakest Sith

    题目链接:http://codeforces.com/gym/101149/my 题目大意:给你n个人,他们有成绩a,b,c.一个人如果两门课比另外一个人高,那么这个人就比那个人厉害.问,是否存在一个 ...

  2. 重构改善既有代码设计--重构手法19:Replace Data Value with Object (以对象取代数据值)

    你有一笔数据项(data item),需要额外的数据和行为. 将这笔数据项变成一个对象. class Order... private string customer; ==> class Or ...

  3. new Date('2014/04/30') 和 new Date('2014-04-30') 的区别

    new Date('2014/04/30') Wed Apr 30 2014 00:00:00 GMT+0800 (中国标准时间) new Date('2014-04-30'); Wed Apr 30 ...

  4. [Swing]树形结构的实现

    一般步骤: 1.建立根节点 private DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点"); 2.建 ...

  5. 数据库-SQLite

    技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/luohanchenyilong  数据库-SQLite 技术博客http:// ...

  6. 【洛谷 P3705】 [SDOI2017]新生舞会(费用流,01分数规划)

    题目链接 看到这题我想到了以前做过的一题,名字记不清了,反正里面有"矩阵"二字,然后是道二分图匹配的题. 经典的行列连边网络流. 第\(i\)行和第\(j\)列连边,费用为\(b[ ...

  7. C++ Class与Struct的区别

    转自某楼层的回复http://bbs.csdn.net/topics/280085643 首先,讨论这个问题应该仅从语法上讨论,如果讨论不同人之间编程风格上的差异,那这个问题是没有答案的.毕竟不同的人 ...

  8. 用C#实现对MSSqlServer数据库的增删改查---Server层(WaterLevelSetServer.cs、DeviceSetServer.cs)

    在Server层定义WaterLevelSetServer和WaterLevelRecordServer两个子类,分别继承DeviceSetServer和DeviceRecordServer. usi ...

  9. linux下的僵尸进程处理SIGCHLD信号【转】

    转自:http://www.cnblogs.com/wuchanming/p/4020463.html 什么是僵尸进程? 首先内核会释放终止进程(调用了exit系统调用)所使用的所有存储区,关闭所有打 ...

  10. Apache+jboss群集部署

    Jboss default方式上的Cluster配置[二] - 操作系统http://www.myexception.cn/operating-system/862858.html Jboss def ...