从零到生产:一个后端小白的Redis 7.2完整上云记(阿里云ECS + 安全组 + RDM)

张开发
2026/4/18 6:39:25 15 分钟阅读

分享文章

从零到生产:一个后端小白的Redis 7.2完整上云记(阿里云ECS + 安全组 + RDM)
从零到生产一个后端小白的Redis 7.2完整上云记阿里云ECS 安全组 RDM第一次把本地开发环境搬到云端时那种既兴奋又忐忑的心情至今记忆犹新。作为刚接触云服务的后端开发者我原本以为在云服务器上部署Redis和在本地虚拟机没什么区别直到真正操作时才意识到——云环境就像个带刺的玫瑰美丽但需要技巧。本文将完整记录我在阿里云ECS上部署Redis 7.2的全过程特别是那些官方文档没告诉你的生存技巧从安全组规则配置的陷阱到让RedisDesktopManager穿透云环境的正确姿势还有比requirepass更靠谱的ACL设置方法。1. 云环境准备比安装Redis更重要的事1.1 ECS选型与系统初始化在阿里云控制台创建ECS实例时我犯了个典型新手错误——为了省钱选择了1核1GB的共享型实例。当Redis开始持久化时整个服务器直接卡死。后来才知道最低配置建议开发环境2核4GB突发性能实例t5足够生产环境至少4核8GBRedis是内存型数据库选择Ubuntu 22.04 LTS时别忘了完成这些基础操作# 更新软件源 sudo apt update sudo apt upgrade -y # 安装基础工具 sudo apt install -y htop tmux git curl wget提示通过阿里云控制台的远程连接功能首次登录后立即配置SSH密钥登录更安全1.2 安全组云环境的第一道防火墙这是我踩的第一个大坑。即使Redis配置正确外网依然无法访问原因就在安全组规则。正确的配置姿势方向协议类型端口范围授权对象备注入方向TCP6379您的办公IP/0.0.0.0生产环境应限制IP入方向TCP22您的办公IPSSH安全访问出方向ALLALL0.0.0.0/0默认全开警告开放0.0.0.0/0到6379端口时必须配合Redis ACL或强密码否则极易被入侵2. Redis 7.2安装与强化配置2.1 从源码编译的正确姿势官方推荐的apt安装方式版本较旧我选择源码编译获取最新特性# 安装依赖 sudo apt install -y build-essential tcl # 下载源码注意替换为最新版本 wget https://download.redis.io/releases/redis-7.2.0.tar.gz tar xzf redis-7.2.0.tar.gz cd redis-7.2.0 # 编译安装 make -j$(nproc) sudo make install编译时可能遇到的坑内存不足添加swap空间sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfileGCC版本过低Ubuntu 22.04自带gcc 11.3通常无需升级2.2 生产级配置调优默认的redis.conf简直是在邀请黑客上门这是我的强化配置清单# 网络配置 bind 0.0.0.0 protected-mode yes port 6379 # 安全配置 requirepass ComplexPssw0rd!2023 aclfile /etc/redis/users.acl # 持久化 appendonly yes appendfsync everysec # 资源限制 maxmemory 2gb maxmemory-policy allkeys-lru创建ACL用户比单纯用requirepass更安全# 创建管理员用户 redis-cli ACL SETUSER admin ON SuperSecretPss all # 创建只读用户 redis-cli ACL SETUSER reader ON ReadOnlyPss read3. 系统服务化与监控3.1 让Redis成为系统服务手动启动的方式太不专业应该注册为systemd服务# 创建配置文件 sudo nano /etc/systemd/system/redis.service服务文件内容[Unit] DescriptionRedis In-Memory Data Store Afternetwork.target [Service] Userredis Groupredis ExecStart/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop/usr/local/bin/redis-cli shutdown Restartalways [Install] WantedBymulti-user.target关键操作步骤创建专用用户sudo adduser --system --group --no-create-home redis sudo mkdir /var/lib/redis sudo chown redis:redis /var/lib/redis启动并设置开机自启sudo systemctl daemon-reload sudo systemctl start redis sudo systemctl enable redis3.2 基础监控设置没有监控的数据库就像闭眼开车我的简易监控方案内置监控命令redis-cli INFO | grep -E (used_memory|connected_clients|instantaneous_ops)Prometheus监控# 安装redis_exporter wget https://github.com/oliver006/redis_exporter/releases/download/v1.45.0/redis_exporter-v1.45.0.linux-amd64.tar.gz tar xzf redis_exporter*.tar.gz ./redis_exporter -redis.addr localhost:6379 -redis.password ComplexPssw0rd!20234. RedisDesktopManager安全连接指南4.1 客户端安装与配置从官网下载RedisDesktopManager时要注意Windows版建议使用Windows Package Managerwinget install qishibo.AnotherRedisDesktopManagerMac版brew安装更安全brew install --cask another-redis-desktop-manager连接配置中的关键参数参数示例值说明名称阿里云生产Redis自定义标识地址your-ecs-public-ip公网IP或域名端口6379默认6379认证ACL用户名/密码非requirepass密码SSL关闭除非配置了TLS4.2 连接故障排查指南当RDM连接失败时我的诊断流程基础检查# 从本地测试端口连通性 telnet your-ecs-public-ip 6379服务端检查# 查看Redis是否监听正确端口 sudo netstat -tulnp | grep redis # 检查防火墙状态 sudo ufw statusACL权限验证redis-cli -h 127.0.0.1 -a ComplexPssw0rd!2023 ACL WHOAMI常见错误解决方案Protected mode确保配置了bind 0.0.0.0和正确密码Connection refused检查安全组和系统防火墙Auth failed确认使用的是ACL用户而非requirepass5. 生产环境进阶配置5.1 持久化策略优化根据业务场景选择合适的持久化组合策略优点缺点适用场景RDB恢复快、备份小可能丢失分钟级数据允许数据丢失的缓存AOF数据安全文件大、恢复慢金融级数据安全RDBAOF兼顾两者需要更多资源大多数生产环境我的混合配置方案# 每5分钟如果有100次写入则保存 save 300 100 # AOF配置 appendonly yes appendfsync everysec auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb5.2 内存优化技巧当发现Redis内存占用过高时可以尝试检查大keyredis-cli --bigkeys优化数据结构用Hash代替多个String存储对象使用ZSET时控制member大小主动内存回收redis-cli MEMORY PURGE6. 备份与灾备方案6.1 自动化备份策略我的每日备份脚本保存为/usr/local/bin/redis_backup.sh#!/bin/bash BACKUP_DIR/data/redis_backups DATE$(date %Y%m%d) redis-cli SAVE cp /var/lib/redis/dump.rdp $BACKUP_DIR/dump_$DATE.rdp find $BACKUP_DIR -name *.rdp -mtime 7 -delete添加到cron定时任务0 3 * * * /usr/local/bin/redis_backup.sh6.2 跨可用区灾备对于关键业务建议配置主从复制# 在从节点执行 redis-cli REPLICAOF master-ip 6379哨兵监控sentinel monitor mymaster master-ip 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel failover-timeout mymaster 10000第一次成功通过RDM连接到云端Redis时那种成就感至今难忘。回头看这个部署过程最大的经验就是云环境下的服务配置安全考虑必须贯穿始终。现在我的小本本上还记录着那次因为没开安全组而熬夜排查的教训以及找到ACL功能时的惊喜。

更多文章