揭秘 LINUX DO 网站服务器架构

总体思想:遇事不决先分层,一层不够加一层。

先放个 mermaid 架构图:

flowchart TD
    %% 用户层
    User[👥 用户访问] 
    
    %% Cloudflare层
    CF[☁️ Cloudflare<br>🛡️ CDN + DDoS防护]
    
    %% 抗投诉VPS层
    LB[⚖️ 抗投诉VPS<br>🔄 负载均衡器]
    
    %% 服务器群
    SERVER[🏢 高性能裸金属服务器群<br>🌐 Web + 数据库 + 缓存<br>💬 Discourse系统]
    
    %% 高防出口VPS
    PROXY[🛡️ 高防VPS<br>🔒 对外访问统一出口]
    
    %% 外部网络
    INTERNET[🌍 互联网]
    
    %% 连接关系
    User --> CF
    CF --> LB
    LB --> SERVER
    
    SERVER --> PROXY
    
    PROXY --> INTERNET
    
    %% 样式定义
    classDef userStyle fill:#e1f5fe,stroke:#01579b,stroke-width:3px,color:#000
    classDef cfStyle fill:#ff6f00,stroke:#e65100,stroke-width:3px,color:#fff
    classDef lbStyle fill:#2e7d32,stroke:#1b5e20,stroke-width:3px,color:#fff
    classDef serverStyle fill:#1565c0,stroke:#0d47a1,stroke-width:3px,color:#fff
    classDef proxyStyle fill:#c62828,stroke:#8e0000,stroke-width:3px,color:#fff
    classDef internetStyle fill:#455a64,stroke:#263238,stroke-width:3px,color:#fff
    
    %% 应用样式
    class User userStyle
    class CF cfStyle
    class LB lbStyle
    class SERVER serverStyle
    class PROXY proxyStyle
    class INTERNET internetStyle

上图就是 LINUX DO 当前的网站服务器架构简图。省略了一些细节,包括改造后的 Discourse 服务器群,这不影响本文需要表达的东西。

可以看出来,在 Discourse 的前后,我们分别加了一层:

  1. Cloudflare 到 Discourse 中间添加了一个抗投诉的负载均衡层,它起到两个作用:抗 DMCA 投诉 + 负载均衡多台 Discourse web 服务器。
  2. 在 Discourse 后面添加了一个出口层,Discourse 对外的网络访问均经过它,从而隐藏真实的集群 IP,防止被 DDoS。当然了,即便它被打死,对 Discourse 影响也是极其有限的(只是一些链接抓取暂时不能工作,都还在失败队列里定时尝试)。

这两层服务器都是性能普通的 VPS,但它们都颇具功能性,为 LINUX DO 的稳定和安全护航。上面的软件和配置都已经容器化,可以随时替换到其他机器甚至其他供应商,而不必在被投诉和被 DDoS 的时候整个网站宕机、搬迁,非常灵活。

当然,这个架构是这么长时间演化过来的,未来应该也会根据实际情况做出调整。鬼知道这中间我踩了多少坑 :tieba_087:

1070 Likes

第一个吗?

24 Likes

前排前排

9 Likes

前排前排

7 Likes

火速前排

7 Likes

前排前排!

7 Likes

看不懂,始皇牛逼

8 Likes

前排前排

7 Likes

前排围观

6 Likes

前排学习

6 Likes

前排前排

7 Likes

前排占坑瓜子八宝粥

5 Likes

很快啊 就没前排了

5 Likes

牛犇!!!

4 Likes

厉害厉害了膜拜

3 Likes

强的一匹

3 Likes

后排,支持neo!

4 Likes

前排前排

3 Likes

前排前排

5 Likes

我居然看完以后再前排,我有问题

2 Likes