当前位置: 首页 > news >正文

AWS Lightsail 入门指南:开箱即用的云服务器实战

1. 为什么我坚持用 Lightsail 做第一个云项目?——给真正想上手的新人一句实在话

刚接触云计算时,我花三天时间在 EC2 控制台里反复创建、终止、重置安全组,最后连 SSH 都连不上,只看到一串红色错误:“Connection refused”。不是配置错了,是根本没搞懂“安全组”和“网络 ACL”的区别,更别说子网路由表怎么配。后来我换了个思路:先不碰 AWS 最底层的积木,而是找一块已经拼好的、能直接站上去的板子。AWS Lightsail 就是这块板子。它不是“简化版 EC2”,而是另一条路——一条专为“今天就想让网站跑起来”的人设计的路。它把虚拟机、防火墙、静态 IP、DNS、快照备份、甚至 WordPress 和数据库都打包成一个按钮,你点下去,三分钟之后就能在浏览器里输入 IP 地址看到首页。关键词就三个:开箱即用、价格透明、零网络配置负担。这不是给架构师用的,是给写完代码急着上线、做个人博客怕被黑、帮客户搭个展示页又不想被服务器运维拖垮的开发者准备的。它不教你怎么造轮子,但能让你立刻用上一辆能跑的车。如果你现在打开 AWS 控制台还觉得像在翻一本没目录的英文技术手册,那 Lightsail 就是你该停下来的第一个路口。它不替代 EC2,但它能让你在学开车之前,先坐进驾驶座,摸到方向盘,踩下油门——这种确定性带来的信心,比任何理论都重要。

2. Lightsail 的底层逻辑:它到底在帮你省掉什么?

2.1 它省掉的不是“步骤”,而是“决策疲劳”

很多人以为 Lightsail 就是“EC2 + 美化界面”,这是最大的误解。EC2 的核心价值在于“完全控制”,而 Lightsail 的核心价值在于“默认合理”。我们来拆解一下当你在 EC2 上部署一个 WordPress 站点时,实际要做的决策链:

  1. 选 AMI(Ubuntu 22.04?20.04?哪个版本的 WordPress 镜像最干净?)
  2. 选实例类型(t3.micro 足够?还是 t3.small?内存会不会爆?)
  3. 配置存储(根卷 30GB?要不要加 EBS 卷?GP2 还是 GP3?IOPS 怎么算?)
  4. 配置网络(VPC 选哪个?子网放公有还是私有?安全组规则写几条?SSH 开 22 端口,HTTP 开 80,HTTPS 开 443,MySQL 开 3306?要不要限制源 IP?)
  5. 配置 IAM 角色(这个实例要不要访问 S3?要不要调用 Lambda?权限最小化怎么写?)
  6. 登录后手动执行:apt update && apt install apache2 mysql-server php libapache2-mod-php -y,再配 MySQL root 密码、创建数据库、下载 WordPress、解压、改权限、配 Apache vhost、重启服务……
  7. 最后还要手动申请 SSL 证书,用 Certbot 配置自动续期。

这是一条至少 15 个关键决策点的链条,其中任意一步选错或漏掉,整个流程就卡死。而 Lightsail 把这条链压缩成了三个选择:

  • 选蓝图(Blueprint):点一下 “WordPress” —— 底层自动选 Ubuntu 22.04 + Apache + MySQL 8.0 + PHP 8.1 + WordPress 6.4,所有服务已预装、已启动、已配置好开机自启。
  • 选套餐(Plan):$5/月(512MB RAM / 1vCPU / 20GB SSD)够个人博客;$10/月(1GB RAM / 1vCPU / 40GB SSD)够小企业官网;$20/月(2GB RAM / 2vCPU / 80GB SSD)够轻量电商后台。没有“按秒计费”的焦虑,没有“突发性能积分”的概念,账单永远是你在控制台里看到的那个数字。
  • 选区域(Region):东京?新加坡?弗吉尼亚?选离你用户最近的那个。Lightsail 不需要你去建 VPC、子网、路由表——它背后已经为你建好了隔离的、开箱即用的网络环境,你只需要关心“我的用户在哪”。

