• Nginx 四层负载均衡


    四层负载均衡概述

    四层负载均衡是基于IP+端口的负载均衡,七层负载均衡是基于URL或主机名等应用层信息的负载均衡。
    其他层负载均衡(转载):

    二层负载均衡(MAC)
    一般是用虚拟MAC地址方式,外部对虚拟的MAC地址请求,负载均衡接收后分配后端真实的MAC地址响应。
    三层负载均衡(IP)
    一般采用虚拟IP地址方式,外部对虚拟的IP地址请求,负载均衡接收后分配后端真实的IP地址响应。
    四层负载均衡(TCP)
    用虚拟 IP+PORT 接收请求,再转发到对应的真实的IP+PROT 服务器进程端口
    七层负载均衡(HTTP)
    用虚拟的URL或主机名接收请求,再转发到对应的真实的处理域名的服务器

    四层负载均衡架构中客户端向负载均衡发送 SYN 请求建立第一次连接,通过配置的负载均衡算法选择一台后端服务器,并且将报文中的 IP 地址信息修改为后台服务器的IP地址信息,因此,TCP 三次握手连接是与后端服务器直接建立起来的。
    七层负载均衡设备要根据真正的应用层内容再选择服务器,只能先与负载均衡设备进行 TCP 连接,然后负载均衡设备再与后端服务器建立另外一条 TCP 连接通道。七层设备在网络性能损耗会更多一些,因为只有先代理了后端服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容的报文,然后再根据该报文中的特定字段,再加上七层负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

    结论:

    四层负载均衡中,TCP连接的三次握手是客户端和应用服务器直接建立,四层负载均衡设备只是起到一个类似路由器的转发动作。
    七层负载均衡中,TCP连接需要建立两次:客户端需要和七层负载均衡设备建立,七层负载均衡设备需要和后端服务器建立,所以效率低于四层负载均衡。

    配置七层负载均衡

    四层负载均衡设备可以对七层负载均衡设备实现负载均衡,配置两台七层负载均衡服务器,作为四层负载均衡服务器的后端服务器,使用 Nginx服务 实现七层负载均衡:

    # LB01 
    # 配置文件
    [root@lb01 ~]# cat /app/nginx/conf/conf.d/all.conf 
    upstream all {
    	server 172.16.1.8:80;
    	server 172.16.1.7:80;
    	server 172.16.1.9:80;
    	check interval=3000 rise=2 fall=3 timeout=1000 type=tcp;
    }
    server {
            listen  8005;
            server_name wecenter.wqh.com blog.wqh.com;
            location / {
                    proxy_pass http://all;
                    include proxy_params;
            }
    	    location /check {
            	check_status;
        	}
    }
    # proxy_parmas 文件内容略
    
    # LB02 
    # 配置文件
    [root@lb02 ~]# cat /app/nginx/conf/conf.d/all.conf 
    upstream all {
    	server 172.16.1.8:80;
    	server 172.16.1.7:80;
    	server 172.16.1.9:80;
    	check interval=3000 rise=2 fall=3 timeout=1000 type=tcp;
    }
    server {
            listen  8006;
            server_name wecenter.wqh.com blog.wqh.com;
            location / {
                    proxy_pass http://all;
                    include proxy_params;
            }
    	    location /check {
            	check_status;
        	}
    }
    # proxy_parmas 文件内容略
    

    配置四层负载均衡

    使用 Nginx服务 实现四层负载均衡,此处涉及到 ngx_stream_core_module 模块,需要注意的是此模块配置是和 http层 同一级别的,在主配置文件 nginx.conf 中需要和 events层、http层 并列,此处使用 include 配置, 将 stream层 的子配置文件全部放到对应的目录中,方便集中管理:

    # FLB01
    [root@flb01 nginx]# cat nginx.conf 
    ......
    events {
            ......
    }
    include stream/*.conf;
    http {
            ......
    }
    [root@flb01 nginx]# cat stream/l4.conf 
    stream {
        log_format  proxy '$remote_addr $remote_port - [$time_local] $status $protocol '
                      '"$upstream_addr" "$upstream_bytes_sent" "$upstream_connect_time"' ;
        access_log /var/log/nginx/proxy.log proxy;
    	upstream flb {
    		server 172.16.1.5:8005;
    		server 172.16.1.6:8006;
    	}
    	server {
    		listen 80;
    		proxy_connect_timeout 3s;
    		proxy_timeout 3s;
    		proxy_pass flb;
    	}
    }
    
  • 相关阅读:
    分布式文件系统 ~MogileFS~
    使用HAproxy如何实现web站点的动静分离
    MySQL 服务器变量 数据操作DML-视图
    MySQL 查询缓存
    NGINX 如何防盗链
    Apache 如何反向代理tomcat并且实现Session保持
    Linux 内核编译步骤及配置详解
    NGINX如何反向代理Tomcat并且实现Session保持
    LogStash日志分析系统
    bash编程之 ~制作Mini Linux系统~
  • 原文地址:https://www.cnblogs.com/zzzwqh/p/12990707.html
Copyright © 2020-2023  润新知