Docker部署Redis集群 一主两从

搭建条件

1、准备一个linux服务器(我这边是ubuntu环境)
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
// 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
// 启动我们的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、上面一步只是简单测试了一下redis一主两从的关系,我们现在通过redis连接工具,查看是否真的能做到三个redis数据同步,大家可以看到我现在三个redis已经连接好了,db里面都是没有数据的

在这里插入图片描述


7、现在我们通过刚才命令向主redis插入数据,测试两个从redis是否也有数据
在这里插入图片描述


参考文献:https://www.cnblogs.com/lovling/p/12525655.html?tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_ios&utm_campaign=client_share

如有问题,欢迎交流 QQ 770850769

猜你喜欢

转载自blog.csdn.net/weixin_45452416/article/details/110550540