配备:两台源站服务器、两台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 服务器初始化
-
在所有五台腾讯云轻量服务器上:
-
确保内网互通(腾讯云内网默认互通)
-
设置主机名便于识别: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
安装完成后:
-
登录宝塔云WAF控制台
-
添加防护域名(您的业务域名)
-
配置源站信息(指向两台源站服务器的内网IP)
-
设置回源协议(HTTP/HTTPS)
-
开启核心防护功能(SQL注入、XSS、CC攻击等)
2.2.2 DNS配置
将您的业务域名DNS解析指向宝塔云WAF提供的CNAME地址:
2.2.3 高可用配置
-
在两台WAF服务器上配置相同的防护规则
-
可以使用腾讯云CLB(负载均衡)将流量分发到两台WAF(可选)
-
配置健康检查,确保故障自动切换
2.3 源站服务器配置
2.3.1 基础服务安装
在两台源站服务器上通过宝塔面板安装:
-
Nginx/Apache(建议Nginx 1.20+)
-
PHP(根据业务需求选择版本)
-
其他依赖软件(如Redis、Memcached等)
2.3.2 网站部署
-
通过宝塔面板创建网站
-
上传业务代码
-
配置伪静态、SSL证书等
-
设置文件权限和目录保护
2.3.3 源站安全加固
-
配置防火墙只允许来自WAF服务器内网IP的访问
# 示例:只允许WAF服务器内网IP访问80端口 ufw allow from 10.0.0.0/24 to any port 80 ufw deny 80 ufw enable -
关闭不必要的服务和端口
-
配置SSH只允许密钥登录
2.4 数据库服务器配置
2.4.1 MySQL安装与配置
-
通过宝塔面板安装MySQL(建议5.7或8.0版本)
-
修改MySQL配置文件
my.cnf:[mysqld] server-id=1 log-bin=mysql-bin binlog-format=ROW binlog-do-db=您的数据库名 expire_logs_days=7 -
重启MySQL服务
-
创建数据库和用户,并设置权限
2.4.2 数据库主从配置(扩展准备)
虽然目前只有一台数据库服务器,但可以预先配置为主服务器,为后期扩展从服务器做准备:
-
在主库上创建复制用户:
CREATE USER 'replica'@'%' IDENTIFIED BY 'StrongPassword123!'; GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%'; FLUSH PRIVILEGES; -
获取主库二进制日志位置:
FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;记录File和Position值,然后解锁:
UNLOCK TABLES;
2.5 文件同步方案
2.5.1 源站服务器间文件同步
使用lsyncd+rsync实现实时文件同步:
-
在两台源站服务器上安装lsyncd和rsync:
yum install epel-release -y yum install lsyncd rsync -y -
配置SSH免密登录互信:
ssh-keygen ssh-copy-id -i ~/.ssh/id_rsa.pub root@另一台服务器IP -
在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, } } -
在web2上配置反向同步到web1,确保双向同步
-
启动lsyncd服务:
systemctl start lsyncd systemctl enable lsyncd
2.5.2 文件备份策略
-
配置宝塔面板的定期备份功能,将网站文件和数据库备份到COS或其他存储
-
设置备份保留策略(如保留最近7天备份)
-
定期测试备份恢复流程
2.6 数据库访问配置
-
在源站服务器上配置应用连接数据库:
-
使用数据库服务器的内网IP
-
使用专用数据库用户(非root)
-
限制连接数,使用连接池
-
-
配置数据库防火墙:
-
只允许源站服务器的内网IP访问3306端口
-
禁止公网访问数据库
-
三、高可用与扩展方案
3.1 WAF层扩展
-
横向扩展:随时可以增加更多WAF服务器,只需:
-
在新服务器上安装宝塔云WAF
-
配置相同的防护规则
-
更新DNS或负载均衡配置
-
-
负载均衡:
-
可以使用腾讯云CLB在前端分发流量到多台WAF
-
配置健康检查自动剔除故障节点
-
3.2 源站层扩展
-
横向扩展:增加更多源站服务器:
-
在新服务器上安装相同环境
-
通过lsyncd加入文件同步集群
-
更新WAF回源配置,添加新服务器IP
-
-
无状态设计:
-
确保应用设计为无状态,会话数据存储在Redis等共享存储中
-
上传文件统一存储到共享目录或对象存储
-
3.3 数据库层扩展
3.3.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;
-
-
读写分离:
-
在应用层配置读写分离,写操作指向主库,读操作指向从库
-
或使用ProxySQL等中间件实现自动读写分离
-
3.3.2 主主复制(可选)
对于需要双向同步的场景,可以配置主主复制:
-
在两台数据库服务器上都配置:
[mysqld] server-id=1 # 另一台设为2 log-bin=mysql-bin auto-increment-increment = 2 auto-increment-offset = 1 # 另一台设为2 -
互相配置为对方的从库
3.3.3 数据库分片
当数据量非常大时,可以考虑:
-
垂直分片:按业务拆分不同数据库
-
水平分片:按数据特征拆分到不同服务器
-
使用ShardingSphere等中间件管理分片
3.4 监控与告警
-
基础监控:
-
使用宝塔面板自带的监控功能
-
或部署Prometheus+Grafana监控集群
-
-
业务监控:
-
监控关键业务接口
-
设置HTTP状态码、响应时间告警
-
-
日志收集:
-
使用ELK(Elasticsearch+Logstash+Kibana)收集和分析日志
-
或使用腾讯云日志服务
-
四、安全加固方案
4.1 网络安全
-
防火墙规则:
-
WAF服务器:开放80/443端口(公网),限制管理端口访问
-
源站服务器:只允许WAF服务器内网IP访问业务端口
-
数据库服务器:只允许源站服务器内网IP访问3306端口
-
-
安全组策略:
-
遵循最小权限原则
-
定期审计安全组规则
-
4.2 应用安全
-
定期更新:
-
定期更新操作系统、宝塔面板、PHP、Nginx等软件
-
关注安全公告,及时修补漏洞
-
-
WAF规则优化:
-
根据业务特点调整WAF规则敏感度
-
定期审查WAF拦截日志,优化规则
-
-
防篡改措施:
-
启用宝塔防篡改插件
-
关键文件设置只读权限
-
4.3 数据安全
-
加密传输:
-
全站启用HTTPS
-
数据库连接使用SSL加密
-
-
备份策略:
-
每日全量备份+增量备份
-
异地备份(如腾讯云COS)
-
定期测试备份恢复
-
-
敏感数据保护:
-
数据库敏感字段加密
-
配置文件与密码分离
-
五、日常维护与故障处理
5.1 日常维护任务
-
定期检查:
-
磁盘空间使用情况
-
内存和CPU使用率
-
网络带宽使用
-
-
日志轮转:
-
配置logrotate定期压缩和清理旧日志
-
关键日志长期存档
-
-
性能优化:
-
定期优化数据库表
-
清理缓存和临时文件
-
5.2 故障处理流程
-
故障识别:
-
监控告警触发
-
用户反馈问题
-
-
故障定位:
-
检查系统日志、应用日志
-
使用top、netstat、ss等工具分析
-
-
故障恢复:
-
优先恢复服务(如切换备用节点)
-
再分析根本原因
-
-
事后复盘:
-
记录故障处理过程
-
制定预防措施
-
六、成本优化建议
-
合理利用轻量服务器:
-
根据业务流量选择合适的配置
-
利用腾讯云轻量服务器的流量包特性
-
-
资源调度:
-
非高峰期降低资源配置
-
使用自动伸缩策略
-
-
存储优化:
-
冷热数据分离
-
使用COS存储静态资源
-
-
带宽优化:
-
启用GZIP压缩
-
使用CDN加速静态资源
-
七、总结
本方案基于五台腾讯云轻量服务器构建了一个高可用、易扩展的Web架构,主要特点包括:
-
安全防护:通过双WAF节点实现流量清洗和安全防护
-
高可用源站:双源站+实时文件同步,确保业务连续性
-
数据库可扩展:预先配置主从复制,便于后期扩展
-
全内网互联:利用腾讯云内网无带宽限制特性,实现高速数据传输
-
灵活扩展:每层都可独立扩展,满足业务增长需求
一下是扩展后的效果图:
