Docker应用系列(一)| 构建Redis哨兵集群
2024-10-17 01:08:42
本示例基于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:>
至此,可以确定哨兵模式已启动成功。
最新文章
- android Can't bind to local 86XX for debugger
- sublime 工具构建
- Asp.Net工作原理
- SharePoint 2010 系统账户没完全控制权限了
- ASP.NET Redis 开发 [转]
- <;后会无期>;经典影评
- window对象;document对象;
- Hibernate——基础及XML配置
- hibernate 双向一对多关系(Annotation mappedBy注解理解)
- Ubuntu16.04安装VMware Tools问题
- struts2—拦截器
- js substr和substring字符串截取
- 使用Interface创建的装饰者实现了必需的方法
- Watson Product
- [USACO13DEC]假期计划(黄金)Vacation Planning (gold)
- Swing中经常会遇到的若干问题——JTable(持续更新)
- win32线程
- web安全测试排查
- Vue+iview实现添加删除类
- Visual Studio VS使用freopen调试控制台闪退
热门文章
- mysql \G
- Ibatis的resultMap和查询数据的对应关系
- 【机器学习】K-邻近算法的python 实现
- 2017 ACM-ICPC 西安网络赛 F.Trig Function Chebyshev多项式
- 【Hadoop】大数据时代,我们为什么使用hadoop
- LintCode 510: Maximal Rectangle
- .NET中的异常和异常处理
- 使用infinite-scroll实现Ghost博文列表的滚动加载
- htmlunit爬虫工具使用--模拟浏览器发送请求,获取JS动态生成的页面内容
- 远程工具(SSH Secure)连接Centos出现中文乱码问题的解决办法