当前位置:首页 > 问答 > 正文

Redis离线环境下快速搭建集群的思路和简单实现方法分享

Redis离线环境下快速搭建集群的思路和简单实现方法分享

在无法连接互联网的生产环境或隔离网络中,搭建Redis集群需要一些预先的准备工作和不同的操作思路,核心思路可以概括为“提前下载,内部传输,手动配置”,整个过程的目标是模拟在线安装的过程,但所有依赖包和安装文件都来自一个事先准备好的本地源。

核心思路解析

在线环境下,我们可以直接用系统的包管理工具(如yum或apt)下载Redis软件包并自动处理依赖关系,但在离线环境下,这条路行不通,我们的思路需要转变:

  1. 准备工作站(可联网环境):需要找一台能够访问互联网的计算机(称为“准备工作站”),这台机器的操作系统版本最好与目标离线服务器保持一致,以减少兼容性问题。
  2. 下载所有依赖:在这台准备工作站上,使用包管理工具模拟下载Redis及其所有依赖的软件包,但不安装,只是将它们缓存到本地目录,Redis集群通常需要Ruby环境来运行集群管理工具redis-trib.rb(老版本)或需要Redis的redis-cli --cluster命令(新版本),所以Ruby、Gem以及相关的依赖包也必须一并下载。
  3. 搭建本地软件源:将准备工作站上缓存的所有软件包整理好,然后通过U盘、内部文件服务器或任何可行的方式,完整地拷贝到离线环境中的某一台服务器上,在这台服务器上,搭建一个简单的本地YUM或APT源,这样集群中的其他服务器就可以像访问互联网一样从这个内部源获取软件了。
  4. 逐台安装与配置:确保所有需要安装Redis的服务器都能访问这个本地源,然后就可以像在线环境一样,使用包管理命令进行安装,安装完成后,剩下的集群配置步骤(如创建集群、分配槽位)就和在线环境没有区别了。

简单实现方法(以CentOS/RHEL系统为例)

下面是一个基于CentOS 7系统,使用redis-5.0.x版本(该版本开始内置了redis-cli --cluster命令,无需Ruby环境)的简化操作流程。

Redis离线环境下快速搭建集群的思路和简单实现方法分享

第一步:在准备工作站上操作(有网络)

  1. 安装必要工具并下载Redis包

    # 安装yum-utils工具包,它提供了yumdownloader命令
    sudo yum install -y yum-utils
    # 创建一个目录来存放所有下载的rpm包
    mkdir /opt/offline-redis
    # 下载Redis软件包及其所有依赖项到指定目录
    # 注意:这里假设epel-release源已安装,因为Redis通常在EPEL源中
    sudo yum install -y epel-release
    yumdownloader --resolve --destdir=/opt/offline-redis redis

    执行完上述命令后,/opt/offline-redis目录下会包含redis-5.0.3-1.el7.x86_64.rpm(版本号可能不同)以及它可能依赖的其他rpm文件,例如jemalloc等。

  2. 打包并转移:将整个/opt/offline-redis目录打包成压缩文件,然后通过物理方式复制到离线环境中的主控服务器上。

    tar -czf offline-redis.tar.gz -C /opt offline-redis

第二步:在离线环境的主控服务器上操作

Redis离线环境下快速搭建集群的思路和简单实现方法分享

  1. 解压并创建本地YUM源

    # 将压缩包拷贝到目标目录,opt
    cp offline-redis.tar.gz /opt/
    cd /opt
    tar -xzf offline-redis.tar.gz
    # 安装创建本地源所需的工具(如果这台机器本身也是离线的,这个createrepo包也需要提前用同样方式下载好并手动安装)
    # 假设我们已经提前下载好了createrepo的rpm包及其依赖,并手动安装成功。
    # rpm -ivh *.rpm (在createrepo包所在目录下执行)
    # 创建仓库元数据
    createrepo /opt/offline-redis
  2. 配置本地YUM源: 创建一个新的repo文件。

    vi /etc/yum.repos.d/local-redis.repo
    ```如下:
    ```ini
    [local-redis]
    name=Local Redis Repository
    baseurl=file:///opt/offline-redis
    enabled=1
    gpgcheck=0

    保存退出后,清除YUM缓存并重新建立。

    yum clean all
    yum makecache

第三步:在集群所有节点上操作

  1. 分发本地源配置:将主控服务器上刚刚创建的/etc/yum.repos.d/local-redis.repo文件和/opt/offline-redis目录(如果baseurl用的是HTTP,则需要配置HTTP服务器,这里用文件路径最简单)同步到集群中的所有其他节点服务器的相同位置,如果文件目录很大,可以用scp或内部文件共享服务。

    Redis离线环境下快速搭建集群的思路和简单实现方法分享

  2. 在所有节点上安装Redis: 在每个节点上执行:

    yum clean all
    yum install -y redis
  3. 配置Redis实例: 修改每个节点的Redis配置文件(通常是/etc/redis.conf),以下配置是关键:

    bind 0.0.0.0  # 或绑定本机内网IP,允许其他节点访问
    protected-mode no  # 关闭保护模式,允许远程连接(生产环境应结合密码和防火墙)
    port 6379  # 端口默认,也可按需修改
    cluster-enabled yes  # 开启集群模式
    cluster-config-file nodes-6379.conf  # 集群节点配置文件
    cluster-node-timeout 15000  # 节点超时时间
    daemonize yes  # 后台运行

    为每个节点配置一个唯一的端口(如果单机多实例)或使用默认端口,然后启动Redis服务:

    systemctl start redis
    systemctl enable redis

第四步:创建集群

在其中任意一个节点上,使用Redis自带的集群命令创建集群,假设我们有6个节点,规划为3主3从,IP分别为192.168.1.10到192.168.1.15。

redis-cli --cluster create \
192.168.1.10:6379 \
192.168.1.11:6379 \
192.168.1.12:6379 \
192.168.1.13:6379 \
192.168.1.14:6379 \
192.168.1.15:6379 \
--cluster-replicas 1

执行后,命令会给出主从分配方案,输入yes确认即可完成集群的创建。

这个方法的优势在于,它利用了操作系统原生的包管理机制,确保了依赖关系的完整性,比手动编译安装更易于管理和维护,关键在于前期在联网机器上做好充分的准备,把整个“软件仓库”搬进内网,对于更复杂的依赖或不同版本的Redis,思路完全一致,只需调整下载的软件包列表即可,整个过程虽然步骤较多,但逻辑清晰,是一种可靠且可重复的离线部署方案。