如何在ARM架构服务器上编译并运行Redis 7.0集群

大涛大大_6161

大涛大大_6161

2026-09-17

611人浏览

原创

arm架构编译redis 7.0集群完全可行,但必须源码编译并手动构建jemalloc,禁用libc;需显式启用use_jemalloc=yes、设置cluster-node-timeout=15000、开启appendonly=yes,并关闭cpu省电策略以防心跳超时。

如何在arm架构服务器上编译并运行redis 7.0集群

ARM架构上编译运行 Redis 7.0 集群完全可行,但必须用源码编译(系统包管理器通常不提供 7.0+ 的 ARM 构建包),且不能跳过 jemalloc 编译环节——直接加 MALLOC=libc 虽能过编译,但会导致集群节点间 handshake 失败、redis-cli --cluster create 卡住或报 Node x.x.x.x:7000 is not empty 等隐性问题。

为什么 ARM 上必须自己编译 Redis 7.0?

主流 Linux 发行版的 ARM 仓库(如 Ubuntu/Debian arm64、CentOS Stream aarch64)至今未收录 Redis 7.0+ 版本;EPEL、RPM Fusion 等第三方源也仅到 6.2.x。Redis 官方 tar 包自带 deps/jemalloc,但 ARM 平台默认不触发其自动构建,需手动干预。

  • ARM64(aarch64)系统常见于飞腾、鲲鹏、树莓派 CM4、Mac M 系列(非 Rosetta)等,均需确保 gcc ≥ 5.4(CentOS 7 默认 gcc 4.8.5 不支持)
  • 若用麒麟 V10、欧拉 OS 等国产系统,注意内核参数 vm.overcommit_memory 必须设为 1,否则 fork 子进程失败,save 或集群 Gossip 会静默中断
  • 不要依赖 make install 默认路径(/usr/local/bin)——集群多实例部署时,建议统一前缀如 PREFIX=/opt/redis-7.0,避免与系统已有 Redis 冲突

编译阶段必须处理的三个关键点

在解压后的 redis-7.0.2(以该稳定版为例)目录下操作:

Redis 8.2.3
Redis 8.2.3

Redis 8.2.3 是一款安全优先的高性能键值存储系统。该版本紧急修复了可能引发远程代码执行(RCE)的高危漏洞(CVE-2025-62507),并解决了 HyperLogLog 及 Cuckoo Filter 等数据结构在特定场景下的崩溃问题。建议所有用户立即升级,以保障生产环境的系统稳定与数据安全。

下载
  • 先进 deps 目录手动编译依赖:cd deps && make -j$(nproc) hiredis lua jemalloc linenoise —— 这步绕过顶层 make 对 jemalloc 的跳过逻辑,确保 ARM 下内存分配器可用
  • 返回根目录执行 make -j$(nproc) BUILD_TLS=yes(如需 TLS 集群通信);若跳过 TLS,至少加 USE_JEMALLOC=yes 显式启用
  • 安装时指定路径并保留配置模板:make install PREFIX=/opt/redis-7.0 && cp redis.conf /opt/redis-7.0/ —— 注意:不要用 make install 自带的 redis.conf,它不含集群相关注释项

集群配置与启动最容易出错的三项

创建 6 个实例(3 主 3 从)时,每个 redis.conf 必须独立修改,不能复制后只改端口:

  • bind 行必须显式写成 bind 0.0.0.0(不是注释掉),否则 ARM 上某些网卡驱动(如银河麒麟的 e1000e)会绑定失败,redis-cli -p 7000 ping 返回 Connection refused
  • cluster-enabled yescluster-config-file nodes-7000.conf 必须在同一节;若 nodes-*.conf 路径含相对路径(如 ./nodes-7000.conf),ARM 上 systemd 服务启动时因工作目录不确定,会导致节点 ID 无法持久化
  • 所有实例的 appendonly yes 必须开启 —— Redis 7.0 集群模式下,若某节点 AOF 关闭,当它作为从节点重同步时可能因 RDB 格式不兼容(尤其跨小版本)而卡在 SYNC 状态,表现为 redis-cli --cluster checkCan't connect to node

启动集群时 redis-cli --cluster create 失败怎么办

常见现象是命令卡住数分钟无响应,或报 Waiting for the cluster to join 后超时。这不是网络问题,而是 ARM 下的时钟/随机数初始化延迟所致:

  • 先确认所有 6 个 redis-server 进程已就绪:ps aux | grep redis-server | grep -v grep | wc -l 应为 6
  • 检查各节点日志是否有 Cluster state changed: ok;若只有 Cluster state changed: fail,说明 cluster-node-timeout 设得太小(ARM CPU 频率波动大,建议设为 15000 而非默认 5000)
  • 执行创建命令时,显式加 --cluster-replicas 1(不可省略),且所有 IP 必须用物理网卡地址(不用 127.0.0.1),例如:redis-cli --cluster create 192.168.10.101:7000 192.168.10.101:7001 ... --cluster-replicas 1
  • 若仍失败,在任意节点执行 redis-cli -p 7000 cluster nodes,看是否返回空;若是,手动触发一次握手:redis-cli -p 7000 cluster meet 192.168.10.101 7001,逐个补全后再跑 --cluster create

真正麻烦的不是编译或启动,而是集群上线后某个节点因 ARM 省电策略(如 CPU frequency scaling)导致心跳超时被误判下线;务必在 BIOS/UEFI 中关闭 Energy Performance Bias,并在系统级加 cpupower frequency-set -g performance,否则 cluster-node-timeout 再调高也治标不治本。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

redis node redis cluster

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

397

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

820

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2332

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

796

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

689

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

354

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2076

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

3832

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

627

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习