五台腾讯云轻量服务器高可用架构方案(宝塔面板+宝塔WAF)

配备:两台源站服务器、两台WAF防护服务器和一台数据库服务器,同时考虑内网互联、文件同步、数据库主从以及后期扩展性。

一、架构设计概述

1.1 整体架构图

复制代码
用户请求 → 腾讯云CLB (可选) → WAF服务器1 (宝塔云WAF)
                     ↘ WAF服务器2 (宝塔云WAF)
                          ↘ 源站服务器1 (宝塔面板)
                          ↘ 源站服务器2 (宝塔面板)
数据库服务器 (MySQL主从/主主)

1.2 服务器角色分配

  • WAF服务器:2台,部署宝塔云WAF,实现流量清洗和安全防护

  • 源站服务器:2台,部署宝塔面板和业务应用,处理实际业务请求

  • 数据库服务器:1台,部署MySQL数据库,可配置为主从或主主复制

二、详细实施步骤

2.1 基础环境准备

2.1.1 服务器初始化
  1. 在所有五台腾讯云轻量服务器上:

    • 确保内网互通(腾讯云内网默认互通)

    • 设置主机名便于识别:waf1, waf2, web1, web2, db1

    • 配置SSH密钥登录,禁用密码登录

    • 统一时区和时间同步(安装ntpdate)

2.1.2 宝塔面板安装

在两台源站服务器(web1, web2)和两台WAF服务器(waf1, waf2)上安装宝塔面板:

复制代码
# CentOS安装命令
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

安装完成后:

  • 记录面板访问地址、用户名和密码

  • 开放宝塔面板所需端口(默认8888)

  • 在安全组中限制只允许特定IP访问面板

2.2 WAF服务器配置

WAF主图:

WAF备图:

2.2.1 宝塔云WAF安装

在两台WAF服务器上执行:

复制代码
URL= https://download.bt.cn/cloudwaf/scripts/install_cloudwaf.sh && if [ -f /usr/bin/curl ];then curl -sSO "$URL" ;else wget -O install_cloudwaf.sh "$URL";fi;bash install_cloudwaf.sh

安装完成后:

  1. 登录宝塔云WAF控制台

  2. 添加防护域名(您的业务域名)

  3. 配置源站信息(指向两台源站服务器的内网IP)

  4. 设置回源协议(HTTP/HTTPS)

  5. 开启核心防护功能(SQL注入、XSS、CC攻击等)

2.2.2 DNS配置

将您的业务域名DNS解析指向宝塔云WAF提供的CNAME地址:

2.2.3 高可用配置
  1. 在两台WAF服务器上配置相同的防护规则

  2. 可以使用腾讯云CLB(负载均衡)将流量分发到两台WAF(可选)

  3. 配置健康检查,确保故障自动切换

2.3 源站服务器配置

2.3.1 基础服务安装

在两台源站服务器上通过宝塔面板安装:

  • Nginx/Apache(建议Nginx 1.20+)

  • PHP(根据业务需求选择版本)

  • 其他依赖软件(如Redis、Memcached等)

2.3.2 网站部署
  1. 通过宝塔面板创建网站

  2. 上传业务代码

  3. 配置伪静态、SSL证书等

  4. 设置文件权限和目录保护

2.3.3 源站安全加固
  1. 配置防火墙只允许来自WAF服务器内网IP的访问

    复制代码
    # 示例:只允许WAF服务器内网IP访问80端口
    ufw allow from 10.0.0.0/24 to any port 80
    ufw deny 80
    ufw enable
  2. 关闭不必要的服务和端口

  3. 配置SSH只允许密钥登录

2.4 数据库服务器配置

2.4.1 MySQL安装与配置
  1. 通过宝塔面板安装MySQL(建议5.7或8.0版本)

  2. 修改MySQL配置文件my.cnf

    复制代码
    [mysqld]
    server-id=1
    log-bin=mysql-bin
    binlog-format=ROW
    binlog-do-db=您的数据库名
    expire_logs_days=7
  3. 重启MySQL服务

  4. 创建数据库和用户,并设置权限

2.4.2 数据库主从配置(扩展准备)

虽然目前只有一台数据库服务器,但可以预先配置为主服务器,为后期扩展从服务器做准备:

  1. 在主库上创建复制用户:

    复制代码
    CREATE USER 'replica'@'%' IDENTIFIED BY 'StrongPassword123!';
    GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
    FLUSH PRIVILEGES;
  2. 获取主库二进制日志位置:

    复制代码
    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;

    记录File和Position值,然后解锁:

    复制代码
    UNLOCK TABLES;

