腾讯云CVM高可用Web架构部署实战权威指南

2026-06-20阅读 0热度 0
最佳实践

一、概述

腾讯云服务器 CVM 高可用 Web 架构部署最佳实践

先说一个很多团队踩过的坑:单台云服务器跑业务,风险确实不小。一旦服务器宕机、网络中断,或是碰上流量高峰,业务就可能长时间挂掉,用户体验骤降,直接带来经济损失。这篇文章就来聊聊,怎么基于腾讯云 CVM,结合负载均衡 CLB、云数据库 MySQL、对象存储 COS、弹性伸缩 AS 等一整套服务,从零搭一个高可用、能弹性伸缩的 Web 架构。

这套方案特别适合中小型企业网站、API 服务,或者高并发的业务场景。

适用对象

  • 需要基于腾讯云搭建生产环境的开发运维人员
  • 希望深入了解高可用架构设计的中级以上技术人员
  • 正在备考腾讯云技术认证的工程师

架构总览

用户请求 -> 域名解析 DNSPod -> 负载均衡 CLB -> CVM 集群(多可用区)

CVM 集群内部:

Web 节点 1 / Web 节点 2 / Web 节点 3

-> 云数据库 MySQL(主从)

-> 对象存储 COS(静态资源)

架构核心思路,说白了就是这几条:

  • 多可用区部署:CVM 实例分散在不同可用区,能有效避免单机房故障。
  • 负载均衡:CLB 自动分发流量,后端实例一旦出问题,自动摘除,不影响整体服务。
  • 数据库高可用:MySQL 采用一主一从或一主多从架构,能自动故障切换。
  • 弹性伸缩:根据 CPU、内存、连接数等指标,自动扩缩容。
  • 静态资源分离:图片、CSS、JS 这些静态文件放 COS,再配上 CDN 加速,效果立竿见影。

二、前置准备

正式开始部署前,先把准备工作做扎实。

2.1 账号与权限

  • 登录腾讯云控制台:https://console.cloud.tencent.com
  • 确保账号已完成实名认证
  • 创建子账号,并授予以下权限:QcloudCVMFullAccess、QcloudCLBFullAccess、QcloudCDBFullAccess、QcloudCOSFullAccess、QcloudAutoScalingFullAccess

强烈建议用子账号操作,别让主账号的 AK/SK 有泄露风险。

2.2 资源预估

资源类型 规格建议 数量 用途
CVM 2核4G,系统盘50G 2~3台 Web 应用节点
CLB 标准型 1个 流量分发
MySQL 2核4G,磁盘100G 1主1从 业务数据
COS 标准存储 1个存储桶 静态资源
弹性伸缩组 - 1组 自动扩缩容

以上是入门推荐配置,具体还得看业务预估流量来调整。

三、创建云服务器 CVM

3.1 购买 CVM 实例

进入 CVM 控制台:https://console.cloud.tencent.com/cvm,点击新建。

关键配置项得仔细看看:

  • 计费模式:包年包月(适合长期稳定业务),或者按量计费(适合弹性测试)。
  • 地域:选靠近用户的区域,比如华东(上海)、华南(广州)。
  • 可用区:把实例分散到不同可用区,比如上海二区放2台,上海三区放1台。
  • 镜像:CentOS 7.9 64位,稳定,社区生态也好。
  • 系统盘:高性能云硬盘 50GB。
  • 数据盘:按需挂载,建议用 CBS 并定期快照。
  • 公网带宽:按流量计费,峰值带宽根据业务来定。

3.2 初始化服务器

# SSH 登录
ssh -i /path/to/private_key root@<公网IP>

# 更新系统
yum update -y

# 关闭 SELinux(生产环境建议按需配置)
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

# 调整系统参数
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.core.somaxconn = 65535
EOF
sysctl -p

# 安装常用工具
yum install -y wget curl vim git net-tools htop nginx

3.3 安装 Web 环境

以 Nginx + PHP 为例,安装 Web 运行环境:

# 安装 Nginx
yum install -y nginx
systemctl enable nginx
systemctl start nginx

# 安装 PHP 7.4
yum install -y epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum install -y php74w php74w-fpm php74w-mysql php74w-mbstring php74w-xml php74w-gd
systemctl enable php-fpm
systemctl start php-fpm

# 安装 Redis(可选,用于缓存)
yum install -y redis
systemctl enable redis
systemctl start redis

四、配置负载均衡 CLB

4.1 创建 CLB 实例

  • 进入 CLB 控制台:https://console.cloud.tencent.com/clb
  • 点击新建负载均衡
  • 选择与 CVM 相同的地域和网络类型(VPC)
  • 实例类型选择应用型负载均衡(支持 HTTP/HTTPS 监听器、七层转发)
  • 购买后获得一个 VIP(虚拟 IP)

4.2 配置监听器