提示:Lightsail 的“网络”不是抽象概念,而是具象功能。比如“静态 IP”不是你去 EC2 里申请再绑定,而是创建实例时勾选“Attach static IP”,系统当场分配一个永久地址;“DNS 管理”不是跳去 Route 53,而是在 Lightsail 控制台里点几下,填个域名,选个记录类型,保存就行;“防火墙”不是写几十行安全组规则,而是勾选“SSH”、“HTTP”、“HTTPS”三个开关,背后自动映射到对应端口和协议。它把“网络工程”降维成了“功能开关”。

2.2 它的“托管”到底管到哪一层?

很多新手会问:“Lightsail 是不是完全不用管服务器?”答案是:它托管了基础设施层(IaaS)的绝大部分,但操作系统层(OS)和应用层(App)仍需你介入,只是大幅降低了门槛

具体来说:

  • 它绝对托管的:物理服务器、虚拟化层(Hypervisor)、网络硬件、骨干带宽、DDoS 基础防护、主机监控(CPU/内存/磁盘/网络基础指标)、快照备份机制、静态 IP 地址池管理、DNS 解析服务(Lightsail 自带的 DNS 区域)。
  • 它部分托管的:操作系统内核更新(可选自动)、应用软件包更新(需你手动apt upgrade或通过面板一键更新)、Web 服务器配置(Apache/Nginx 配置文件你仍可编辑)、数据库参数调优(MySQL 配置你仍可改/etc/mysql/mysql.conf.d/mysqld.cnf)。
  • 它完全不托管的:你的应用代码逻辑、业务数据内容、SSL 证书续期(虽然支持一键申请 Let’s Encrypt,但续期需手动或脚本)、自定义防火墙规则(如 fail2ban)、日志分析(CloudWatch Logs 需额外配置)。

