# 工具部署redis
工具类型: shell 脚本
文档更新: 2025-02-22 16:43:06
适用场景: 非云化产品的的私有化部署(自建环境)
# 免责申明和使用须知
1.工具定位声明
- 本工具为 辅助部署工具,旨在帮助快速搭建云原生环境所依赖的中间件(包含并不仅限于Kubernetes、Nacos、Kafka等),便于项目组快速部署微服务应用。
- 不承诺提供中间件的长期完整维护、支持或安全保障。
2.开源组件免责声明
- 本工具使用的 Kubernetes、etcd、calico、Nacos、Kafka等组件均为开源软件,受各自开源许可证保护。
- 本工具 不修改、不篡改 任何开源组件,仅作为安装和部署的辅助工具。
- 使用本工具即表示您已阅读并同意相关开源组件的 使用许可协议。
3.安全与责任声明
- 本工具 不承担 因使用过程中出现的安全问题、系统崩溃、数据丢失等后果的责任。
- 建议用户自行评估部署环境的安全性,并根据自身需求选择合适的版本和配置。
4.不提供长期维护
- 本工具仅为临时部署工具,不承诺对中间件进行持续更新、补丁修复、安全处置和兼容性支持。
- 用户应自行关注官方更新,并根据实际需要决定是否升级或更换工具。
5.商业使用提醒
- 若您将本工具用于 商业环境,请确保所有使用组件符合其 开源许可证,并遵守相关法律法规。
- 本工具不提供任何形式的商业支持或担保。
6.用户自主决策
- 本工具仅供参考和学习使用,最终部署方案由用户自行决定。
- 在使用前,请确保您具备足够的技术能力,并了解Kubernetes、Nacos、Kafka等等云原生组件的运行机制和配置方法。
# 相关下载
安装工具: https://pan.baidu.com/s/1BY1ivBu9R17NcLgTZQUGEQ?pwd=2024
# 工具部署步骤
# 环境准备要求
工具支持要求:
- Redis单机:一台服务器
- Redis集群:六台服务器组成三主三从集群,架构内核操作系统完全保持一致,工具不支持三台服务器集群部署(三台服务器参考【Redis集群部署参考手册(三主三从Cluster模式) (opens new window)】手工部署)
Redis工具部署原理是:[Redis主机] —-SSH远程部署—-> [Redis单机/Redis集群]
故,如果是单机,就将工具放在当前单机服务器上;如果是集群,就将工具放在集群第一个节点上,其余服务器确保SSH端口互通(SSH端口、帐号、密码全部保持一致),工具自动部署。
# 准备部署包
确定工具和部署包后,将其上传到运维机上任意目录,比如 /seeyon/scripts/redis :
准备Redis部署包:推荐部署Redis6 或 Redis 7,(截止2025年8月)小版本推荐Redis-6.2.19及以上,以降低安全问题。
准备工具:multi-install-redis-amd64.tgz 对应X86环境;multi-install-redis-arm64.tgz 对应ARM环境,直接上传到脚本目录再解压,如 tar -xf multi-install-redis-amd64.tgz。

# 运维机配置工具参数
vim multi-install-redis.sh
配置按需修改: 单机部署可以什么都不错调整(集群配置也无需删除,只要引导单机部署就不会读取集群配置),安全起见,密码改成更安全复杂的。

# 执行脚本工具
1、直接运行.sh不会执行安装,脚本工具会输出用法供参考:
bash multi-install-redis.sh
请传参指定部署模式
脚本用法: bash multi-install-redis.sh <single|cluster>
单机部署: bash multi-install-redis.sh single
集群部署: bash multi-install-redis.sh cluster
2、单机部署执行 bash multi-install-redis.sh single
Redis工具部署过程采用的是二进制编译方式,编译需要一定时间。 看到如下信息,编译完成,记住编译后的信息,供后续维护使用:

