openEuler 上安装与部署 Redis 运维教程

openEuler 上安装与部署 Redis 运维技术教程

Redis 是高性能的键值对数据库,广泛用于缓存、消息队列、会话存储等场景。本教程基于 openEuler 22.03 LTS/24.03 LTS 版本,涵盖 源码编译安装 (推荐生产环境)和 YUM 快速安装(测试环境)两种方式,同时包含基础配置、服务管理、安全加固、性能调优及故障排查,适配 openEuler 系统特性。

一、环境准备

1.1 系统环境检查

bash 复制代码
# 检查 openEuler 版本
cat /etc/os-release
# 推荐版本:openEuler 22.03 LTS SP3 / 24.03 LTS
# 检查依赖库(编译需要)
yum install -y gcc gcc-c++ make cmake libatomic-devel tcl
# 关闭防火墙(测试环境,生产环境按需放行6379端口)
systemctl stop firewalld && systemctl disable firewalld
# 关闭 SELinux(openEuler 默认开启,生产环境可配置规则)
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

1.2 创建 Redis 运行用户(安全规范)

Redis 不建议以 root 运行,创建专用用户:

bash 复制代码
useradd -r -s /sbin/nologin redis
mkdir -p /data/redis/{data,log}  # 数据/日志目录
chown -R redis:redis /data/redis

二、安装方式一:源码编译安装(生产环境推荐)

2.1 下载并解压 Redis 源码

推荐安装稳定版(如 7.2.4,适配 openEuler 内核):

bash 复制代码
# 下载源码(或从官网https://redis.io/download/获取)
wget https://download.redis.io/releases/redis-7.2.4.tar.gz -P /usr/local/src/
# 解压
tar -zxf /usr/local/src/redis-7.2.4.tar.gz -C /usr/local/src/
cd /usr/local/src/redis-7.2.4

2.2 编译与安装

openEuler 基于鲲鹏/ x86 架构,编译时需适配:

