基于docker实现redis高可用集群
基于docker-compose实现redis高可用集群(哨兵模式)
yls
2019-9-20
简介
- 基于docker和docker-compose
- 使用redis集群和sentinel集群,达到redis高可用,为缓存做铺垫
- 每一个redis要匹配一个sentinel;多个sentinel之间要互相关联
搭建redis集群
新建redis文件夹,在该文件夹下创建docker-compose.yml文件,输入如下内容
version: '3.7'
services:
master:
image: redis
container_name: redis-master
restart: always
command: redis-server /etc/redis/redis.conf --bind 0.0.0.0 --port 6382 --requirepass test@dbuser2018 --appendonly yes
ports:
- 6382:6382
network_mode: "host"
volumes:
- ./data:/data
- ./redis.conf:/etc/redis/redis.conf slave1:
image: redis
container_name: redis-slave-1
restart: always
command: redis-server /etc/redis/redis.conf --bind 0.0.0.0 --slaveof 39.97.234.52 6382 --port 6380 --requirepass test@dbuser2018 --masterauth test@dbuser2018 --appendonly yes
ports:
- 6380:6380
network_mode: "host"
volumes:
- ./data:/data
- .redis.conf:/etc/redis/redis.conf slave2:
image: redis
container_name: redis-slave-2
restart: always
#39.97.234.52设置成公网,当前容器ip就是公网ip
#--bind 0.0.0.0表示任何ip都可以访问当前容器
command: redis-server /etc/redis/redis.conf --bind 0.0.0.0 --slaveof 39.97.234.52 6382 --port 6381 --requirepass test@dbuser2018 --masterauth test@dbuser2018 --appendonly yes
ports:
- 6381:6381
#与主机使用同一个ip
network_mode: "host"
volumes:
- ./data:/data
- ./redis.conf:/etc/redis/redis.conf
运行redis容器:在docker-compose.yml当前所在文件夹下,运行命令
docker-compose up -d
- 可以使用如下命令查看日志
docker logs -f 容器ID
搭建sentinel集群
新建sentinel文件夹,在该文件夹下创建docker-compose.yml文件,输入如下内容
version: '3.1'
services:
sentinel1:
image: redis
container_name: redis-sentinel-1
ports:
- 26379:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel1.conf:/usr/local/etc/redis/sentinel.conf sentinel2:
image: redis
container_name: redis-sentinel-2
ports:
- 26380:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel2.conf:/usr/local/etc/redis/sentinel.conf sentinel3:
image: redis
container_name: redis-sentinel-3
ports:
- 26381:26379
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
volumes:
- ./sentinel3.conf:/usr/local/etc/redis/sentinel.conf
创建三个数据卷配置文件(sentinel1.conf,sentinel2.conf,sentinel3.conf),分别为sentinel容器提供配置,我这里将三个配置文件内容设置成一样
port 26379
dir /tmp
# 自定义集群名,其中 39.97.234.52 为 redis-master 的 ip,6382 为 redis-master 的端口,2 为最小投票数(因为有 3 台 Sentinel 所以可以设置成 2)
sentinel monitor mymaster 39.97.234.52 6382 2
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster test@dbuser2018
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
运行sentinel集群:与docker-compose同级目录下,运行如下命令
docker-compose up -d
验证是否成功部署
以交互的方式进入任意一个sentinel容器
docker exec -it redis-sentinel-1 bash
在进入的sentinel容器中,通过命令的方式进入redis客户端
redis-cli -p 26379
在客户端中查看此sentinel对应的redis主节点信息
sentinel master mymaster
能看到如下结果,说明正常
1) "name"
2) "mymaster"
3) "ip"
4) "192.168.145.128"
5) "port"
6) "6379"
7) "runid"
8) "324f148cf69ef6d2a86cfa4bdfc4f6937974b7b8"
9) "flags"
10) "master"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "561"
19) "last-ping-reply"
20) "561"
21) "down-after-milliseconds"
22) "300000"
23) "info-refresh"
24) "7109"
25) "role-reported"
26) "master"
27) "role-reported-time"
28) "4454165"
29) "config-epoch"
30) "0"
31) "num-slaves"
32) "2"
33) "num-other-sentinels"
34) "2"
35) "quorum"
36) "2"
37) "failover-timeout"
38) "180000"
39) "parallel-syncs"
40) "1"
如下命令查看redis从节点是否正常
sentinel slaves mymaster
- 显示如下说明正常
1) "name"
2) "39.97.234.52:6381"
3) "ip"
4) "39.97.234.52"
5) "port"
6) "6381"
7) "runid"
8) "4223d038a4899d77d17e15c8f7af446649c6ddad"
9) "flags"
10) "slave"
11) "link-pending-commands"
12) "0"
13) "link-refcount"
14) "1"
15) "last-ping-sent"
16) "0"
17) "last-ok-ping-reply"
18) "111"
19) "last-ping-reply"
20) "111"
21) "down-after-milliseconds"
22) "30000"
23) "info-refresh"
24) "2984"
25) "role-reported"
26) "slave"
27) "role-reported-time"
28) "1145357"
29) "master-link-down-time"
30) "0"
31) "master-link-status"
32) "ok"
33) "master-host"
34) "39.97.234.52"
35) "master-port"
36) "6382"
37) "slave-priority"
38) "100"
39) "slave-repl-offset"
40) "164572"
基于docker实现redis高可用集群的更多相关文章
- (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)
参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...
- 基于Docker-compose搭建Redis高可用集群-哨兵模式(Redis-Sentinel)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_110 我们知道,Redis的集群方案大致有三种:1)redis cluster集群方案:2)master/slave主从方案:3) ...
- sentinel监控redis高可用集群(一)
一.首先配置redis的主从同步集群. 1.主库的配置文件不用修改,从库的配置文件只需增加一行,说明主库的IP端口.如果需要验证的,也要加多一行,认证密码. slaveof 192.168.20.26 ...
- Redis高可用集群-哨兵模式(Redis-Sentinel)搭建配置教程【Windows环境】
No cross,no crown . 不经历风雨,怎么见彩虹. Redis哨兵模式,用现在流行的话可以说就是一个"哨兵机器人",给"哨兵机器人"进行相应的配置 ...
- Redis 高可用集群
Redis 高可用集群 Redis 的集群主从模型是一种高可用的集群架构.本章主要内容有:高可用集群的搭建,Jedis连接集群,新增集群节点,删除集群节点,其他配置补充说明. 高可用集群搭建 集群(c ...
- heatbeat-gui实现基于nfs的mysql高可用集群
一.简述HA高可用集群 高可用集群就是当集群中的一个节点发生各种软硬件及人为故障时,集群中的其他节点能够自动接管故障节点的资源并向外提供服务.以实现减少业务中断时间,为用户提供更可靠,更高效的服务. ...
- Redis系列(二):Redis高可用集群
一.集群模式 Redis集群是一个由多个主从节点组成的高可用集群,它具有复制.高可用和分片等特性 二.集群部署 1.环境 3台主机分别是: 192.168.160.146 192.168.160.15 ...
- docker下rabbitMQ高可用集群部署
第一步:docker 安装: mac 下安装命令: brew cask install docker 安装完之后查看版本 docker --version 第二步:开始集群搭建: 采用bijukunj ...
- Redis高可用集群方案——哨兵
本篇文章版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文系列地址http://www.cnblogs.com/tdws/tag/NoSql/ 本人之前有篇文章,讲到了redis主从复制,读写分 ...
随机推荐
- 内网渗透bypassuac和smb溢出
对内网渗透需要渗透的目标主机处于跨网段和uac限制的情况做一个渗透记录 环境大致如下 拥有shell权限的win7(有uac限制,处于双网段) 和同win7同一网段下暂时无权限的靶机xp 先对有权限的 ...
- opencv::调整图像亮度与对比度
图像变换可以看作如下: - 像素变换 – 点操作 - 邻域操作 – 区域 调整图像亮度和对比度属于像素变换-点操作 //创建一张跟原图像大小和类型一致的空白图像.像素值初始化为0 Mat new_im ...
- Spring Boot 2.X(十):自定义注册 Servlet、Filter、Listener
前言 在 Spring Boot 中已经移除了 web.xml 文件,如果需要注册添加 Servlet.Filter.Listener 为 Spring Bean,在 Spring Boot 中有两种 ...
- MS09-012 PR提权
漏洞编号:MS09-012 披露日期: 2009/4/14 受影响的操作系统:Windows 2008 x64 x86;XP;Server 2003 sp1 sp2; 测试系统:windows 20 ...
- linux上war包方式安装Jenkins
我的安装环境:jdk1.8, linux系统为: [root@ipha-dev71-1 nmon]# cat /etc/redhat-release # Linux查看版本当前操作系统发行版信息 Ce ...
- mysql数据备份之 xtrabackup
上一篇简单介绍了一下mysqldump进行数据库的备份和恢复,这一篇说一下另一种备份工具xtrabackup,在InnoDB事务引擎泛滥的时代,xtrabackup可以很好的支持数据库的热备份,这就很 ...
- SQL挑战一 : 查找最晚入职员工的所有信息
以上数据库表: CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_nam ...
- MySQL操作(一)用户及权限
一.mysql 里的所有用户都是存储在数据库mysql的user表里 二.创建普通用户.赋权.撤销权限 的操作 1.创建用户(需要先用root进去mysql)格式:create user '用户名 ...
- 一个普通类就能干趴你的springboot,你信吗?
先声明本人并不是标题党,如果看了本篇文章并且认为没有得到任何收获,请您随便留言骂我,本人绝不还口,已经对springboot了如指掌大大神,求放过! 不BB了,直接上代码,请各位在自己的springb ...
- python基础-列表List及内置方法
数据类型之列表-List 用途:用于存一个或多个不同类型的值 定义:通过中括号存值,每个值之间通过逗号进行分隔 l1 = [1,'a',3,'b'] 特性:有序.可变.存多个值的数据类型 常用方法: ...