4、云服务器(ECS/EC2)部署:实例选型、购买、SSH登录、初始化配置、弹性伸缩

好,咱们进入正题。云服务器,说白了就是你在云上租了一台电脑。但这台电脑怎么选、怎么买、怎么连、怎么配,每一步都有讲究。我这些年踩过的坑,今天一次性给你讲透。

4.1 实例选型:别上来就选最大的

很多人第一次买云服务器,习惯性选「最大配置」。其实没必要。我见过太多项目,8核16G的机器跑个静态页面,CPU占用率常年不到5%。这不是浪费钱吗?

选型前,先问自己三个问题:

  • 业务类型是什么? 是计算密集(视频转码、科学计算),还是IO密集(数据库、缓存),还是普通Web应用?
  • 流量预期多大? 日均PV多少?峰值并发多少?
  • 预算多少? 这个最实在,别打肿脸充胖子。

以阿里云ECS为例,常见实例族如下:

实例族 适用场景 特点
通用型(g7) Web应用、轻量数据库 CPU与内存配比1:4,均衡型
计算型(c7) 视频转码、批处理 CPU配比高,1:2
内存型(r7) Redis、内存数据库 内存配比高,1:8
突发性能型(t6) 低负载、开发测试 有CPU积分限制,长期高负载不适用
我的建议: 新项目起步,选通用型2核4G就够了。跑起来后观察监控,再决定要不要升配。别一上来就买最高配,云服务器随时可以升级,但降配有时候要停机。

4.2 购买流程:别忽略这几个细节

买服务器看着简单,填个表单就行。但有几个坑,我当年都踩过。

第一,地域选择。 服务器离用户越近,延迟越低。你的用户主要在国内,就选华东、华北。用户在国外,就选新加坡、美西。别问我为什么有人把服务器买到法兰克福,结果国内用户访问慢成狗。

第二,网络带宽。 这里有个常见误区:很多人只买1Mbps带宽,觉得够用。你想想看,1Mbps换算下来,理论下载速度才128KB/s。一个稍微大点的图片加载都要好几秒。我个人习惯,生产环境至少5Mbps起步。

第三,系统镜像。 选CentOS还是Ubuntu?我个人的偏好:CentOS 7已经停止维护了,现在推荐Ubuntu 22.04 LTS或者Rocky Linux。别选那些冷门发行版,出了问题社区都找不到人问。

注意: 购买时一定要勾选「分配公网IP」。我曾经有个同事,买完发现没公网IP,又得重新买,白白浪费一台机器。另外,安全组规则默认是全拒绝的,记得放行SSH端口(22)。

4.3 SSH登录:别再用密码了

服务器买好了,怎么连?SSH。但这里我要强调:千万别用密码登录

为什么?因为互联网上到处都是扫描机器人。你只要开了密码登录,24小时内就会有成千上万次暴力破解尝试。我亲眼见过一台新开的服务器,不到2小时就被攻破了——密码是admin123。

正确的做法是使用密钥对登录。流程如下:

  1. 在本地生成密钥对:ssh-keygen -t ed25519 -C "your_email@example.com"
  2. 将公钥上传到服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub root@你的服务器IP
  3. 修改SSH配置文件,禁用密码登录
# 编辑 /etc/ssh/sshd_config
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password

# 重启SSH服务
systemctl restart sshd
避坑指南: 修改SSH配置前,先开一个新终端窗口测试密钥登录是否正常。我曾经手滑把PermitRootLogin设成了no,结果把自己锁在外面了。还好有VNC控制台可以救急。

4.4 初始化配置:新服务器到手后的标准操作

新服务器就像毛坯房,得先装修才能住。我有一套标准流程,每次新机器到手都这么干:

第一步:更新系统

apt update && apt upgrade -y   # Ubuntu
yum update -y                   # CentOS

第二步:创建普通用户

别直接用root干活。创建一个普通用户,赋予sudo权限。

useradd -m -s /bin/bash deploy
passwd deploy
usermod -aG sudo deploy

第三步:配置防火墙

只开放必要的端口。Web服务器开80和443,数据库不开公网端口。

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

第四步:配置时区和NTP

服务器时间不准,日志排查会疯掉。

timedatectl set-timezone Asia/Shanghai
apt install chrony -y
systemctl enable --now chronyd

第五步:安装常用工具

curl、wget、git、vim、htop,这些基本工具先装上,省得后面要用的时候手忙脚乱。

小技巧: 把这些初始化步骤写成脚本,下次新机器直接跑脚本。我自己的初始化脚本已经迭代了十几个版本,现在新机器从购买到可用,不超过5分钟。

4.5 弹性伸缩:自动应对流量洪峰

业务做大了,流量会有波峰波谷。双十一流量暴涨,平时又很平稳。手动扩缩容?不现实。这时候就需要弹性伸缩。

弹性伸缩的核心逻辑很简单:设定一个指标,比如CPU使用率超过70%就加机器,低于30%就减机器。

以阿里云的弹性伸缩为例,配置步骤:

  1. 创建伸缩组:指定最小实例数(比如2台)、最大实例数(比如10台)、默认实例数(比如2台)
  2. 配置伸缩规则:比如「CPU使用率 > 70% 持续5分钟,增加1台」
  3. 关联负载均衡:新加的机器自动加入SLB,流量自动分发
  4. 设置冷却时间:避免频繁伸缩,一般设置300秒
我的经验: 弹性伸缩不是万能的。它解决的是「水平扩展」的问题,但前提是你的应用本身支持无状态。如果每个实例都存了本地数据,一扩容就出问题。所以,弹性伸缩的前提是应用架构支持

另外,别忘了设置健康检查。如果某台机器挂了,弹性伸缩会自动把它替换掉。我遇到过的情况:某次后端服务内存泄漏,机器慢慢变慢,但还没完全挂掉。健康检查发现响应超时,自动替换了实例,业务完全没受影响。

最后说一句:弹性伸缩不是一劳永逸的。你得持续观察监控数据,调整伸缩策略。比如,有些业务是凌晨流量低,但凌晨可能有定时任务跑批,CPU会突然飙高。这时候如果触发扩容,反而浪费钱。嗯,这些细节都得根据实际情况来调。

好了,云服务器的选型、购买、登录、初始化、弹性伸缩,这一套流程走下来,你的服务器应该能稳稳当当地跑起来了。下一章,咱们聊聊域名和DNS,让用户能通过域名访问你的服务。