Docker容器配置redis集群

前言

  Redis 集群是一种分布式数据库解决方案,旨在提供高性能、高可用性、可扩展性的数据存储服务。目前比较普遍流行的搭配则是三主三从配置,共6台redis服务进行集群配置。

  Redis的三主三从配置是一种集群模式,其中包含三个主节点和三个从节点。每个从节点对应一个主节点,当主节点出现故障时,从节点可以自动升级为主节点,以保证服务的连续性。这种配置不仅提高了系统的可用性和可靠性,还实现了读写分离,从节点可以为客户端提供只读操作的服务,从而分担主节点的读操作压力。

 

一、安装Redis镜像

  首先,确保你已经安装了Docker容器,然后拉取官方的Redis镜像:

~]# docker pull redis #默认拉取最新镜像
~]# docker images #查看镜像

  镜像列表中看到具体镜像信息。

 

二、使用docker-compose.yml管理集群

  先创建一个docker network方便容器之间访问。

~]# docker network create redis-net

  接着是docker-compose.yml文件的配置,更好的处理多台redis服务。

version: '3'
services:
  redis-node-1:
    image: redis
    restart: always
    command: redis-server --cluster-enabled yes --cluster-config-file nodes-1.conf --cluster-node-timeout 5000 --appendonly yes
    networks:
      - redis-net
    ports:
      - "6379:6379"
  redis-node-2:
    image: redis
    restart: always
    command: redis-server --cluster-enabled yes --cluster-config-file nodes-2.conf --cluster-node-timeout 5000 --appendonly yes
    networks:
      - redis-net
    ports:
      - "6380:6379"
  redis-node-3:
    image: redis
    restart: always
    command: redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 5000 --appendonly yes
    networks:
      - redis-net
    ports:
      - "6381:6379"
  redis-node-4:
    image: redis
   restart: always command: redis
-server --cluster-enabled yes --cluster-config-file nodes-4.conf --cluster-node-timeout 5000 --appendonly yes networks: - redis-net ports: - "6382:6379" redis-node-5: image: redis
   restart: always command: redis
-server --cluster-enabled yes --cluster-config-file nodes-5.conf --cluster-node-timeout 5000 --appendonly yes networks: - redis-net ports: - "6383:6379" redis-node-6: image: redis
restart: always command: redis
-server --cluster-enabled yes --cluster-config-file nodes-6.conf --cluster-node-timeout 5000 --appendonly yes networks: - redis-net ports: - "6384:6379" networks: redis-net: external: true

 

  然后,使用以下命令启动Redis集群:

~]# docker compose up –d #启动当前目录下的docker-compose.yml文件,并在后台运行(-d是后台执行的命令)
~]# docker compose down #停止并删除镜像(谨慎使用)
~]# docker compose stop redis-node-1 # 停止容器
~]# docker compose start
redis-node-1 # 启动容器

  下面是打印日志。

 

三、建立redis集群

  上面6台redis服务已经搭建完成,可以通过 docker ps 查看运行中的redis容器。接着就是建立集群。

  有了多个Redis节点,你需要使用redis-cli来创建集群并分配slots。这通常在其中一个Redis节点上执行,但你需要能够访问所有节点的IP地址和端口。

 

~]# docker exec -it redis-redis-node-1-1 redis-cli --cluster create \
  redis-redis-node-1-1:6379 \
  redis-redis-node-2-1:6379 \
  redis-redis-node-3-1:6379 \
  redis-redis-node-4-1:6379 \
  redis-redis-node-5-1:6379 \
  redis-redis-node-6-1:6379 \
  --cluster-replicas 1

 

  执行创建集群命令后,需要输入yes接受生成的集群配置,才能创建成功。

   测试集群是否能正常使用。进入到集群某个节点中。

~]# docker compose exec -it redis-node-1 redis-cli -c -h redis-node-1 -p 6379

  下面是测试结果,发现存入数据时,会存到不同的节点中。同时会进入对应的节点中,获取数据时也是如此。

   

四、查看redis集群信息

  1、使用redis-cli--cluster check命令来验证集群的状态:

~]# docker compose exec -it redis-node-1 redis-cli --cluster check redis-node-1:6379

    2、进入任意节点容器中,找到 /data/nodes-1.conf 的文件,查看信息。

~]# docker compose exec -it redis-node-1 bash #进入节点容器

  查看conf文件,会看到三行master,三行slave的信息,分别代表三主三从的配置。0-5460代表哈希插槽。

   3、进入任意redis节点,输入CLUSTER NODES查看节点信息,CLUSTER INFO 查看集群状态, CLUSTER SLOTS查看槽点分配。

~]# docker compose exec -it redis-node-1 redis-cli -c -h redis-node-1 -p 6379

 

  Docker容器配置Redis集群就介绍到这。这里的/data/nodes-1.conf 是集群的配置文件,并不是redis.conf配置文件。若需要单独配置,需要自己创建放到指定位置(一般都放到/usr/local/etc/redis/ 目录下)。因为在docker-compose.yml中配置了restart:always属性,对应属性的容器会开机启动。若需要自己配置,也可以使用systemd配置,或者其他工具。

  

参考:https://blog.51cto.com/u_16213672/6963728

posted @ 2024-04-15 23:08  Auler  阅读(748)  评论(0编辑  收藏  举报