bash 复制代码
# 编译(指定编译器,优化性能)
make MALLOC=libc -j $(nproc)  # -j 后跟CPU核心数,加速编译
# 安装到指定目录
make PREFIX=/usr/local/redis install
# 创建软链接(方便调用)
ln -s /usr/local/redis/bin/* /usr/local/bin/
# 验证安装
redis-server --version
# 输出:Redis server v=7.2.4 sha=00000000:0 malloc=libc bits=64 build=5f9b8a9c6a12787

2.3 初始化配置文件

bash 复制代码
# 复制默认配置文件并修改
cp /usr/local/src/redis-7.2.4/redis.conf /etc/redis/redis.conf
chown redis:redis /etc/redis/redis.conf

三、安装方式二:YUM 快速安装(测试环境)

openEuler 官方源已内置 Redis,适合快速部署:

bash 复制代码
# 安装 Redis
yum install -y redis
# 验证安装
redis-cli --version
# 注意:YUM 安装的 Redis 配置文件路径为 /etc/redis.conf,默认以 redis 用户运行

四、核心配置(通用,适配 openEuler)

编辑配置文件 /etc/redis/redis.conf(源码安装)或 /etc/redis.conf(YUM 安装),关键配置如下:

ini 复制代码
# 1. 基础配置
bind 0.0.0.0          # 监听所有IP(生产环境指定内网IP)
protected-mode yes    # 保护模式(仅允许绑定IP访问)
port 6379             # 端口
daemonize yes         # 后台运行
pidfile /var/run/redis_6379.pid
timeout 0             # 客户端超时时间

# 2. 日志配置
logfile "/data/redis/log/redis-server.log"
loglevel notice       # 日志级别(生产环境用warning)

# 3. 数据配置
dir /data/redis/data  # 数据目录
dbfilename dump.rdb   # RDB持久化文件
save 900 1            # 900秒内1个修改则触发RDB
save 300 10
save 60 10000
rdbcompression yes    # RDB压缩

# 4. AOF配置(生产环境建议开启)
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec  # 每秒刷盘(平衡性能与数据安全)

# 5. 安全配置
requirepass "YourStrongPassword@2025"  # 访问密码(复杂度≥8位)
maxclients 10000                       # 最大连接数
maxmemory 2GB                          # 最大内存(根据服务器配置,如8G内存设为6GB)
maxmemory-policy volatile-lru          # 内存淘汰策略

# 6. 用户与权限(必须指定运行用户)
user redis on >YourStrongPassword@2025 ~* +@all  # 自定义用户(7.0+支持)

五、系统服务管理(适配 openEuler systemd)

5.1 创建 systemd 服务文件

bash 复制代码
cat > /usr/lib/systemd/system/redis.service << EOF
[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
Type=forking
User=redis
Group=redis
ExecStart=/usr/local/redis/bin/redis-server /etc/redis/redis.conf  # 源码安装路径
# YUM安装替换为:ExecStart=/usr/bin/redis-server /etc/redis.conf
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=/usr/local/redis/bin/redis-cli -a YourStrongPassword@2025 shutdown  # 源码安装
# YUM安装替换为:ExecStop=/usr/bin/redis-cli -a YourStrongPassword@2025 shutdown
PrivateTmp=true
LimitNOFILE=65535  # 提升文件描述符限制(openEuler 默认较低)

[Install]
WantedBy=multi-user.target
EOF

5.2 启动并设置开机自启

bash 复制代码
# 重新加载服务配置
systemctl daemon-reload
# 启动 Redis
systemctl start redis
# 开机自启
systemctl enable redis
# 检查状态
systemctl status redis
# 正常输出:active (running)

六、功能验证

6.1 本地连接测试

bash 复制代码
# 连接 Redis
redis-cli -a YourStrongPassword@2025
# 执行命令
127.0.0.1:6379> set test "openEuler Redis"
OK
127.0.0.1:6379> get test
"openEuler Redis"
127.0.0.1:6379> exit

6.2 远程连接测试(openEuler 防火墙放行)

若需远程访问,生产环境放行 6379 端口:

bash 复制代码
# 临时放行
firewall-cmd --add-port=6379/tcp --permanent
firewall-cmd --reload
# 远程连接(替换为服务器IP)
redis-cli -h 192.168.1.100 -p 6379 -a YourStrongPassword@2025

七、安全加固(生产环境必做)

7.1 限制 Redis 端口访问

仅允许内网IP访问 6379 端口,修改防火墙规则:

bash 复制代码
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="6379" accept' --permanent
firewall-cmd --remove-port=6379/tcp --permanent
firewall-cmd --reload

7.2 禁用危险命令

修改 redis.conf,重命名/禁用 FLUSHDB、CONFIG 等危险命令:

ini 复制代码
# 重命名CONFIG命令(仅允许管理员知道新名称)
rename-command CONFIG "REDIS_CONFIG_2025"
# 禁用FLUSHDB/FLUSHALL
rename-command FLUSHDB ""
rename-command FLUSHALL ""

7.3 开启 Redis 密码复杂度校验

openEuler 可通过 PAM 模块强化密码,或在应用层控制,确保 Redis 密码满足:

  • 长度 ≥ 12 位;
  • 包含大小写字母、数字、特殊符号;
  • 定期更换(建议90天)。

八、性能调优(适配 openEuler 内核)

8.1 内核参数优化

编辑 /etc/sysctl.conf,添加以下参数:

ini 复制代码
# Redis 优化
vm.overcommit_memory = 1        # 禁用内存过量使用检测
net.core.somaxconn = 1024       # 增大TCP监听队列
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_syncookies = 1

生效配置:

bash 复制代码
sysctl -p

8.2 Redis 内存调优

根据服务器内存调整 redis.conf

  • 8GB 内存服务器:maxmemory 6GB
  • 16GB 内存服务器:maxmemory 12GB
  • 内存淘汰策略:maxmemory-policy allkeys-lru(优先淘汰最少使用的键)。

8.3 开启多线程 IO(Redis 6.0+)

ini 复制代码
# redis.conf 中开启
io-threads 4          # 线程数=CPU核心数/2(如8核设为4)
io-threads-do-reads yes

九、常见故障排查

9.1 Redis 启动失败

  • 检查日志:tail -f /data/redis/log/redis-server.log
  • 权限问题:确保 /data/redis 目录属主为 redis;
  • 端口占用:ss -tlnp | grep 6379,杀死占用进程。

9.2 内存占用过高

bash 复制代码
# 查看内存使用
redis-cli -a YourStrongPassword@2025 info memory
# 清理过期键
redis-cli -a YourStrongPassword@2025 CONFIG SET lazyfree-lazy-eviction yes

9.3 openEuler 内核兼容问题

  • 若 Redis 启动报 jemalloc 错误,编译时指定 make MALLOC=libc
  • 鲲鹏架构 openEuler 需安装 libatomic-develyum install -y libatomic-devel

十、日常维护

10.1 数据备份

bash 复制代码
# 手动触发 RDB 备份
redis-cli -a YourStrongPassword@2025 bgsave
# 备份 AOF/RDB 文件
cp /data/redis/data/*.rdb /data/redis/backup/
cp /data/redis/data/*.aof /data/redis/backup/

10.2 日志轮转

创建 /etc/logrotate.d/redis

ini 复制代码
/data/redis/log/redis-server.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 640 redis redis
}

10.3 版本升级

源码安装升级:停止服务 → 备份配置/数据 → 编译新版本 → 替换二进制文件 → 启动验证。

总结

本教程覆盖 openEuler 系统下 Redis 的完整部署流程,源码编译安装适配生产环境的稳定性要求,YUM 安装适合快速测试。核心注意事项:

  1. 禁止 root 运行 Redis,严格控制目录权限;
  2. 生产环境开启密码认证、防火墙限制、危险命令禁用;
  3. 结合 openEuler 内核特性优化内存、网络参数;
  4. 定期备份数据,监控 Redis 运行状态(可搭配 Prometheus + Grafana)。

如需部署 Redis 集群(主从、哨兵、Cluster),可基于本教程扩展,核心配置需适配集群架构调整。

相关推荐
元气满满-樱2 小时前
MySql源码安装
数据库·mysql·adb
妮妮喔妮2 小时前
Redis Cluster故障处理机制
java·数据库·redis
Elastic 中国社区官方博客2 小时前
AutoOps 实际应用:调查 ECK 上的 Elasticsearch 集群性能
大数据·数据库·elasticsearch·搜索引擎·全文检索
欧克小奥2 小时前
Redis单节点分片集群实现
数据库·redis·缓存
代码游侠2 小时前
应用——文件I/O操作代码
linux·运维·c语言·笔记·学习·算法
霑潇雨2 小时前
题解 | 统计每个产品的销售情况
数据库·sql·笔试·牛客
未来之窗软件服务2 小时前
幽冥大陆(四十五)人工智能自动化交互系统ASR——东方仙盟筑基期
运维·自动化·asr·仙盟创梦ide·东方仙盟·东方仙盟sdk·东方仙盟自动化
小婷要努力2 小时前
Linux常用命令速查表
linux·运维·服务器
爱宇阳2 小时前
Jenkins 多语言 Agent 完整部署教程
运维·servlet·jenkins