Nginx 与负载均衡
-
反向代理
-
将用户请求转发给内部服务器,保护内网拓扑结构
/ Django-1 user -> proxy ── Django-2 \ Django-3
-
可以解析用户请求,代理静态文件
-
限流
-
白名单,黑名单
-
-
负载均衡
- 轮询: round robin (默认)
- 权重: weight
- IP哈希: ip_hash
- 最小连接数: least_conn
-
随机
-
其他负载均衡
- F5: 硬件负载均衡设备, 性能最好, 价格昂贵
- LVS: 工作在 4层 的专业负载均衡软件, 只有 3 种负载均衡方式, 配置简单
- HAProxy: 工作在 4层 到 7层 的专业负载均衡软件, 支持的负载均衡算法丰富
- 性能比较: F5 > LVS > HAProxy > Nginx
-
LVS 的优势
-
常规负载均衡
进出都要经过负载均衡服务器. 响应报文较大, 面对大量请求时负载均衡节点本身可能会成为瓶颈
发送请求: User -> LoadBalancer -> Server 接收响应: User <- LoadBalancer <- Server
-
LVS DR 模式
LoadBalancer 与 Server 同在一个网段, 共享同一个公网 IP, 响应报文可以由 Server 直达 User
发送请求: User -> LoadBalancer -> Server 接收响应: User <───────────────── Server
-
-
可以不使用 Nginx, 直接用 gunicorn 吗?
- Nginx 相对于 Gunicorn 来说更安全,更稳定
- Nginx 可以用作负载均衡.
-
处理静态文件相关配置
location /static/ { root /project/bbs/; expires 30d; access_log off; } location /media/ { root /project/bbs/; expires 30d; access_log off; }
服务器架构
- 架构研究的 5 个方面
- 高性能
- 高可用
- 可伸缩性
- 可扩展性
- 安全性
- 简单、实用的服务器架构图
- 分层结构: 功能模块解耦合
- 每层多台机器: 有效避免单点故障
- 每层均可扩容: 能通过简单的方式提升服务器的性能、可用性、并发能力