探讨一下2/3/4/7层的负载均衡理论和实操

负载均衡(Load Balance)一直是一名合格的运维避不开的话题,今天想聊聊多层间的LB。

1.大家常用到一般都是4层的IP+端口的LB,通过虚拟IP+端口接受请求,然后分配到真实节点,7层则是基于url应用层信息的LB通过虚拟的url或者主机名接受请求,然后分配到真实节点,;其中也有基于2层mac地址的LB,通过虚拟的max地址接收请求,然后分配到真实的mac地址和基于ip的3层LB,通过一个虚拟的IP地址接收请求,然后分配到真实节点.

2.关于多层间的负载,例如4层到7层,就是在负载均衡时,依据4层或7层的信息来决定如何转发流量。4层的负载均衡其实是3层的VIP IP+4层的端口号,来决定哪些流量需要做负载均衡,对需要处理的流量进行NAT转发,转发至后端节点后,并记录改流量是哪台lb处理的,后续的流量走同样转发到同一台服务器处理。7层的负载均衡,也是在4层的基础上,如何再考虑应用层的特征。比如针对一个web的负载,我们用3层的vip ip+4层的80端口,再或者判别7层的url,浏览器类别,语言,图片等来决定如何负载均衡。

3.L4 switch (四层交换)又叫4层负载均衡,工作在osi的第四层,他不理解应用协议(http/ftp/mysql等)。常见的LVS,f5

4.L7 switch (7层交换)又叫7层负载均衡,工作在osi的第七层,可以理解应用协议。常见的有haproxy

各层间负载均衡都有自己的优势,要根据不同的应用需求选择合适的LB

实操部分:

1.nginx的负载均衡

windows环境: Java SE 8  ,windows nginx 8.5.34 , nginx 1.14.0(我家里没装虚拟机)

tomcat webapps:里面分别是一个html文件

探讨一下2/3/4/7层的负载均衡理论和实操_第1张图片

nginx nginx.conf:将不同地区以4层负载的形式转发到不同LB,由各LB再次均衡各节点(我这里只写了一个节点)

http {
#某某亚洲地区综合业务管理平台
    upstream asia {
    server 127.0.0.1:881 weight=1 max_fails=3 fail_timeout=20s;
    }
#某某非洲地区综合业务管理平台
    upstream africa {
    server 127.0.0.1:881 weight=1 max_fails=3 fail_timeout=20s;
    }
server  {
    listen 80;
    server_name localhost;
    index index.html;
	location /asia {
        proxy_pass http://asia;
        proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
        }
		
    location /africa {

        proxy_pass http://africa;
        proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
        }
	
    }

}

今天有点事,改天接着写。

你可能感兴趣的:(安全相关,开源综合)