概述 :
Wo - 公号「八点半技术站」的创作者 - Bruce.D (姓氏:豆)。
今日主题:负载均衡的部署,通过创建后端集群,分担每一台服务器的压力,能够实现大量的请求处理。即使某一台挂掉,也不会有什么太大影响。(本篇阅读预计花费:4分钟)
欢迎各位加入社群,技术交流不分语言、不分高低 。
内容 :
分成3个模块点讲解给各位、通俗易懂:
- 负载均衡定义
- 反向代理定义
- 反向代理实战
负载均衡定义:
负载平衡(Load balancing)是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
使用带有负载平衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软件和硬件来完成。
主要作用是将大量作业合理地分摊到多个操作单元上进行执行,用于解决互联网架构中的高并发和高可用的问题。
反向代理定义:
反向代理在计算机网络中是代理服务器的一种。用户不直接请求服务器,而是请求反向代理服务器,再由反向代理服务器转发请求到其他服务器。
客户端只知道反向代理的 IP 地址,而不知道在代理服务器后面的服务器集群的存在。反向代理是实现负载均衡的一种方式。
反向代理的作用:
- 复用 DNS 查询
- 加密和 SSL 加速
- 负载均衡
- 缓存静态资源
- 压缩
- 减速上传
- 安全
- 外网发布
反向代理实战:
接下来我们使用 nginx 配置一个反向代理。
代码语言:javascript复制worker_processes 4;
events{
worker_connections 1024;
}
http{
# 定义负载均衡设备的 ip 及设备状态
upstream firsttest {
ip_hash; # 可选。每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。
server 111.13.103.91 weight=3; # 设置权重为3,他被请求的概率是 3 / 4 = 75%。
server 111.13.179.222;
server 111.13.179.333 down; # 表示当前的 server 暂时不参与负载。
server 111.13.179.444 backup; # 其它所有的非 backup 机器 down 或者忙的时候,才会被请求。
server 111.13.179.555;
}
server{
listen 8080;
# 匹配根路由,然后代理到 firsttest 网络上。
location / {
proxy_pass http://firsttest;
}
}
}
总结:
小知识:反向代理和正向代理
正向代理,服务器端无感知,因为服务器始终只和代理服务器通信,并不知道代理服务器还会向其他端转发信息。
反向代理,客户端无感知,因为客户端始终只和代理服务器通信,并不知道代理服务器还会将请求转发到其他的服务器。