3、首次部署完成通过如下命令启动并查看状态:
systemctl start redis
systemctl status redis
# 日常维护
记住工具部署后的输出信息,默认信息如下:
查看状态:systemctl status redis
启动命令:systemctl start redis
重启命令:systemctl restart redis
停止命令:systemctl stop redis
开始设置配置: /apps/redis/etc/redis.conf
设置连接端口: 6379
设置pid文件: /apps/redis/var/redis-server.pid
设置log文件: /apps/redis/var/redis.log
设置日志级别: verbose
设置工作目录: /apps/redis/var
开启守护进程: daemonize yes
设置连接密码: 自定义的Redis密码
设置bind地址: Redis服务器IP地址
设置AOF持久化: appendonly no
关闭RDB持久化: save ""
# 预编译纯静态二进制版
有些项目,经常会遇到没法编译或所需硬件架构编译失败等待场景。所以,在网盘提供了各个版本的 redis 的纯静态二进制版,供需要的同事按需使用。
使用时,按实际情况调整 redis.conf 的相关配置,然后正常启停服务即可。
纯静态编译的二进制版本有 amd64/arm64/loong64 三个架构的。redis 在 8.x 系列,特别是 8.4.x 加强了安全支持,纯静态编译的一律未启用 tls 安全加密。
相关版本参考下图(这里仅展示 龙架构 的版本情况):

# 提醒
在使用基于 musl libc 构建的 Nginx、Tengine、Angie、Redis 等纯静态二进制程序时,由于 musl 在 DNS 解析及 IPv6 连接回退策略 上的实现特性,在 IPv6 半可用或链路质量不稳定 的环境中,可能出现连接延迟或超时问题。
为规避上述风险,建议通过 应用层配置 + 系统层策略 双层显式限制仅使用 IPv4(单层可生效,双层约束更稳定),包括绑定 IPv4 地址、禁用 IPv6 监听,以及限定仅进行 IPv4 域名解析。
# 1. 应用软件层面
# 1.1 Redis 配置示例
# redis.conf
# 仅监听 IPv4 地址,避免启用双栈监听
bind 0.0.0.0
# 如存在以下配置需删除或注释
# bind ::
# bind * -::*
说明: Redis 默认支持双栈监听,显式移除 IPv6 监听可避免 musl 在连接阶段进入 IPv6 分支;容器化或物理机启动时可注入环境变量强化:
export RES_OPTIONS="inet4"。
# 1.2 Nginx / Tengine / Angie 配置示例
# nginx.conf
http {
# HTTP层强制仅IPv4解析
resolver 223.5.5.5 8.8.8.8 ipv4=on;
server {
listen 0.0.0.0:80;
# listen [::]:80; # 禁用 IPv6 监听
}
server {
listen 0.0.0.0:443 ssl;
# listen [::]:443 ssl; # 禁用 IPv6 监听
# SSL相关配置...
}
}
说明:
resolver ipv4=on强制仅解析 A 记录(IPv4),避免 musl 尝试 AAAA(IPv6)解析;使用 upstream 域名时,此配置可有效规避解析层延迟。
# 2. 网络 / 操作系统层面
# 2.1 基于 Kubernetes 的配置示例
# 方式一:通过 sysctl(推荐,前提是集群允许开启 sysctl 配置)
spec:
securityContext:
sysctls:
- name: net.ipv6.conf.all.disable_ipv6
value: "1"
- name: net.ipv6.conf.default.disable_ipv6
value: "1"
containers:
- name: 应用名称
image: 应用镜像:版本
env:
- name: RES_OPTIONS
value: "inet4"
说明: 使用
sysctls比特权容器更安全,也符合 Kubernetes 最佳实践;需确保集群已配置sysctl_node_allow_list包含上述配置项。
# 方式二:特权容器方式(不推荐,仅作兜底)
spec:
containers:
- name: 应用名称
image: 应用镜像:版本
securityContext:
privileged: true
command: ["/bin/sh", "-c"]
args:
- sysctl -w net.ipv6.conf.all.disable_ipv6=1 && export RES_OPTIONS="inet4" && 应用启动命令
# 2.2 物理机 / 虚拟机配置示例
# 1. 写入配置文件永久生效
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
# 2. 重载配置立即生效
sysctl -p
# 3. 全局注入环境变量强化IPv4解析(可选)
echo "export RES_OPTIONS=\"inet4\"" >> /etc/profile
source /etc/profile
# 3. 验证配置是否生效
# 1. 验证系统 IPv6 是否禁用(输出 1 即为生效)
sysctl net.ipv6.conf.all.disable_ipv6
# 2. 验证应用是否仅监听 IPv4(无 tcp6/inet6 输出即为生效)
ss -tulnp | grep -E "nginx|redis-server"
# 3. 验证 musl 解析是否仅返回 IPv4(无 IPv6 地址输出即为生效)
getent ahostsv6 目标域名 || echo "IPv6解析已禁用"
快速跳转