• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

Linux运维架构】LNMP企业架构之四层负载均衡

Linux架构 lixian 2年前 (2020-03-06) 480次浏览 0个评论 扫描二维码
文章目录[隐藏]

一、四层负载均衡概述

1、四层+七层来做负载均衡,四层可以保证七层的负载均衡的高可用性;如:nginx就无法保证自己的服务高可用,需要依赖LVS或者keepalive。

2、tcp协议的负载均衡,有些请求是TCP协议的(mysql、ssh),或者说这些请求只需要使用四层进行端口的转发就可以了,所以使用四层负载均衡。

3.四层可以做:
mysql读从库的负载均衡
跳板机的端口映射

二、四层负载均衡+七层负载均衡大规模集群架构

Linux运维架构】LNMP企业架构之四层负载均衡

四层负载均衡总结

1、四层负载均衡仅能转发TCP/IP协议、UDP协议、通常用来转发端口,如:tcp/22、udp/53;

2、四层负载均衡可以用来解决七层负载均衡端口限制问题;(七层负载均衡最大使用65535个端口号)

3、四层负载均衡可以解决七层负载均衡高可用问题;(多台后端七层负载均衡能同事的使用)

4、四层的转发效率比七层的高得多,但仅支持tcp/ip协议,不支持http和https协议;

5、通常大并发场景通常会选择使用在七层负载前面增加四层负载均衡。

三、Nginx四层负载均衡配置

1.环境准备

主机 外网IP 内网IP 身份
lb4 10.0.0.3 172.16.1.3 四层负载均衡
lb01 10.0.0.4 172.16.1.4 七层负载均衡
lb02 10.0.0.5 172.16.1.5 七层负载均衡

注意:两个七层负载均衡要一模一样,根据上节内容进行配置,这里就不一一概述了。

四、配置四层负载均衡

1.创建四层负载配置的目录

[root@lb4 nginx]# mkdir /etc/nginx/conf.c

2.配置四层负载均衡

四层负载均衡stream模块跟http模块同级别,不能配置在http里面。
nginx配置主配置文件里面一个include包含的语句。

events {
    worker_connections  1024;
}

include /etc/nginx/conf.c/*.conf;
    
http {
 ... 
}

编写配置文件

[root@lb4 nginx]# vim /etc/nginx/conf.c/lb_proxy.conf
stream {
    upstream lbserver {
        server 172.16.1.4:80;
        server 172.16.1.5:80;
    }

    server {
        listen 80;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass lbserver;
    }
}

重启nginx

[root@lb4 nginx]# systemctl restart nginx

如果重启报错

[root@lb4 nginx]# rm -rf /etc/nginx/conf.d/*

3.配置四层负载均衡日志

[root@lb4 nginx]# vim /etc/nginx/conf.c/lb_proxy.conf
stream {
    log_format  main  '$remote_addr $remote_port - [$time_local] $status $protocol '
               '"$upstream_addr" "$upstream_bytes_sent" "$upstream_connect_time"' ;

    access_log  /var/log/nginx/lb4_access.log  main;

    upstream lbserver {
        server 172.16.1.4:80;
        server 172.16.1.5:80;
    }

    server {
        listen 80;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass lbserver;
    }
}

五、nginx四层负载均衡端口转发

1.使用nginx四层负载均衡实现tcp转发

请求负载均衡 5555 —> 172.16.1.7:22; web01
请求负载均衡 6666 —> 172.16.1.51:3306;

2.配置nginx四层负载均衡实现tcp的转发

[root@lb03 conf.c]# vim /etc/nginx/conf.c/lb_domain.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;

#定义转发ssh的22端口
    upstream ssh_7 {
            server 10.0.0.7:22;
    }
#定义转发mysql的3306端口
    upstream mysql_51 {
            server 10.0.0.51:3306;
    }
    server {
            listen 5555;
            proxy_connect_timeout 3s;
            proxy_timeout 300s;
            proxy_pass ssh_7;
    }

    server {
            listen 6666;
            proxy_connect_timeout 3s;
            proxy_timeout 3s;
            proxy_pass mysql_51;
    }
}

3.验证配置文件。重新加载服务

[root@lb03 conf.c]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@lb03 conf.c]# nginx -s reload

4.重新开个会话窗口,查看端口转发是否正确

Linux运维架构】LNMP企业架构之四层负载均衡


本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:Linux运维架构】LNMP企业架构之四层负载均衡
喜欢 (2)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到