首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >从零搭建一个高可用的云上 Web 服务:以腾讯云 CVM + CLB + COS 为例

从零搭建一个高可用的云上 Web 服务:以腾讯云 CVM + CLB + COS 为例

原创
作者头像
用户11846116
发布2026-04-28 17:51:28
发布2026-04-28 17:51:28
1440
举报
文章被收录于专栏:软件合集软件合集

在企业业务上云的过程中,很多团队最先遇到的问题并不是“如何写代码”,而是“如何把服务稳定、安全、可扩展地运行起来”。本文将以一个典型 Web 应用为例,介绍如何基于腾讯云的云服务器 CVM、负载均衡 CLB、对象存储 COS 等产品,搭建一个基础但相对完整的云上 Web 服务架构。

一、为什么不能只用一台服务器?

很多个人项目或早期业务会直接购买一台云服务器,然后在上面部署 Nginx、后端服务和数据库。这种方式简单直接,但存在明显风险:

一旦服务器宕机,整个服务都会不可用;当访问量上升时,单机资源很容易成为瓶颈;静态文件和业务服务混在一起,也会增加运维复杂度。

因此,在生产环境中,更推荐将 Web 服务拆成几个部分:入口流量层、业务计算层、静态资源层和数据存储层。

一个常见架构如下:

代码语言:javascript
复制
用户
  |
  v
负载均衡 CLB
  |
  v
多台云服务器 CVM
  |
  +---- 业务服务
  |
  +---- 数据库 / 缓存
  |
  v
对象存储 COS:图片、视频、附件、静态资源

二、核心组件说明

1. 云服务器 CVM

CVM 用于运行实际的业务程序,例如 Java、Node.js、Go、Python 或 PHP 应用。相比本地服务器,CVM 的优势在于创建快、弹性强,并且可以根据业务压力灵活调整配置。

在实际部署时,建议至少准备两台 CVM,并部署相同版本的业务服务。这样可以避免单点故障,也方便后续滚动发布。

2. 负载均衡 CLB

CLB 位于用户和云服务器之间,负责把请求分发到多台后端服务器上。它可以根据健康检查结果自动摘除异常实例,提升整体可用性。

例如,当某一台 CVM 上的服务进程异常退出时,CLB 可以检测到该实例不可用,并停止向它转发流量。服务恢复后,再重新加入转发列表。

3. 对象存储 COS

对于图片、视频、日志包、用户上传附件等文件,不建议直接存放在 CVM 本地磁盘中。原因很简单:服务器扩容后,文件分布会变得混乱;服务器故障时,文件也可能丢失。

COS 更适合存储这类非结构化文件。业务服务只需要保存文件地址或对象 Key,真正的文件内容交给 COS 管理。对于访问量较大的静态资源,还可以配合 CDN 加速访问。

三、部署流程示例

第一步:准备云服务器

首先创建两台 CVM,并安装基础运行环境。以 Node.js 应用为例,可以执行:

代码语言:javascript
复制
sudo apt update
sudo apt install -y nodejs npm nginx

然后将业务代码上传到两台服务器,并使用 PM2 或 systemd 管理进程:

代码语言:javascript
复制
npm install
npm run build
pm2 start app.js --name web-service

为了便于负载均衡健康检查,可以提供一个简单的健康检查接口:

代码语言:javascript
复制
app.get('/health', (req, res) => {
  res.status(200).send('ok');
});

第二步:配置 Nginx 反向代理

在每台 CVM 上配置 Nginx,将外部请求转发到本地应用端口:

代码语言:javascript
复制
server {
    listen 80;
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /health {
        proxy_pass http://127.0.0.1:3000/health;
    }
}

配置完成后重启 Nginx:

代码语言:javascript
复制
sudo nginx -t
sudo systemctl reload nginx

第三步:创建负载均衡 CLB

创建 CLB 后,将两台 CVM 添加为后端服务器。监听器可以选择 HTTP 80 或 HTTPS 443。

健康检查路径建议配置为:

代码语言:javascript
复制
/health

当 CLB 能够正常访问该接口时,说明后端服务已经可以接收流量。

第四步:接入 COS 存储静态文件

业务系统中的上传文件可以直接存入 COS。例如,用户上传头像后,后端服务将文件上传到 COS,并将返回的访问地址保存到数据库。

这样做的好处是:

文件不依赖某一台 CVM;扩容服务器时不需要同步本地文件;大文件访问不会占用业务服务器带宽;后续可以平滑接入 CDN。

四、上线前的安全配置

云上服务上线前,安全配置非常重要。建议至少完成以下几项:

第一,安全组只开放必要端口。例如 HTTP 80、HTTPS 443、SSH 22。数据库端口不要直接暴露到公网。

第二,SSH 登录建议关闭密码登录,改用密钥登录,并限制登录来源 IP。

第三,生产环境必须使用 HTTPS,避免用户数据在传输过程中被窃听或篡改。

第四,应用配置中的数据库密码、密钥、Token 不要直接写入代码仓库,可以通过环境变量或配置管理服务注入。

第五,开启日志与监控,及时发现 CPU、内存、磁盘、网络和接口错误率异常。

五、如何支持后续扩容?

当业务访问量上升时,可以从以下几个方向扩容:

如果 CPU 或内存压力较高,可以增加 CVM 数量,并加入 CLB 后端;如果静态资源访问量较大,可以使用 COS + CDN;如果数据库压力较高,可以考虑读写分离、缓存或数据库实例升级;如果部署频繁,可以引入自动化发布流程,例如 GitHub Actions、CODING DevOps 或自建 CI/CD。

这套架构的优点是扩展路径清晰。早期可以用较低成本启动,后续也可以逐步演进到更复杂的微服务、容器化或 Serverless 架构。

六、总结

本文介绍了一种基于腾讯云搭建 Web 服务的基础架构方案:使用 CLB 作为统一流量入口,使用多台 CVM 承载业务服务,使用 COS 存储静态文件和用户上传内容。

相比单机部署,这种方案具备更好的可用性、扩展性和运维灵活性。对于中小型 Web 应用、企业官网、管理后台、内容平台等场景,这是一种成本适中、落地简单、后续可演进的云上部署方式。

在实际项目中,架构设计不必一开始就追求复杂。更合理的做法是先保证服务稳定运行,再根据业务增长逐步引入缓存、消息队列、容器服务、自动化发布和可观测性体系。这样既能控制成本,也能让系统持续演进。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、为什么不能只用一台服务器?
  • 二、核心组件说明
    • 1. 云服务器 CVM
    • 2. 负载均衡 CLB
    • 3. 对象存储 COS
  • 三、部署流程示例
    • 第一步:准备云服务器
    • 第二步:配置 Nginx 反向代理
    • 第三步:创建负载均衡 CLB
    • 第四步:接入 COS 存储静态文件
  • 四、上线前的安全配置
  • 五、如何支持后续扩容?
  • 六、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档