欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

docker下搭建Redis哨兵模式

时间:2023-07-25
一、安装Docker 基本概念

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
docker包括以下几个组成部分:

镜像(Image)容器(Container)仓库(Repository) 安装准备

安装环境以centos7为例;安装可参考docker官网文档
1、 环境要求
docker要求CentOS 系统的内核版本高于 3.10 ,安装之前首先要验证你的CentOS 版本是否支持 Docker 。
查看你当前的内核版本(建议使用xshell连接虚拟机进行命令操作)

uname -r

2、更新yum
更新yum(docker与yum版本可能不兼容)

yum update --skip-broken

开始安装

1、使用 yum 安装命令

yum install docker

2、配置阿里加速镜像(配置加速镜像可以更快的拉取镜像)

1、进入阿里云官网,并且登录,点击控制台
2、进入控制台后,点击左上角的产品与服务,再选择容器镜像服务
3、进入容器镜像服务后,点击镜像加速器
4、根据相应要求修改配置文件即可

3、查看安装情况并启动docker

docker -version //查看docker版本 Systemctl start docker //启动 docker

二、搭建Redis集群 准备工作

1、安装docker ,并启动
2、下载Redis配置文件
由于redis容器中没有redis.conf 和sentinel.conf 文件,所以先去官网下载redis的Linux系统安装包(.tart.gz)文件夹,用于配置文件的挂载。

开始安装

1、拉取redis4.0.14版本的镜像

docker pull redis:4.0.14

2、创建Redis挂载目录

新建 /docker/redis 文件夹
在redis文件夹下新建/conf ,用于挂载conf文件
在redis文件夹下新建/data ,挂载redis数据文件,防止docker容器损坏而导致数据丢失
在conf文件夹下新建6370、6371、6372三个文件夹用于挂载三个redis容器
将 redis.conf 和 sentinel.conf 文档上传到到6370、6371、6372文件夹中

3、修改Redis配置文件 redis.conf

bind 0.0.0.0 //用于接收所有端口的连接
requirepass “password” //设置redis连接密码
masterauth “password” //设置主从连接的密码

4、执行命令,生成Redis容器(按命令生成redis-6370、redis-6371、redis-6372三个容器)

docker run -p 6370:6379 --name redis-6370 -v /docker/redis/conf/6370.conf:/data/redis/6370.conf -v /docker/redis/conf/sentinel-26370.conf:/data/sentinel/sentinel-26370.conf -v /docker/redis/data:/data -d docker.io/redis:4.0.14 redis-server /data/redis/6370.conf --appendonly yes

-p:设置端口映射,将容器内的6379映射到虚拟机下的6370端口
-name: 设置容器名称
-v: 设置目录挂载,将虚拟机下的/docker/redis/conf/6370.conf文件挂载到容器data/redis/6370.conf目录下 ,sentinel.conf同理
-d:指出生成容器的镜像
redis-server 启动redis容器
–appendonly yes 设置启动数据同步

设置Redis主从模式

1、查看容器内部IP 172.17.0.X

docker inspect containerID

2、进入redis容器内

docker exec -ti containerID /bin/bash

3、进入redis客户端

redis-cli

选择一个redis作为master,其他的redis作为slave
对于作为slave的容器进入客户端执行 slaveof master容器IP 6379(端口号统一为6379)

eg:slaveof 172.17.0.2 6379

4、查看主从模式是否设置成功

auth password //权限验证;输入密码info replication // 查看当前redis的状态信息

对于master会显示slave个数及IP,对于slave会显示master信息
在master客户端执行set k1 v1,存储数据
在slave客户端执行get k1 获得v1,即表示主从模式设置成功

设置哨兵模式

1、进入/docker/redis/conf/637X文件夹下编辑sentinel.conf 文件

删除bind 0.0.0.0
更改 sentinel monitor mymaster 172.17.0.3 6379 1 设置master的IP
增加sentinel auth-pass mymaster password 设置连接master的密码

2、进入redis容器内

docker exec -ti containerID /bin/bash

3、 执行哨兵配置文件,启动哨兵监控

redis-sentinel sentinel.conf --sentinel

4、测试哨兵模式是否成功
查看运行的docker容器; 停掉master容器

docker ps docker stop containerID(master)

查看sentinel运行日志,是否有选举
进入还在运行的redis容器客户端执行info replication 查看状态信息
可以看到新的master被选举出来,即哨兵模式搭建成功

三、整合Springboot

修改springboot项目application.yml配置文件

注释掉host、port配置
增加sentinel:
master: mymaster
nodes: 10.149.137.8:26370,10.149.137.8:26371,10.149.137.8:26372
IP为虚拟机服务器的IP,端口为映射的哨兵端口

其他

修改配置文件,在挂载目录下修改总是不便,且无法观察到哨兵模式是否在运行状态,可以通过在容器中安装相应插件,实现文件编辑和进程查看的功能。

1、先更新apt-get update
2、安装vim编辑器 apt-get install -y vim
3、安装ps命令,查看进程 apt-get install procps

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。