这个边界非常关键。它意味着:你不会因为底层硬盘故障而丢数据(Lightsail 自动 RAID+快照),但如果你在 WordPress 后台误删了整站,快照就是你唯一的救命稻草——所以“启用自动快照”不是可选项,是必选项。我见过太多人以为“托管=万无一失”,结果半年没手动打快照,一次rm -rf /var/www/html/*就彻底凉了。

2.3 与 EC2 的本质差异:不是“高级”和“初级”的关系,而是“乐高套装”和“散装零件”的关系

把 Lightsail 比作 EC2 的“简化版”,就像把宜家衣柜说成是木工坊的“简化版”——它省掉的不是“高级功能”,而是“从零开始组装”的全部过程。EC2 是给你一整套木料、螺丝、电钻、锯子,让你自己画图、裁板、打孔、组装;Lightsail 是给你一个已经喷好漆、装好铰链、附带说明书的成品衣柜,你只需要拧紧四个脚垫,就能用。

  • EC2 的自由度代价:你可以把一台 c5.4xlarge 实例装成数据库服务器,再挂载 10TB 的 io2 卷做 OLAP 分析,还能用 Placement Groups 让多台机器毫秒级通信。但这份自由,要求你必须懂存储 I/O 特性、网络延迟模型、实例生命周期管理。一个没经验的人,很容易花 $300/月租了一台“看起来很猛”的机器,却只跑了一个日活 100 的博客,CPU 利用率常年 2%。
  • Lightsail 的效率红利:它强制你在一个“合理区间”内做选择。$5/$10/$20/$40 四档套餐,覆盖了 95% 的中小项目需求。它不让你纠结“要不要用 EBS 优化实例”,因为所有 Lightsail 实例默认就是 EBS 优化;它不让你选“使用哪种 AMI”,因为蓝图已经为你做了最优组合;它甚至不让你选“是否启用 CloudWatch Agent”,因为基础监控已内置。

这不是限制,而是聚焦。就像专业厨师用定制刀具,新手用一套全能厨刀——后者不能切出米其林摆盘,但能让你第一周就做出能吃的菜。Lightsail 的存在意义,就是帮你绕过“成为系统工程师”的漫长爬坡,直接进入“成为应用开发者”的核心战场。

3. 从零到上线:一次真实的 Lightsail 实战全流程(含所有坑点)

3.1 账户准备与控制台初探:别跳过这三步

第一步不是点“Create Instance”,而是确认三件事:

  1. AWS 账户必须完成实名认证并绑定有效信用卡。Lightsail 虽然便宜,但 AWS 会对你账户做风控验证。我曾遇到一位用户,用公司邮箱注册后一直收不到验证邮件,折腾两天才发现邮箱被 AWS 误判为“高风险域名”,换个人 Gmail 五分钟搞定。实操心得:首次注册,务必用个人常用邮箱,且确保能接收国际邮件(检查垃圾邮件箱)。

  2. 登录后,必须进入 “Billing Dashboard” 查看 “AWS Free Tier” 状态。Lightsail 的 $0 免费额度是:每月 750 小时的 $5 套餐实例(即相当于一台 $5 实例运行整月)+ 3 个静态 IP + 100GB SSD 存储 + 1TB 出向流量。这个额度是自动叠加的,但前提是你的账户在创建 Lightsail 资源前,已成功激活免费套餐。我见过太多人直接开实例,第二天收到 $0.03 账单,才慌忙去查,结果发现免费额度因未完成身份验证而未生效。

  3. 首次进入 Lightsail 控制台,不要急着创建实例,先花 2 分钟熟悉四个核心 Tab

    • Instances:你的所有虚拟机,状态(Running/Stopped)、IP、套餐、创建时间一目了然;
    • Networking:这里管三件事——静态 IP 列表(可绑定/解绑)、DNS 区域(可添加 A 记录、CNAME)、负载均衡器(创建/配置);
    • Storage:块存储卷列表(可创建/附加/分离),注意:Lightsail 的块存储是独立计费的($0.10/GB/月),且必须手动挂载到实例才能用,不像 EC2 的根卷自动可用;
    • Snapshots:所有快照列表,按实例分组,可设自动快照策略(强烈建议开启:每天 1 次,保留 7 天)。

注意:Lightsail 控制台右上角有个 “Region” 下拉框,它和 EC2 的 Region 是同一套。但 Lightsail 目前只支持 12 个区域(如 us-east-1, ap-northeast-1),比 EC2 少。如果你在东京区域创建了实例,后续想加一个新加坡的负载均衡器,这是做不到的——Lightsail 的所有资源必须在同一区域。这点和 EC2 完全不同,EC2 可以跨区域调用 API。所以选区不是“就近就行”,而是“未来半年我所有资源都得在这儿”。

3.2 创建实例:蓝图、区域、套餐的黄金三角选择法

假设你要部署一个个人技术博客(类似 Hexo 或 Hugo 静态站),目标用户 90% 在中国。我们一步步操作:

Step 1:选蓝图(Blueprint)

  • 左侧菜单点 “Create instance” → 进入创建页。
  • 在 “Choose your blueprint” 区域,不要选 “Apps + OS” 里的 “Node.js”!这是个经典误区。Node.js 蓝图预装的是 Express + NPM,但静态站不需要 Node 服务端。选 “OS only” → “Ubuntu 22.04 LTS”。理由:静态站只需 Nginx 或 Apache 托管 HTML 文件,Ubuntu 22.04 是当前最稳定、软件包最新、社区支持最好的 LTS 版本。CentOS 已停止维护,Debian 更新慢,Windows 对静态站纯属浪费。

Step 2:选区域(Region)

  • 下拉框选 “Asia Pacific (Tokyo) ap-northeast-1”。为什么不是新加坡(ap-southeast-1)?实测数据:对中国华东用户,东京节点平均延迟 65ms,新加坡 82ms;对华北用户,东京 78ms,新加坡 95ms。差距虽小,但东京的网络出口带宽和稳定性历史更优。避坑技巧:打开 AWS Global Infrastructure 页面,查 “Regional Services” 表格,确认你选的区域是否支持 Lightsail 的全部功能(如负载均衡器、数据库)。有些新区域可能暂不支持。

Step 3:选套餐(Plan)

  • 滑动到 “Choose your instance plan”,你会看到四档:$5, $10, $20, $40。
  • 计算依据:静态站几乎不耗 CPU,主要吃内存(Nginx 缓存)和磁盘(存放 HTML/CSS/JS/图片)。一个 50 篇文章的博客,源文件 + 图片约 1.2GB。$5 套餐只有 20GB SSD,够用;$10 套餐 40GB,留足余量。但关键在内存:$5 是 512MB,$10 是 1GB。Nginx + 系统进程常驻约 300MB,剩下 200MB 给缓存刚好。如果未来加 CDN 或监控,$10 更稳妥。我最终选 $10—— 多花 $5/月,换来 2 年不用升级的安心。

Step 4:配置细节(这才是真功夫)

  • Instance name:填blog-prod-2024,别用默认的WordPress-1。命名规范:环境(prod/staging)+ 用途(blog/api/db)+ 年份,方便后期批量管理。
  • SSH key pair:点 “Create new key pair”,命名为blog-key-2024,下载.pem文件。警告:这个文件是唯一登录凭证!必须存到安全位置(如密码管理器的 Secure Notes),并立即设置权限chmod 400 blog-key-2024.pem。Windows 用户用 PuTTYgen 转成.ppk格式。
  • Firewall:默认只开 “SSH”。但静态站需要 HTTP/HTTPS,所以勾选 “HTTP” 和 “HTTPS”。注意:Lightsail 的防火墙是“白名单”,只允许勾选的端口入站,其他全部拒绝。这比 EC2 安全组更严格,也更省心。
  • Add launch script(高级技巧):在下方文本框粘贴:
    #!/bin/bash apt update && apt install nginx -y systemctl enable nginx systemctl start nginx echo "<h1>Welcome to My Blog!</h1>" > /var/www/html/index.html
    这段脚本会在实例启动时自动安装 Nginx 并启动,省去你登录后手动执行的步骤。这就是 Lightsail 的“启动脚本”能力——它比 EC2 的 User Data 更易用,且支持 Bash/Python。

点击 “Create instance”,等待 90 秒。状态从 “Pending” 变成 “Running”,右侧显示 Public IP(如13.112.189.45),你就成功了。

3.3 连接与初始化:三种登录方式的实测对比

实例创建后,有三种连接方式,我全部试过,结论如下:

方式一:Lightsail 内置 Web 终端(最简单,适合 5 分钟快速验证)

  • 在 Instances 列表,找到你的实例,点 “Connect” → “Connect using browser-based SSH client”。
  • 优点:无需本地配置,打开即用,适合临时查日志、改配置。
  • 缺点:终端体验差(复制粘贴卡顿、不支持 tmux/screen、字体小)、无法上传文件、超时断连频繁。仅推荐用于首次登录验证 SSH 是否通,或紧急救火。

方式二:本地 Terminal + SSH Key(主力推荐,Mac/Linux)

  • 终端执行:ssh -i "/path/to/blog-key-2024.pem" ubuntu@13.112.189.45
  • 成功后,你会看到 Ubuntu 的欢迎信息。此时执行df -h,确认根卷是/dev/xvda1,大小为 40GB(对应 $10 套餐)。
  • 关键检查项
    • sudo systemctl status nginx→ 确认 Nginx 正在运行(因启动脚本已执行);
    • curl http://localhost→ 返回<h1>Welcome...</h1>,证明服务正常;
    • sudo ufw status→ 显示 “Status: inactive”,Lightsail 默认禁用 UFW,靠自身防火墙管控,这是正确行为。

方式三:PuTTY + .ppk(Windows 用户首选)

  • PuTTY 配置:Host Name 填 IP,Connection → SSH → Auth → Browse 选择.ppk文件。
  • 避坑点:PuTTY 默认连接用户名是root,但 Lightsail Ubuntu 镜像禁用 root,必须填ubuntu。否则报错 “Server refused our key”。在 Connection → Data → Auto-login username 填ubuntu即可。

实操心得:无论哪种方式,首次登录后,立刻执行sudo apt update && sudo apt upgrade -y。Lightsail 的 Ubuntu 镜像发布后,内核和关键安全补丁不会自动推送,必须手动升级。我曾因跳过此步,在一周后遭遇一个已知的 OpenSSL 漏洞被扫描利用,幸好只是测试环境。

3.4 部署静态博客:从本地到云端的三步闭环

以 Hugo 博客为例(Hexo 同理),完整流程:

Step 1:本地构建生成静态文件

  • 在 Hugo 项目根目录,执行hugo -d /tmp/myblog。这会在/tmp/myblog生成全部index.htmlposts/css/等文件。
  • 为什么不用hugo server因为那是本地开发服务器,不能对外提供服务。必须用hugo命令生成纯静态文件。

Step 2:上传文件到 Lightsail

  • 方法 A(SCP,推荐):终端执行
    scp -i "/path/to/blog-key-2024.pem" -r /tmp/myblog/* ubuntu@13.112.189.45:/var/www/html/
    -r表示递归上传整个目录。注意路径末尾的/,它表示“上传到 html 目录下”,而不是“上传为 html 子目录”。
  • 方法 B(SFTP,图形化):用 FileZilla,主机填 IP,用户名ubuntu,密钥选.pem文件。拖拽/tmp/myblog/内容到远程/var/www/html/即可。
  • 关键权限修复:上传后,执行sudo chown -R www-data:www-data /var/www/html/。否则 Nginx 进程(以www-data用户运行)无权读取文件,会返回 403 Forbidden。

Step 3:验证与调试

  • 浏览器访问http://13.112.189.45,应看到你的博客首页。
  • 如果是空白页,执行sudo tail -f /var/log/nginx/error.log,实时查看错误。常见问题:
    • open() "/var/www/html/posts/xxx/index.html" failed (2: No such file or directory)→ Hugo 的baseURL配置错误,导致生成的链接是/posts/xxx/,但 Nginx 默认不处理结尾斜杠。解决方案:在/etc/nginx/sites-available/default中,location /块内添加try_files $uri $uri/ =404;,然后sudo systemctl reload nginx
    • 图片加载失败 → 检查 Hugo 的static/目录是否正确复制,或config.tomlpublishDir = "public"是否与上传路径一致。

至此,你的博客已上线。整个过程,从本地hugo命令到浏览器看到页面,不超过 5 分钟。

4. 生产就绪:安全、备份、域名、SSL 的硬核配置

4.1 安全加固:五道防线,每一道都不可省

Lightsail 默认安全水位不低,但生产环境必须主动加固。我按优先级排序:

防线一:禁用密码登录,只留密钥

  • 编辑/etc/ssh/sshd_config
    PasswordAuthentication no PermitRootLogin no
  • 执行sudo systemctl restart sshd
  • 验证:新开一个终端,用ssh ubuntu@ip测试是否仍能登录(应该可以,因密钥还在);再用ssh -o PubkeyAuthentication=no ubuntu@ip测试,应报错 “Permission denied (publickey)”。这证明密码登录已关闭。

防线二:收紧防火墙(Lightsail 自带)

  • 回到 Lightsail 控制台 → Networking → Firewall → Edit。
  • 当前已开 SSH/HTTP/HTTPS。但 SSH 端口(22)对全世界开放是巨大风险。最佳实践:点击 “+ Add another” → Protocol: TCP, Port: 22, Source: 勾选 “My IP”,这样只有你当前公网 IP 能连 SSH。
  • 注意:如果你的宽带是动态 IP(绝大多数家用宽带),每次重启光猫 IP 会变,这时你需要重新编辑防火墙,或干脆用 AWS Systems Manager Session Manager(需额外配置 IAM 角色),但对新手太重。折中方案:保留 SSH 对所有 IP 开放,但配合防线三。

防线三:安装 fail2ban(防暴力破解)

  • sudo apt install fail2ban -y
  • sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  • 编辑/etc/fail2ban/jail.local,在[sshd]段下添加:
    enabled = true maxretry = 3 bantime = 3600
  • sudo systemctl enable fail2ban && sudo systemctl start fail2ban
  • 效果:连续 3 次输错 SSH 密码,该 IP 会被封 1 小时。我部署后第三天,sudo fail2ban-client status sshd显示已有 17 个 IP 被封,全是来自俄罗斯、乌克兰的扫描器。

防线四:自动安全更新

  • sudo apt install unattended-upgrades -y
  • sudo dpkg-reconfigure -plow unattended-upgrades→ 选 “Yes”
  • 编辑/etc/apt/apt.conf.d/50unattended-upgrades,确保Unattended-Upgrade::Allowed-Origins包含"${distro_id}:${distro_codename}-security";
  • 这样,所有安全补丁(如内核、OpenSSL)会在凌晨 2-3 点自动安装,无需人工干预。

防线五:应用层防护(针对 WordPress 等)

  • 如果你用 WordPress 蓝图,务必:
    • 删除默认管理员账号admin,新建强密码账号;
    • 安装插件 “Wordfence Security”,开启登录保护、恶意文件扫描;
    • /var/www/html/wp-config.php末尾添加:
      define('DISALLOW_FILE_EDIT', true); // 禁用后台编辑主题/插件 define('WP_MEMORY_LIMIT', '256M'); // 防止内存溢出

4.2 备份策略:自动快照 + 手动导出的双保险

Lightsail 的快照是基石,但必须科学配置:

自动快照(必须开)

  • 控制台 → Snapshots → Create auto snapshot → 选你的实例 → Frequency: Daily → Time: 02:00 AM → Retention: 7 days。
  • 为什么是 7 天?因为 Lightsail 快照按 GB/月计费($0.05/GB/月),7 天足够覆盖“上周改坏的配置”和“昨天误删的文件”。保留 30 天,成本会翻 4 倍,且多数问题在 7 天内暴露。

手动快照(每周一执行)

  • 每周一上午,登录控制台 → 选实例 → Actions → Create snapshot → 命名blog-weekly-20240520
  • 目的:自动快照是“滚动备份”,手动快照是“里程碑备份”。当某次自动快照恰好在你改坏配置后生成,它也是坏的。手动快照由你掌控时机,确保每次重大更新(如 WordPress 升级、主题更换)后都有一个干净的还原点。

导出到 S3(终极保险)

  • Lightsail 控制台 → Snapshots → 选一个快照 → Actions → Export to Amazon EC2 → 选区域 → Export。
  • 这会将快照导出为 EC2 的 AMI,然后你可以在 EC2 控制台 → AMIs → 选中该 AMI → Actions → Copy AMI → 目标区域选us-east-1(S3 全局桶所在),并勾选 “Encrypted”。
  • 最后,用 AWS CLI 将 AMI 的 EBS 快照复制到 S3:
    aws ec2 copy-snapshot --source-snapshot-id snap-xxxx --source-region ap-northeast-1 --description "Blog backup" --encrypted
  • 价值:当 Lightsail 区域发生极端故障(概率极低),你仍有完整的、加密的、可跨区域恢复的备份。这不是日常操作,但值得知道路径。

4.3 域名与 HTTPS:三步走通,零成本

13.112.189.45换成myblog.com,并启用 HTTPS,只需三步:

Step 1:在 Lightsail 配 DNS(最简方案)

  • 控制台 → Networking → Create DNS zone → 域名填myblog.com→ Create。
  • 进入该 DNS 区域 → Add record → Type: A, Name: @, Value:13.112.189.45, TTL: 300 → Save。
  • 等待:DNS 全球生效需 1-48 小时,但 Lightsail 的 DNS 通常 10 分钟内生效。用dig myblog.com +short验证。

Step 2:申请免费 SSL 证书(Let’s Encrypt)

  • Lightsail 控制台 → Networking → Create load balancer → 命名blog-lb→ 选区域 → Next。
  • 在 “Configure your load balancer” 页面,不添加任何实例,直接点 “Create load balancer”。
  • 创建后,点该 LB → TLS Settings → Request new certificate → Domain:myblog.com→ Validate domain via DNS → Lightsail 会自动生成两条 CNAME 记录(如_acme-challenge.myblog.com)。
  • 回到 DNS 区域,Add record → Type: CNAME,Name 填_acme-challenge,Value 填 Lightsail 给的值 → Save。
  • 等待 5 分钟,回到 LB 的 TLS Settings,点 “Validate and issue”。证书签发成功后,状态变绿。

Step 3:绑定 LB 与实例,并强制 HTTPS

  • LB 页面 → Attach instances → 选你的blog-prod-2024实例 → Attach。
  • LB 的 “TLS Settings” → Edit → HTTPS listener → Redirect HTTP to HTTPS → Enable。
  • 此时,访问http://myblog.com会自动跳转https://myblog.com,且浏览器显示绿色锁图标。
  • 原理:LB 充当反向代理,它用证书解密 HTTPS 请求,再以 HTTP 协议转发给后端实例。所以你的 Nginx 无需配置 SSL,专注处理业务即可。

提示:这个方案用了 Load Balancer,会额外产生费用($16.40/月 + 流量费)。如果预算紧张,可跳过 LB,直接在实例上用 Certbot:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d myblog.com
但 Certbot 续期需定时任务,且证书只在本实例有效,不如 LB 方案优雅。

5. 进阶实战:当流量增长,如何不重装系统?

5.1 垂直扩展:升级套餐的完整迁移指南

当你的博客日 PV 从 1000 涨到 10000,CPU 常年 80%,$10 套餐不够了。Lightsail 不支持“原地升级”,必须迁移。以下是零停机迁移法:

Step 1:创建新实例(无缝衔接)

  • 控制台 → Create instance → 选相同蓝图(Ubuntu 22.04)、相同区域、新套餐($20)、相同 SSH Key、相同防火墙(HTTP/HTTPS)。
  • 命名blog-prod-2024-upgraded
  • 关键:在 “Add launch script” 中,粘贴:
    #!/bin/bash apt update && apt install nginx rsync -y systemctl enable nginx systemctl start nginx

Step 2:同步数据(rsync 增量同步)

  • 在旧实例(blog-prod-2024)上,执行:
    # 创建临时快照,确保数据一致性 sudo systemctl stop nginx sudo dd if=/dev/zero of=/tmp/zero bs=1M count=100 && sync sudo systemctl start nginx # 现在同步 rsync -avz --delete -e "ssh -i /home/ubuntu/blog-key-2024.pem" /var/www/html/ ubuntu@NEW_IP:/var/www/html/
  • --delete确保新实例目录与旧实例完全一致;-avz保证权限、时间戳、压缩传输。首次同步可能 10 分钟,后续增量同步只需几秒。

Step 3:切换流量(DNS 切换,5 分钟完成)

  • 控制台 → Networking → DNS zone → myblog.com → 编辑 A 记录 → Value 改为新实例 IP → Save。
  • 等待:TTL 设为 300 秒(5 分钟),所以最多 5 分钟后全球用户都会访问新实例。
  • 验证:用dig myblog.com +short查看是否已变;用curl -I http://myblog.com查看Server头是否显示新实例的 Nginx 版本。

Step 4:清理与验证

  • 旧实例保持运行 48 小时,监控新实例日志sudo tail -f /var/log/nginx/access.log,确认无 5xx 错误。
  • 48 小时后,旧实例 → Actions → Stop(非 Terminate,以防万一)。
  • 新实例上,执行sudo apt upgrade -y,并检查df -h确认磁盘空间($20 套餐是 80GB,应充足)。

5.2 水平扩展:用负载均衡器扛住百万并发

当单实例瓶颈不仅是 CPU,还有网络带宽或连接数(如 WebSocket 应用),就需要水平扩展:

Step 1:创建第二个实例(完全克隆)

  • 用旧实例的快照创建新实例:Snapshots → 选blog-weekly-20240520→ Create instance → 选 $10 套餐 → 命名blog-prod-2024-node2
  • 这样,两台实例的系统、网站文件、配置完全一致,避免“配置漂移”。

Step 2:创建负载均衡器(LB)

  • Networking → Create load balancer → 命名blog-lb-ha→ 选区域 → Next。
  • Configure → Health check path:/healthz(需在 Nginx 配置中添加该路径返回 200)→ Next。
  • Attach instances → 选blog-prod-2024blog-prod-2024-node2→ Attach。
  • TLS Settings → 用已有的证书(或新申请)→ Enable HTTPS redirect。

Step 3:配置健康检查(让 LB 自动剔除故障节点)

  • 在两台实例上,编辑/etc/nginx/sites-available/default,添加:
    location /healthz { return 200 'OK'; add_header Content-Type text/plain; }
  • sudo systemctl reload nginx
  • LB 每 30 秒请求/healthz,如果连续 3 次失败,自动将该实例从流量池移除,直到恢复。

Step 4:DNS 切换到 LB

  • DNS zone → A 记录 → Value 改为 LB 的 DNS 名(如blog-lb-ha-123456789.us-east-1.elb.amazonaws.com)→ Save。
  • 现在,
http://www.rkmt.cn/news/1388640.html

相关文章:

  • MHMarkets迈汇:“高估值考验新股热潮持续”
  • 从电机驱动到清洁能源:单相SVPWM如何在小功率光伏逆变器中优化效率与波形
  • 告别AT指令依赖:手把手教你用Python+EC800M模块,更优雅地发送HTTP POST请求
  • 从一次失败的Getshell到成功的XSS:我的文件上传漏洞挖掘复盘笔记
  • 金融练习靶场:零风险实战模拟交易平台
  • STM32定时器外部时钟模式避坑指南:为什么你的脉冲计数结果会乱跳?(附解决方案)
  • 深度解析Joy-Con Toolkit:开源手柄控制工具的完整开发指南
  • Excel排序底层逻辑与数据契约解析
  • 告别PMOS!聊聊NMOS LDO为啥更适合你的低功耗MCU项目(附选型要点)
  • 终极指南:使用罗技鼠标宏实现绝地求生零后坐力压枪
  • 灰度发布卡点诊断手册,DeepSeek SRE团队每日巡检清单(含Prometheus+OpenTelemetry双栈校验脚本)
  • Unity IL2CPP闪退排查五步法:日志、addr2line、静态分析、Profiler与MRE
  • 碧蓝航线自动化脚本Alas:让游戏回归乐趣的终极助手
  • AI创业黄金赛道:基于百度MCP广场的智能推荐服务,打造AI时代的“应用商店“
  • TVA在电子元器件领域的创新应用(5)
  • AI编码代理实战:如何高效协作,提升全栈开发效率与避坑指南
  • CDH 6.3.2生产实战:Cloudera Manager运维与YARN/HDFS/Spark调优
  • Studio 3T无限试用失效了?别急,试试这个更稳的Windows开机自启脚本(附完整.bat文件)
  • 嵌入式GUI开发新思路:用ASCII协议驱动手机App界面
  • 使用 TaoToken CLI 工具快速配置多个开发环境中的 API 密钥
  • 哔哩下载姬技术探索:5分钟掌握B站视频批量下载与高级处理
  • ARM调试寄存器与跟踪寄存器深度解析
  • ngx_hash_find
  • AArch64指令集属性寄存器解析与应用
  • Browser-Use实测:不写一行代码,AI帮我完成了80%的Web自动化测试
  • 3步掌握ComfyUI Reactor:AI换脸终极指南
  • 如何快速配置Blender 3MF插件:完整安装与使用教程
  • THC-IPv6 攻击工具包:IPv6 渗透测试
  • 智能游戏助手深度技术解析:从算法架构到实战应用
  • 母婴商城(源码+毕设)