课程名称:Java架构师-技术专家
课程章节: 第6周 集群架构:LVS+Nginx高可用集群
主讲老师:慕课讲师团:Geely、风间影月、阿神……
课程内容:
1. 四层、七层和DNS负载均衡
当我们使用集群的时候肯定会涉及到负载均衡,当有大量的并发请求来到服务器的时候,我们能够把这些请求分配到多台计算机节点上,让更多的节点来处理请求和响应,如此就可以大大缩减用户等待请求的时间。
一般选择四层做负载均衡会选择 LVS,七层负载均衡会使用 Nginx。
七层负载均衡基本上都是用于去处理 HTTP 协议的,适用于 Web 服务器。四层负载均衡主要用于针对TCP/UDP协议,四层主要是用于转发请求,而不是去处理的,它可以把用户的请求直接转发给应用去处理,七层是会处理请求的。
1.1、四层负载均衡
四层负载均衡是基于IP+端口的负载均衡,原理是通过转发请求到后台的服务器(只负责转发并且会记录当前连接是由哪个服务器处理的,后续这个连接的请求就会由同一个服务器去处理,其实就相当于是长连接,连接一旦打开就会处于连接的状态),四层是传输层的,主要基于TCP/UDP。
- F5 硬负载均衡,商业级别的负载均衡
- LVS 四层负载均衡,Linux内核的负载均衡,和协议没有关系。
- Haproxy 四层负载均衡,也支持七层负载均衡
- Nginx 四层负载均衡(stream),主要使用nginx做七层负载均衡
1.2、七层负载均衡
七层负载均衡其实是基于url和ip的负载均衡,是基于应用层的,是针对http协议的负载均衡。
- Nginx ,可以针对 http协议和邮箱协议做负载均衡。
- Haproxy 七层负载均衡。
- apache 七层负载均衡,性能不好。
1.3、DNS 地域负载均衡
会根据DNS的反馈选择最近的服务器。优点是所有的工作都交给DNS服务器去处理,会采取就近原则进行访问,会提高用户访问的速度。
2、OSI网络模型
Nginx是七层负载均衡,LVS是四层负载均衡。OSI网络模型分为七层。用户利用互联网发送消息,会经历这七道工序,另一个用户或服务器接受消息,也会历经这七道工序。
层级 | 名称 | 说明 |
---|---|---|
第七层 | 应用层 | 与用户行为交互 |
第六层 | 表示层 | 定义数据格式以及数据加密 |
第五层 | 会话层 | 创建、管理以及销毁会话 |
第四层 | 传输层 | 创建、管理请求端到响应端(端到端)的连接 |
第三层 | 网络层 | 请求端的IP地址 |
第二层 | 数据链路层 | 提供介质访问与链路管理 |
第一层 | 物理层 | 传输介质、物理媒介 |
- 应用层:应用层为用户提供交互接口,以此为用户提供交互服务,Nginx在本层,为七层负载均衡。
3. Nginx 构建 Tomcat 集群
http {
# 配置上游服务器,通过 upstream 指令块
upstream tomcats {
server 192.168.1.173;
server 192.168.1.174;
server 192.168.1.175;
}
server {
listen 80;
server_name localhost;
location / {
# 传递
proxy_pass http://tomcats;
}
}
}
保存之后,重启nginx,访问 就会发现会以轮询的方式落到配置的3台服务器里面
课程收获:
通过今天的学习,学到了:
- 负载均衡分为 四层、七层和DNS负载均衡,四层负载均衡主要是转发请求,通过LVS实现,七层可以处理请求,通过Nginx实现。Ribbon也可以实现负载均衡。
- 复习了OSI网络模型,以及每层的作用,为后续学习做准备。
- 学会了使用 nginx 的反向代理 和 负载均衡,反向代理集群就实现了 负载均衡。常见的负载均衡策略有 轮询,ip_hash、指定 weight 等。
今天的学习完毕!