2.5 文件同步方案

2.5.1 源站服务器间文件同步

使用lsyncd+rsync实现实时文件同步:

  1. 在两台源站服务器上安装lsyncd和rsync:

    复制代码
    yum install epel-release -y
    yum install lsyncd rsync -y
  2. 配置SSH免密登录互信:

    复制代码
    ssh-keygen
    ssh-copy-id -i ~/.ssh/id_rsa.pub root@另一台服务器IP
  3. 在web1上配置lsyncd同步到web2:

    复制代码
    -- /etc/lsyncd.conf
    settings {
        logfile = "/var/log/lsyncd/lsyncd.log",
        statusFile = "/var/log/lsyncd/lsyncd.status",
        nodaemon = false,
        inotifyMode = "CloseWrite",
        maxProcesses = 1,
    }
    
    sync {
        default.rsyncssh,
        source = "/www/wwwroot", -- 网站根目录
        host = "root@web2内网IP",
        targetdir = "/www/wwwroot",
        delete = true,
        delay = 15,
        rsync = {
            archive = true,
            compress = true,
            _extra = {"--bwlimit=10000"}, -- 限制带宽10MB/s
        },
        ssh = {
            port = 22,
        }
    }
  4. 在web2上配置反向同步到web1,确保双向同步

  5. 启动lsyncd服务:

    复制代码
    systemctl start lsyncd
    systemctl enable lsyncd
2.5.2 文件备份策略
  1. 配置宝塔面板的定期备份功能,将网站文件和数据库备份到COS或其他存储

  2. 设置备份保留策略(如保留最近7天备份)

  3. 定期测试备份恢复流程

2.6 数据库访问配置

  1. 在源站服务器上配置应用连接数据库:

    • 使用数据库服务器的内网IP

    • 使用专用数据库用户(非root)

    • 限制连接数,使用连接池

  2. 配置数据库防火墙:

    • 只允许源站服务器的内网IP访问3306端口

    • 禁止公网访问数据库

三、高可用与扩展方案

3.1 WAF层扩展

  1. 横向扩展:随时可以增加更多WAF服务器,只需:

    • 在新服务器上安装宝塔云WAF

    • 配置相同的防护规则

    • 更新DNS或负载均衡配置

  2. 负载均衡

    • 可以使用腾讯云CLB在前端分发流量到多台WAF

    • 配置健康检查自动剔除故障节点

3.2 源站层扩展

  1. 横向扩展:增加更多源站服务器:

    • 在新服务器上安装相同环境

    • 通过lsyncd加入文件同步集群

    • 更新WAF回源配置,添加新服务器IP

  2. 无状态设计

    • 确保应用设计为无状态,会话数据存储在Redis等共享存储中

    • 上传文件统一存储到共享目录或对象存储

3.3 数据库层扩展

3.3.1 主从复制扩展
  1. 增加从库服务器:

    • 安装相同版本MySQL

    • 配置my.cnf:

      复制代码
      [mysqld]
      server-id=2  # 确保每个服务器ID唯一
      relay-log=relay-bin
      read-only=1  # 从库设为只读
    • 配置主从复制:

      复制代码
      CHANGE MASTER TO
      MASTER_HOST='主库内网IP',
      MASTER_USER='replica',
      MASTER_PASSWORD='StrongPassword123!',
      MASTER_LOG_FILE='mysql-bin.000001',
      MASTER_LOG_POS=12345;
      
      START SLAVE;
  2. 读写分离:

    • 在应用层配置读写分离,写操作指向主库,读操作指向从库

    • 或使用ProxySQL等中间件实现自动读写分离

3.3.2 主主复制(可选)

对于需要双向同步的场景,可以配置主主复制:

  1. 在两台数据库服务器上都配置:

    复制代码
    [mysqld]
    server-id=1  # 另一台设为2
    log-bin=mysql-bin
    auto-increment-increment = 2
    auto-increment-offset = 1  # 另一台设为2
  2. 互相配置为对方的从库

3.3.3 数据库分片

当数据量非常大时,可以考虑:

  1. 垂直分片:按业务拆分不同数据库

  2. 水平分片:按数据特征拆分到不同服务器

  3. 使用ShardingSphere等中间件管理分片

