参考文档:(39条消息) Docker部署Redis集群 一主两从_爱撸铁的程序猿的博客-CSDN博客
1、准备一个linux服务器(我这边是CentOS7.9环境)
2、确保有docker和docker-compose环境(没有需要部署,这里就不说了)
1、创建三台 redis实例,实现主从集群,登录进入服务器之后,依次执行以下步骤,(确保你当前的登录角色是root)
// 在根目录下可以ls查看以下当前目录下所有文件夹
cd /usr/local
mkdir docker
cd docker
mkdir redis
cd redis
mkdir data # 存放持久化数据和日志文件的数据卷目录
touch redis1.conf # 配置文件
touch redis2.conf # 配置文件
touch redis3.conf # 配置文件
touch docker-compose.yml # docker-compose 构建工具的配置文件
2、第一步中创建的三个redis配置文件,内容如下,三个 redis 配置文件除了端口分别为 6379 6380 6381 其它完全相同,下面只贴上一个配置文件
# 实例化多少个数据库
databases 1
# 监听的端口
port 6379
# 访问本机需要的密码 和 作为从机访问主机的密码
requirepass 920619
masterauth 920619
# 持久化文件的保存位置
dir /data
# 持久化文件名
dbfilename dump.rdb
# 指定存储至本地数据库时是否压缩数据
rdbcompression yes
# 持久化策略:一定时间内(S) 有多少条数据更新 就触发保存
# 如 第一条就是 900 秒内有 1 条数据更新 就触发保存
save 900 1
save 300 10
save 60 10000
# 日志文件的保存地址
logfile redis.log
3、准备编写docker-compose.yml
// 切换到docker-compose.yml的位置
cd /usr/local/docker/redis/data/
// ls检查一下当前目录下是否存在docker-compose.yml文件
ls
//进入docker-compose.yml文件 (个人推荐使用nano命令进入文件并修改,可以自己查下如何使用,方便很多)
vim docker-compose.yml
4、docker-compose.yml文件内容如下:
version: '3.1'
services:
master:
image: redis
container_name: redis-master
ports:
- 6379:6379
- 16379:16379
volumes:
- ./redis1.conf:/etc/redis.conf
- ./data-master:/data
command: redis-server /etc/redis.conf
slave1:
image: redis
container_name: redis-slave1
ports:
- 6380:6380
- 16380:16379
volumes:
- ./redis2.conf:/etc/redis.conf
- ./data-slave1:/data
command: redis-server /etc/redis.conf --slaveof master 6379
slave2:
image: redis
container_name: redis-slave2
ports:
- 6381:6381
- 16381:16379
volumes:
- ./redis3.conf:/etc/redis.conf
- ./data-slave2:/data
command: redis-server /etc/redis.conf --slaveof master 6379
以上docker-composr.yml中,最重要的一步是:
command: redis-server /etc/redis.conf --slaveof master 6379
这一步就是把两个从redis,挂到主redis下,我使用的时候也是看的一篇博主的文章,该博主这边master 是用的自己宿主机IP,我刚开始也是这么用的,但是主redis一直连不上两个从redis,所以我把这边换成了service的名称,大家可以两个都试下
5、准备工作完毕,可以启动测试了,命令如下:
// 切换到docker-compose.yml的位置
cd /usr/local/docker/redis/data/
// 启动我们的docker-composr.yml
docker-compose up -d
// 查看容器是否正常启动
docker ps
// 进入主redis容器内部
docker exec -it redis-master bash
// 执行redis-cli
redis-cli
// 输入密码,第一步三个redis配置文件中配置了
auth 920619
// 查看日志信息
info replication
// 这边窗口不要关,等下我们会通过命令向redis塞值
6,我们插入一个值,测试从机是否能从主机获取数据
set id 123
7,我们进入一台从机,这里选择 redis-slave1
docker exec -it redis-slave1 bash
redis-cli -p 6380 # 默认端口是 6379,如果不是需要用 -p 指出具体端口
auth 920619
get id # 如果能获取到 在主机插入的数据,说明主从赋值也配置成功
参考文献:https://www.cnblogs.com/lovling/p/12525655.html?tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_share