首页 > 数据库 >Docker容器配置redis集群

Docker容器配置redis集群

时间:2024-04-15 23:25:30浏览次数:33  
标签:node 6379 -- redis cluster 集群 Docker docker

前言

  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

标签:node,6379,--,redis,cluster,集群,Docker,docker
From: https://www.cnblogs.com/zrl66/p/18137144

相关文章

  • redis中的缓存雪崩、穿透
    Redis在作为缓存系统时,可能会面临几种常见的问题,其中包括缓存雪崩和缓存穿透。这些问题都可能导致系统性能下降甚至服务不可用。了解它们的原因及解决方案对于设计高可靠性系统至关重要。缓存雪崩定义:缓存雪崩是指在同一时间大量的缓存项过期,导致大量请求直接打到数据库上,从而......
  • StarRocks 集群安装
    当前按照官网上的提供的安装包方式安装,版本是3.2.2,部署模式为存算一体,安装的操作系统是Ubuntu22.04,JDK版本为OpenJDK11,这里选择3个节点进行安装,节点的hosts定义如下:10.0.1.25ec2510.0.1.26ec2610.0.1.27ec27由于StarRocks安装包比较大,所以选择在每个节点上都......
  • 5.CentOS-7-Minimal 安装KubernetesV1.23.17&DockerV20.10.23
    1.环境准备主节点IP:192.168.254.130node1IP:192.168.254.131node2IP:192.168.254.132OSversion:CentOS7miniCPUArchitecture:x86_64/amd64K8sversion:v1.23.17Dockerversion:20.10.232.安装前准备#安装依赖yuminstall-ycurlwgetsystemdbash-completi......
  • docker安装mysql8
    一、开始安装#新建挂载目录mkdir-p/opt/docker/mysql/datamkdir-p/opt/docker/mysql/confvim/opt/docker/mysql/conf/my.cnf[root@centos01mysql]#cdconf/[root@centos01conf]#lsmy.cnf[root@centos01conf]#catmy.cnf[client]default-character-set=utf8mb4[m......
  • redis主从复制
    目录一、什么是redis主从复制1、主从复制架构2、redis为什么需要主从复制二、搭建主从复制1、涉及主机2、编译安装redis2.1、获取软件安装包,安装编译环境2.2、编译安装2.3、配置变量2.4、验证目录结构2.5、准备目录及文件3、前台启动redis3.1、消除三个警告提示4、使用systemctl管......
  • Docker安装部署Jenkins并发布NetCore应用
    Docker安装Jenkins#拉取镜像dockerpulljenkins/jenkins#查看镜像dockerimages#运行jenkins#8080端口为jenkinsWeb界面的默认端口13152是映射到外部:前面的是映射外部#50000端口为jenkins的默认代理节点(Agent)通信端口13153是映射到外部#--restart=on-fa......
  • 消息中间件RabbitMQ_RabbitMQ集群搭建8
    一、集群搭建概述摘要:实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性......
  • 在 WSL 中使用 Docker
    Windows主机上的DockerDesktop可以和WSL虚拟机集成。也就是说,如果你的Windows主机已经安装了DockerDesktop,那么就不用在WSL中再次安装Docker(CE)了。我们只需在DockerDesktop设置中打开相关的虚拟机集成即可。打开DockerDesktop设置,进入Resources>WSLintegr......
  • Ubuntu 上安装 Docker
    步骤1:删除任何现有的Docker包但在跳到安装部分之前,有必要删除所有以前安装的Docker。要卸载以前的Docker,请使用以下命令。sudoaptremovedocker.iodocker-docdocker-composedocker-compose-v2podman-dockercontainerdrunc步骤2:安装依赖项第一步是安装一些必......
  • docker安装rabbitmq
    //查找镜像dockersearchrabbitmq//默认拉取官方最新版本dockerpullrabbitmq//创建容器,也可直接执行该命令,没有镜像会去先拉取镜像dockerrun-d--namemyrabbitmq-p5672:5672-p15672:15672rabbitmq//进入镜像dockerexec-it容器id/bin/bash//安装UI插件rabb......