3.4 监控与告警

  1. 基础监控

    • 使用宝塔面板自带的监控功能

    • 或部署Prometheus+Grafana监控集群

  2. 业务监控

    • 监控关键业务接口

    • 设置HTTP状态码、响应时间告警

  3. 日志收集

    • 使用ELK(Elasticsearch+Logstash+Kibana)收集和分析日志

    • 或使用腾讯云日志服务

四、安全加固方案

4.1 网络安全

  1. 防火墙规则

    • WAF服务器:开放80/443端口(公网),限制管理端口访问

    • 源站服务器:只允许WAF服务器内网IP访问业务端口

    • 数据库服务器:只允许源站服务器内网IP访问3306端口

  2. 安全组策略

    • 遵循最小权限原则

    • 定期审计安全组规则

4.2 应用安全

  1. 定期更新

    • 定期更新操作系统、宝塔面板、PHP、Nginx等软件

    • 关注安全公告,及时修补漏洞

  2. WAF规则优化

    • 根据业务特点调整WAF规则敏感度

    • 定期审查WAF拦截日志,优化规则

  3. 防篡改措施

    • 启用宝塔防篡改插件

    • 关键文件设置只读权限

4.3 数据安全

  1. 加密传输

    • 全站启用HTTPS

    • 数据库连接使用SSL加密

  2. 备份策略

    • 每日全量备份+增量备份

    • 异地备份(如腾讯云COS)

    • 定期测试备份恢复

  3. 敏感数据保护

    • 数据库敏感字段加密

    • 配置文件与密码分离

五、日常维护与故障处理

5.1 日常维护任务

  1. 定期检查

    • 磁盘空间使用情况

    • 内存和CPU使用率

    • 网络带宽使用

  2. 日志轮转

    • 配置logrotate定期压缩和清理旧日志

    • 关键日志长期存档

  3. 性能优化

    • 定期优化数据库表

    • 清理缓存和临时文件

5.2 故障处理流程

  1. 故障识别

    • 监控告警触发

    • 用户反馈问题

  2. 故障定位

    • 检查系统日志、应用日志

    • 使用top、netstat、ss等工具分析

  3. 故障恢复

    • 优先恢复服务(如切换备用节点)

    • 再分析根本原因

  4. 事后复盘

    • 记录故障处理过程

    • 制定预防措施

六、成本优化建议

  1. 合理利用轻量服务器

    • 根据业务流量选择合适的配置

    • 利用腾讯云轻量服务器的流量包特性

  2. 资源调度

    • 非高峰期降低资源配置

    • 使用自动伸缩策略

  3. 存储优化

    • 冷热数据分离

    • 使用COS存储静态资源

  4. 带宽优化

    • 启用GZIP压缩

    • 使用CDN加速静态资源

七、总结

本方案基于五台腾讯云轻量服务器构建了一个高可用、易扩展的Web架构,主要特点包括:

  1. 安全防护:通过双WAF节点实现流量清洗和安全防护

  2. 高可用源站:双源站+实时文件同步,确保业务连续性

  3. 数据库可扩展:预先配置主从复制,便于后期扩展

  4. 全内网互联:利用腾讯云内网无带宽限制特性,实现高速数据传输

  5. 灵活扩展:每层都可独立扩展,满足业务增长需求

一下是扩展后的效果图:

相关推荐
踏浪无痕2 小时前
JobFlow 背后:五个让我豁然开朗的设计瞬间
分布式·后端·架构
北邮刘老师2 小时前
马斯克的梦想与棋盘:空天地一体的智能体互联网
数据库·人工智能·架构·大模型·智能体·智能体互联网
七夜zippoe2 小时前
使用OpenLLM管理轻量级大模型服务
架构·langchain·大模型·kv·轻量
落羽的落羽2 小时前
【C++】深入浅出“图”——图的遍历与最小生成树算法
linux·服务器·c++·人工智能·算法·机器学习·深度优先
HalvmånEver2 小时前
Linux:库制作与原理(二)
linux·运维·服务器
HalvmånEver2 小时前
Linux:库制作与原理(一)
linux·运维·服务器
落羽的落羽2 小时前
【C++】深入浅出“图”——图的基本概念与存储结构
服务器·开发语言·数据结构·c++·人工智能·机器学习·图搜索算法
秋深枫叶红2 小时前
嵌入式第三十九篇——linux系统编程——信号通信、共享内存
linux·运维·服务器·学习
乌萨奇也要立志学C++2 小时前
【Linux】线程互斥与互斥量全解析:原理、实践与封装
linux·服务器