HTTP 监听器示例配置:

  • 监听器名称: web-http-80
  • 前端协议/端口: HTTP / 80
  • 后端协议/端口: HTTP / 8080
  • 均衡方式: 加权轮询(WRR)
  • 会话保持: 启用(Cookie 植入方式)
  • 健康检查: 启用,检查路径 /health.html,间隔5秒,超时3秒,健康阈值3次

4.3 绑定后端 CVM

在 CLB 控制台里,选刚创建的监听器,绑定已初始化的 CVM 实例:

  • 选择同一 VPC 下的 CVM
  • 设置端口为各节点应用监听端口(如 8080)
  • 设置权重(权重相同,流量就均匀分发)

4.4 配置健康检查

所有 CVM 节点上都得创建健康检查文件:

echo 'OK' > /usr/share/nginx/html/health.html

CLB 的健康检查机制会定期访问这个路径。一旦连续3次检查失败,自动把异常节点摘掉;恢复后,再自动加回来。

五、搭建数据库高可用

5.1 创建云数据库 MySQL

进入 MySQL 控制台:https://console.cloud.tencent.com/cdb,点击新建。

配置建议:

  • 计费模式:包年包月
  • 地域:与 CVM 同地域
  • 架构:双节点(一主一从,自动故障切换)
  • 规格:2核4GB 通用型
  • 硬盘:SSD 云硬盘 100GB
  • 版本:MySQL 8.0(性能和安全都比 5.7 强)
  • 网络:与 CVM 同 VPC(内网访问免流量)

5.2 连接数据库

-- 使用内网地址连接
mysql -h 10.0.x.x -u root -p

-- 创建业务数据库
CREATE DATABASE `webapp` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建业务用户并授权
CREATE USER 'webapp_user'@'10.%' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON webapp.* TO 'webapp_user'@'10.%';
FLUSH PRIVILEGES;

5.3 数据库连接最佳实践

应用代码里配置数据库连接时,推荐用连接池和重试机制。

PHP PDO 连接示例(支持主从分离):

 '10.0.x.x',
    'port'=> 3306,
    'dbname'=> 'webapp',
    'user'=> 'webapp_user',
    'pass'=> 'your_strong_password',
];

// 从库配置(读操作)
$sla ves = [
    [
        'host'=> '10.0.x.x',
        'port'=> 3306,
        'dbname'=> 'webapp',
        'user'=> 'webapp_user',
        'pass'=> 'your_strong_password',
    ],
];

function getDBConnection($write = true) {
    global $master, $sla ves;
    if ($write || empty($sla ves)) {
        $config = $master;
    } else {
        $config = $sla ves[array_rand($sla ves)];
    }
    $dsn = sprintf('mysql:host=%s;port=%d;dbname=%s;charset=utf8mb4',
        $config['host'], $config['port'], $config['dbname']);
    try {
        return new PDO($dsn, $config['user'], $config['pass'], [
            PDO::ATTR_ERRMODE=> PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
            PDO::ATTR_EMULATE_PREPARES => false,
        ]);
    } catch (PDOException $e) {
        error_log('DB connection failed: ' . $e->getMessage());
        throw $e;
    }
}
?>

5.4 数据库备份策略

策略 频率 保留时间
自动快照备份 每天一次 7天
日志备份(binlog) 每5分钟 3天
手动全量备份 每周一次 30天

在 MySQL 控制台的“备份恢复”里能一键配置。万一误删数据,用回档功能就能恢复到过去任意时间点。

六、静态资源托管 COS + CDN

6.1 创建存储桶

  • 进入 COS 控制台:https://console.cloud.tencent.com/cos5
  • 点击创建存储桶
  • 名称:webapp-static-xxx(全局唯一)
  • 地域:与 CVM 同地域
  • 访问权限:公有读私有写(静态资源需要被公网读取)

6.2 上传静态资源

用 COSCLI 工具批量上传:

# 安装 COSCLI
pip install coscmd

# 配置(AK/SK 在访问管理控制台创建)
coscmd config -a  -s  -b webapp-static-xxx -r ap-shanghai

# 上传静态文件
coscmd upload -r ./public/static/ /

6.3 绑定 CDN 加速

  • 在 COS 存储桶的域名管理里,开启 CDN 加速
  • 配置 CNAME 记录
  • 在 CDN 控制台配置缓存规则
    • 图片(jpg/png/gif):缓存 30 天
    • CSS/JS:缓存 7 天
    • HTML:缓存 10 分钟

七、弹性伸缩配置

7.1 创建启动配置

进入弹性伸缩控制台:https://console.cloud.tencent.com/autoscaling

  • 启动配置名称:webapp-launch-config
  • 镜像:使用已部署好环境的自定义镜像
  • 实例规格:S5.SMALL2(2核4G)
  • 登录方式:关联密钥
  • 安全组:放行 22/80/443/8080 端口

