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

Redis集群离线安装环境准备和快速搭建那些事儿,手把手教你搞定

咱们要明白离线安装是啥意思,说白了,就是你的服务器不能连外网,没法像平时那样敲个命令就从网上下载软件,所有需要的东西,都得你提前在自己能上网的电脑上下好,然后像搬砖一样,一个个搬到服务器里去。(来源:常见的离线安装场景描述)

第一步,准备材料,就像做饭前得先买菜。

你得准备以下几样“菜”:

  1. Redis安装包:去Redis的官网(redis.io)找到下载页面,挑一个稳定版本,比如用得很广的6.x或7.x版本,文件名字通常是 redis-版本号.tar.gz,这就是Redis的源代码,我们需要在服务器上自己编译它,把这个包下载到你自己的电脑上。(来源:Redis官方安装指南)
  2. gcc编译器:Redis是用C语言写的,要想把源代码变成能运行的程序,就得在服务器上编译,编译就需要一个叫gcc的工具,这个是服务器系统自带的,但为了防止有些精简版的系统没装,你得确认一下,如果服务器能连内网的yum源(一种软件仓库)来安装gcc,那最省事,如果连内网源都没有,那可就麻烦了,你得把gcc和它的一大堆依赖包也离线下载下来,那个工程量就非常大了,今天我们先假设服务器至少能装gcc。(来源:软件编译的基本要求)
  3. Ruby环境:可能你会奇怪,装Redis为啥要Ruby?这是因为我们用的是Redis集群模式,Redis官方提供了一个叫 redis-trib.rb 的工具(新版本可能是 redis-cli --cluster)来帮我们快速搭建和管理集群,这个工具是用Ruby写的,服务器上还得有Ruby解释器以及一个叫 redis 的Ruby包(也叫gem),同样,这些也需要想办法在离线环境下装好,可以先在网上找好对应你服务器操作系统版本的Ruby安装包和redis gem的离线包。(来源:Redis集群管理工具依赖说明)

第二步,把“菜”搬到服务器厨房。

你现在手上有了一堆安装包(redis源码包、ruby离线包等),怎么把它们弄到不能上网的服务器上呢?常见的有几种土办法:

  • 用U盘拷:如果服务器在你身边,这是最直接的。
  • 用内网传输工具:比如用 scp 命令从你的电脑传过去,或者用 ftp 工具,前提是你的电脑和服务器在同一个网络里。
  • 搭个临时文件服务器:在局域网里找台能通的机器,用Python的 http.server 模块快速启个简单的下载服务,让服务器从那里下。

选一种你觉得顺手的方式,把所有准备好的安装包都上传到服务器的一个目录里,/opt/software

第三步,开始“洗菜切菜”,安装软件。

  1. 安装gcc(如果还没有的话): 如果能用内网yum源,就很简单, root用户执行 yum install -y gcc 就行,如果真需要完全离线安装gcc,那是个大工程,得另找教程了。

    Redis集群离线安装环境准备和快速搭建那些事儿,手把手教你搞定

  2. 编译安装Redis

    • 切换到安装包所在目录:cd /opt/software
    • 解压Redis源码包:tar -zxvf redis-版本号.tar.gz
    • 进入解压后的目录:cd redis-版本号
    • 编译:make 这个命令会跑一会儿,把C代码编译成可执行文件,如果这里报错,多半是环境问题,比如gcc没装好。
    • 安装:make PREFIX=/usr/local/redis install 这会把编译好的文件安装到 /usr/local/redis 目录下。PREFIX 参数是指定安装目录,不加的话会默认装到系统目录。
  3. 安装Ruby和redis gem(以离线RPM包为例,方法可能因系统而异):

    • 安装Ruby:找到你下载的Ruby相关的一系列RPM包,用 rpm -ivh *.rpm 命令批量安装。
    • 离线安装redis gem:下载好的redis gem包通常是以 .gem 结尾的文件,使用命令 gem install --local /path/to/redis-x.x.x.gem 进行本地安装。

第四步,“开火炒菜”,配置和启动集群。

假设我们要在三台机器上搭一个最小集群(每台机器跑两个实例,一共三主三从)。

Redis集群离线安装环境准备和快速搭建那些事儿,手把手教你搞定

  1. 准备配置文件: 在每台机器上,为要运行的Redis实例创建单独的配置文件和数据目录,在 /usr/local/redis/ 下创建 cluster/7000cluster/7001 两个目录。 从之前解压的Redis源码目录里,拷贝一份 redis.conf 配置文件到每个目录(如 /usr/local/redis/cluster/7000/redis.conf)。

  2. 修改关键配置(每个实例的配置文件都要改):

    • port 7000:每个实例的端口必须不一样。
    • bind 你本机的IP地址:不能写127.0.0.1,要写其他机器能访问到的IP。
    • daemonize yes:让Redis在后台运行。
    • pidfile /var/run/redis_7000.pid
    • logfile "/usr/local/redis/cluster/7000/redis.log"
    • dir /usr/local/redis/cluster/7000/data:数据存放目录,先创建好。
    • cluster-enabled yes最关键的一步,开启集群模式。
    • cluster-config-file nodes-7000.conf:集群自己的配置文件,不用管,Redis会自动生成。
    • cluster-node-timeout 15000
    • appendonly yes
  3. 启动所有实例: 在每个服务器上,分别进入每个实例的目录,启动Redis服务。 cd /usr/local/redis/cluster/7000 ../bin/redis-server ./redis.conf (因为我们的redis-server命令在 /usr/local/redis/bin 下) 用 ps -ef | grep redis 检查一下6个实例是否都启动成功了。

  4. 组建集群: 现在6个Redis实例都跑起来了,但它们还是孤立的点,需要用命令把它们串成一个集群。 新版本推荐直接用 redis-cli 命令(来源:Redis官方文档): redis-cli --cluster create 服务器1IP:7000 服务器1IP:7001 服务器2IP:7000 服务器2IP:7001 服务器3IP:7000 服务器3IP:7001 --cluster-replicas 1 这个命令里的 --cluster-replicas 1 表示每个主节点带一个从节点,命令执行后,它会给你列出一个规划好的主从关系,你输入 yes 确认,集群就开始创建了。

  5. 验证集群: 连接上任意一个节点:redis-cli -c -h 某IP -p 某端口-c 表示以集群模式连接) 执行 cluster info 查看集群状态,cluster nodes 查看节点关系,如果能正常存取值,就大功告成了。

就是离线搭建Redis集群的主要步骤,整个过程就像个手工活,比较繁琐,但一步一步来,遇到问题耐心查日志(就是前面配置的logfile),总能搞定。