1.
总体架构与设计原则
- 将服务器放在香港高防机房并结合CDN与BGP Anycast,形成多层防护链路。
- 步骤:1) 与高防服务商签署带宽与清洗策略;2) 在DNS上配置地理路由+低TTL;3) 前端配置CDN(缓存和动静分离);4) 后端使用负载均衡器(L4/L7)分发流量。
2.
接入与流量分发的具体配置步骤
- 配置BGP/Anycast:与带有Anycast支持的服务商确认ASN及前缀后,将前缀下发到各节点。
- 配置DNS负载:使用权威DNS(例如NS1/Alibaba DNS)设置地理路由和健康检查,示例:将A记录指向CDN或任意前端VIP;TTL设置为60秒以便快速切换。
3.
Linux内核与网络栈优化(逐步命令)
- 修改sysctl(在/etc/sysctl.d/99-custom.conf中添加并应用):
net.core.somaxconn=65535
net.core.netdev_max_backlog=250000
net.ipv4.tcp_max_syn_backlog=3240000
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_fin_timeout=15
net.ipv4.ip_local_port_range=1024 65535
- 应用命令:sysctl -p /etc/sysctl.d/99-custom.conf
- ulimit设置(/etc/security/limits.conf):* soft nofile 200000
- 重启网络关键服务(示例): systemctl restart networking 或重载Nginx。
4.
Web/TCP服务(以Nginx为例)的调优步骤
- Nginx配置关键项(/etc/nginx/nginx.conf):
worker_processes auto;
worker_connections 65536;
keepalive_timeout 15;
server_tokens off;
client_body_timeout 10;
sendfile on; tcp_nopush on; tcp_nodelay on;
- upstream和负载均衡:使用least_conn或ip_hash根据业务特性选择;启用健康检查(如nginx-plus或keepalived + http_check)。
- 变更生效:nginx -t && systemctl reload nginx。
5.
流量清洗与拦截实操(iptables/ipset与高防联动)
- 使用ipset集中管理黑名单,示例:
ipset create attackers hash:ip maxelem 1000000
ipset add attackers 1.2.3.4
iptables -I INPUT -m set --match-set attackers src -j DROP
- 自动化封禁脚本(示例思路):1) 从Nginx或WAF日志筛选短时间内高频IP;2) 加入ipset并推送到所有节点;3) 记录到黑名单数据库并设置过期时间。
- 与高防服务商配合:遇到不可控流量时发起清洗工单/API调用将流量引导到清洗,然后再回切。
6.
监控体系搭建(Prometheus + Grafana + ELK 实操)
- 部署Prometheus:下载并配置prometheus.yml,添加node_exporter与blackbox_exporter的scrape target。
- 安装Node Exporter:在每台服务器运行user: wget, tar, ./node_exporter &,并配置systemd服务文件。
- 部署Grafana并导入面板:推荐导入node-exporter与nginx exporter的dashboard模板,创建CPU、内存、网卡流量、连接数、socket状态、disk IO等图表。
- 日志集中:部署Filebeat -> Logstash -> Elasticsearch,或Filebeat直连ES;Nginx和WAF日志需要解析出URL、IP、状态码、请求速率等字段。
7.
告警策略与自动化响应(Alertmanager与Webhook脚本)
- Prometheus Alertmanager配置告警规则(示例):
- name: HighNetIn
expr: rate(node_network_receive_bytes_total[1m]) > 100000000
for: 30s
- Alertmanager配置接收人(邮件、Slack、企业微信)并设置告警抑制和分组。
- 自动化脚本:Alertmanager通过Webhook触发脚本,脚本示例功能:临时拉高防火墙规则、在负载均衡上下线节点、触发云端弹性扩容、或调用高防API请求清洗。示例调用:curl -X POST http://ops.example.com/mitigate -d '{"ip":"1.2.3.4","action":"block"}'
8.
演练、容量规划与应急预案
- 定期演练:每季度做一次流量演练(模拟大流量和DDoS),步骤:1) 在测试环境或低峰期间逐步放大流量;2) 验证自动化脚本是否按预期运行;3) 记录RTO/RPO和瓶颈点。
- 容量规划:用历史流量做P95/P99分析,按峰值的1.5~2倍作为预留;与高防商签署峰值带宽与清洗能力SLA。
9.
运维日常列表与快速故障排查步骤
- 日常检查清单:节点可用性、CPU/内存/网络、队列长度、Nginx active connections、磁盘IO。
- 故障排查示例流程:1) 判断是网络还是应用问题(ping/traceroute/tcpdump);2) 查看Nginx状态与错误日志(/var/log/nginx/error.log);3) 查看node_exporter/Grafana对应图表;4) 执行临时限流或下线节点,通知高防开启清洗。
10.
问题:高峰时如何快速判断是否进入DDoS而非业务量激增?
- 回答:先看请求特征:DDoS通常是大量相同URI或单IP短时高并发、User-Agent异常、请求来源国别集中。步骤:1) 用Elasticsearch/Kibana聚合短时间内同IP请求次数;2) 用tcpdump抓包看TCP三次握手是否完成;3) 检查上游CDN/高防是否报告异常流量模式。
11.
问题:在发现清洗需要时,如何无缝触发并回切?
- 回答:建议制作标准化API流程:1) 通过Alertmanager webhook调用运维API触发高防清洗并回写工单ID;2) 将流量通过BGP/Anycast或CNAME切到清洗链路;3) 清洗完成后按低TTL DNS或路由策略回切;4) 回切后验证流量和业务指标恢复正常。
12.
问题:如何保证这些策略在突发情况下可可靠执行?
- 回答:确保自动化与人工双轨并行:1) 自动化脚本需幂等并有回滚;2) 制定清晰的Runbook并定期演练;3) 设置告警分级并通知不同层级人员;4) 与高防/运营/网络工程建立联络链,保证在高峰时能快速协同。
来源:速度快香港高防服务器保障高峰流量稳定的运维与监控策略