7.2 制作自定义镜像

在已完成环境配置的 CVM 上操作:

去 CVM 控制台选中实例,点击“更多” -> “制作自定义镜像”,命名比如 webapp-base-v1.0.1。

7.3 创建伸缩组

配置项
伸缩组名称 webapp-asg
最小实例数 2
最大实例数 10
起始实例数 2
关联 CLB 选择已创建的 CLB
移出策略 移出最旧的实例

伸缩策略推荐配置:

  • 扩容策略:CPU 使用率 > 70%,持续5分钟,增加1台(冷却300秒)
  • 缩容策略:CPU 使用率 < 30%,持续10分钟,减少1台(冷却600秒)

7.4 通知策略

配置邮件、信息、微信通知:一旦伸缩组执行扩容或缩容操作,能及时通知运维人员。

八、域名解析与 HTTPS

8.1 DNSPod 解析

  • 进入 DNSPod 控制台:https://console.dnspod.cn
  • 添加域名,把 CLB 的 VIP 解析到域名
  • 记录类型:A 记录
  • 主机记录:@ 和 www
  • 记录值:CLB 实例的公网 IP
  • 开启 DNSPod 的智能解析和 D监控

8.2 配置 HTTPS

在 CLB 控制台的监听器里,添加 HTTPS 监听器:

  • 监听器名称:web-https-443
  • 前端协议/端口:HTTPS / 443
  • SSL 解析方式:单向认证
  • 证书来源:腾讯云 SSL 证书服务(可以申请免费 DV 证书)
  • HTTP 强制跳转 HTTPS:在 CLB 的重定向配置里设置

九、监控与告警

9.1 配置云监控

进入云监控控制台:https://console.cloud.tencent.com/monitor

关键监控指标与建议告警阈值:

资源 监控指标 建议告警阈值
CVM CPU 使用率 > 80%,持续5分钟
CVM 内存使用率 > 85%,持续5分钟
CVM 磁盘使用率 > 90%
CLB 并发连接数 > 最大规格70%
CLB 入带宽 > 可用带宽80%
MySQL 连接数 > 最大连接数80%
MySQL 慢查询数 > 10/分钟

9.2 日志管理

推荐用腾讯云 CLS(日志服务)统一管理日志:

# 安装日志采集 Agent
wget https://loglistener-1254139253.cos.ap-shanghai.myqcloud.com/loglistener-linux-x64.tar.gz
tar xzf loglistener-linux-x64.tar.gz
cd loglistener
./start.sh

采集 Nginx 访问日志,在 CLS 控制台配置采集路径 /var/log/nginx/access.log。

十、常见问题与排查

10.1 CLB 后端实例显示异常

可能原因:

  • 健康检查路径不存在,或返回非200状态码
  • 后端端口未监听
  • 安全组未放行 CLB 的流量

排查命令:

# 确认端口监听
netstat -tlnp | grep 8080

# 测试健康检查页面
curl -I http://localhost:8080/health.html

# 查看安全组,确保放行了 VPC 内网

10.2 新扩缩容的实例未自动加入 CLB

可能原因:

  • 启动配置中未选择正确的 CLB
  • 伸缩组与 CLB 不在同一 VPC
  • 启动配置中的安全组未放行来自 CLB 的流量

解决方案:检查伸缩组关联的 CLB 是否正确,确保伸缩组启动配置中的安全组规则设置正确。

10.3 数据库连接超时

排查步骤:

  • 确认数据库内网地址能 ping 通
  • 检查数据库安全组是否放行了 CVM 所在的 VPC 网段
  • 确认数据库连接数未达到上限
  • 查看慢查询日志,定位慢 SQL

十一、总结

从实际生产需求出发,这篇文章详细拆解了在腾讯云上搭建高可用 Web 架构的完整流程。通过合理运用 CVM、CLB、MySQL、COS、弹性伸缩等云产品,能实现这些效果:

  • 高可用:多可用区部署 + 负载均衡 + 数据库主从,任何单点故障都不影响整体服务。
  • 弹性伸缩:自动应对流量波动,既节约成本,又保障业务稳定性。
  • 性能优化:CDN 加速、读写分离、静态资源分离,后端负载明显降低。
  • 安全可靠:HTTPS 加密、定期备份、监控告警,全方位守护。

下一步建议

  • 尝试用 TKE(容器服务)把应用容器化部署,进一步简化运维。
  • 用 TDSQL(分布式数据库)应对海量数据场景。
  • 接入 Web 应用防火墙 WAF,防护 SQL 注入、XSS 等攻击。
  • 考虑多地域部署,实现异地容灾。
免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

相关阅读

更多
欢迎回来 登录或注册后,可保存提示词和历史记录
登录后可同步收藏、历史记录和常用模板
注册即表示同意服务条款与隐私政策