在docker中进行redis主从配置相关问题

1.启动docker时, 报如下问题

Reading the configuration file, at line 103
>>> 'logfile /var/log/redis/redis.log'
Can't open the log file: No such file or directory

我配置的日志文件没有找到, 尝试在宿主机创建好文件并授权读写权限未果. 其实这里报的没找到文件或路径是docker容器中没有. redis中的默认日志在 redis/data/之下. 可以先修改配置文件,不指定日志路径, 然后在启动容器成功后, 进入容器内部查看或创建自定义的日志文件.

此处我使用redis默认的路径,修改redis.conf的logfile为 /var/redis/data/redis.log. 注意在docker-compose或者启动时对应好数据卷 

/var/redis/data:/var/redis/data

随后启动即可完成.

2. 配置redis主从

一开始使用如下配置

slaveof 0.0.0.0 6379

发现主从无法连接.原因是docker中每个容器都有独立的ip.使用docker inspect 容器ID可以查看.然后进行配置即可.

但是,容器ip是每次启动的时候随机给的.这不是一个最好的方案.

3.User-defined networks

创建一个自定义网络

docker network create redis-network

可以通过docker network ls 查看docker中的network

1.在docker-compose中指定加入的网络, 以及把redis-network声明成外部网络. 

2.值得注意的是version >1的版本才能使用networks.

3.另外要指定容器名称 container_name

version: '2'
networks:
  redis-network:
    external: true #把redis-network声明成外部网络
services:
   redis1:
     container_name: redis1 #容器名称
     image: redis
     ports:
       - 6379:6379
     command: "/etc/redis/redis.conf"
     volumes:
       - /etc/redis:/etc/redis
       - /var/redis/data:/var/redis/data
     restart: always
     networks: #指定加入的网络
       - redis-network
    redis2:
     container_name: redis2
     image: redis
     ports:
       - 6380:6380
     command: "/etc/redis/redis6380.conf"
     volumes:
       - /etc/redis:/etc/redis
       - /var/redis/data:/var/redis/data
     restart: always
     networks:
        - redis-network

这样配置后, 我们在redis.conf中可以通过容器名称连接主redis

slaveof redis1 6379

启动之后,使用redis客户端查看info replication.看到配置的两个从redis已完成连接到主redis

完成主从配置.本文到此结束

发布了60 篇原创文章 · 获赞 5 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_40085888/article/details/104718281