前言
一般来说,因为性能,安全,持久化等问题,docker 搭建的环境时很少推荐用来当生产环境的,但是最近公司的一个项目居然要用docker来搭建生产环境,没办法,客户就时上帝,客户说啥就是啥。
当然这次部署还有用docker 部署nacos集群、minio集群、mysql主从、rabbitmq集群,整套部署就redis和rabbitmq遇到了麻烦,其他搭建比较顺利。后面会把rabbitmq集群整理发出来
本次部署时在三台服务器上单独搭建docker并做成集群,你没有听错,就是三台服务器上,用docker搭建! 用docker!
步骤
1. 创建持久化目录
mkdir /data/redis/{conf,data}
2.创建配置文件
docker run -itd --name redis redis:6.2.14-alpine
cd /data/redis/conf
docker cp redis:/usr/local/etc/redis/redis.conf ./
修改配置文件,具体的参数具体改,先找一份对应版本的redis.conf ,地址奉上:redis.conf · Gitee 极速下载/redis - Gitee.com
1.先在网络部分注释掉单机连接那一行,即注释掉bind 127.0.0.1
2.同样我们要将后台运行打开: daemonize no,设置为yes。
3.将 保护模式关闭:protected-mode yes 改为:protected-mode no
4.打开RDB持久化配置:
#RDB持久化策略 默认三种方式,[900秒内有1次修改],
#[300秒内有10次修改],[60秒内有10000次修改]即触发RDB持久化,
#我们可以手动修改该参数或新增策略
save 900 1
save 300 10
save 60 10000
#RDB文件名
dbfilename dump.rdb
#RDB文件存储路径
dir ./
策略配置:
#在seconds秒内有changes次数据修改就触发RDB持久化
5.开启AOF持久化配置
appendonly yes
#AOF文件名
appendfilename "appendonly.aof"
#AOF文件存储路径 与RDB是同一个参数,共用一个文件路径
dir ./ #即bin目录下
#AOF策略,一般都是选择第一种[always:每个命令都记录],
#[everysec:每秒记录一次],[no:看机器的心情高兴了就记录,linux一般半个小时同步一次]
#appendfsync always
appendfsync everysec
# appendfsync no
#aof文件大小比起上次重写时的大小,增长100%(配置可以大于100%)时,触发重写。
#[假如上次重写后大小为10MB,当AOF文件达到20MB时也会再次触发重写,以此类推
auto-aof-rewrite-percentage 100
#aof文件大小超过64MB*2时,触发重写,
#为何要乘以2,因为auto-aof-rewrite-percentage 100 是翻倍即100%,
#达到翻倍时才重写
auto-aof-rewrite-min-size 64mb
6.打开混合持久化:
#6.aof-use-rdb-preamble yes # 检查混合持久化是否打开,redis5.0后默认开启
# 设置密码
requirepass redis123
# 访问mast节点 密码
masterauth redis123
注意:节点2和节点3 需要添加 slaveof 172.18.29.22 6379 配置在redis.conf,中间的ip是主节点的ip地址
3.编写redis的docker-compose.yaml文件
version: '3.8'
services:
redis:
image: redis:6.2.14-alpine
container_name: erdc-redis
restart: always
network_mode: host
command: redis-server /usr/local/etc/redis/redis.conf --requirepass Pw!123456
environment:
TZ: Asia/ShangHai
volumes:
- /data/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis/data:/data
deploy:
resources:
limits:
cpus: '0.5'
memory: 1024M
4.启动节点
启动节点
docker-compose up -d
检查主从是否ok
检查主从
docker exec -it erdc-redis /bin/sh
redis-cli
auth redis123
info Replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.181.99,port=6379,state=online,offset=1302,lag=0
slave1:ip=192.168.181.88,port=6379,state=online,offset=1302,lag=0
master_replid:17b366526904583fd593f0174f628c3140adfebc
master_replid2:0000000000000000000000000000000000000000
5.搭建哨兵
哨兵配置文件 ,网上的配置都是要把
redis-cli -h 192.168.181.145 -p 6379
auth Pw!123456
info Replication
配置加上去,但是,不要加不要加,加上就启动不了哨兵了,具体原因我也没搞懂,反正是卡着我大半天了,danm!
直接用下面文件就ok了
mkdir /data/sentinal/{conf,data}
cd /data/sentinel
vi sentinal.conf
----------------------
sentinal.conf
----------------------
port 26379
daemonize yes
sentinel monitor mymaster 172.18.29.101 6379 2
sentinel auth-pass mymaster Pw!123456
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
6.启动哨兵命令(懒得写docker-compose.yaml)
docker run -d --name redis-sentinel \
-v /data/sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf \
--network host \
redis:6.2.14-alpine redis-sentinel /usr/local/etc/redis/sentinel.conf
检查哨兵
#检查
docker exec -it redis-sentinel /bin/bash
redis-cli -h 127.0.0.1 -p 26379
auth Pw!123456
info sentinel
标签:14,redis,6.2,conf,RDB,sentinel,docker,data
From: https://blog.csdn.net/weixin_51214282/article/details/144536989