负载均衡

负载均衡能实现的应用场景一: 四层负载均衡

所谓四层负载均衡指的是OSI七层模型中的传输层,那么传输层Nginx已经能支持TCP/IP的控制,所以只需要对客户端的请求进行TCP/IP协议的包转发就可以实现负载均衡,那么它的好处是性能非常快、只需要底层进行应用处理,而不需要进行一些复杂的逻辑。

负载均衡能实现的应用场景二:七层负载均衡

七层负载均衡它是在应用层,那么它可以完成很多应用方面的协议请求,比如我们说的http应用的负载均衡,它可以实现http信息的改写、头信息的改写、安全应用规则控制、URL匹配规则控制、以及转发、rewrite等等的规则,所以在应用层的服务里面,我们可以做的内容就更多,那么Nginx则是一个典型的七层负载均衡SLB

四层负载均衡与七层负载均衡区别

image.png
四层负载均衡数据包在底层就进行了分发,而七层负载均衡数据包则是在最顶层进行分发、由此可以看出,七层负载均衡效率没有四负载均衡高。

但七层负载均衡更贴近于服务,如:http协议就是七层协议,我们可以用Nginx可以作会话保持,URL路径规则匹配、head头改写等等,这些是四层负载均衡无法实现的。

注意:四层负载均衡不识别域名,七层负载均衡识别域名

Nginx负载均衡与Nginx代理不同地方在于,Nginx的一个location仅能代理一台服务器,而Nginx负载均衡则是将客户端请求代理转发至一组upstream虚拟服务池.

nginx四层和七层代理的实现方式

nginx七层代理的实现方式

  1. http {
  2. upstream servers {
  3. server 192.168.2.1:80; 代理普通的80端口web服务比如nginx自己 httpd
  4. server 192.168.2.2:8080; 代理tomcat
  5. server 192.168.2.3:80 weight=3 weight关键字表示权重,也就是这个节点
  6. 被轮询到的概率会相应提高
  7. server 192.168.2.4:8080 fail_timeout=50; 这个关键字表示失败之后多久进行重连
  8. server 192.168.2.5:80 max_fails=4; 这个关键字表示最大失败次数,也就是失败多少次之后判定进入重连CD
  9. server 192.168.5.90:8080 weight=4 max_fails=3 fail_timeout=30;可以一起用
  10. }
  11. server{
  12. listen 80;
  13. server_name www.abc.com;
  14. location / {
  15. proxy_pass http://servers; 调用集群,记得调用的名称和你上边定义的名称要一样
  16. root html;
  17. }
  18. }
  19. }

nginx四层代理的实现方式

  1. worker_processes 1;
  2. events {
  3. worker_connections 1024;
  4. }
  5. stream {
  6. upstream tcp_proxy {
  7. hash $remote_addr consistent;
  8. server <target_host>:22;
  9. }
  10. server {
  11. listen 2222;
  12. proxy_connect_timeout 1s;
  13. proxy_timeout 10s;
  14. proxy_pass tcp_proxy;
  15. }
  16. }