精华内容
下载资源
问答
  • 配置nginx四层转发

    千次阅读 2019-05-16 13:30:44
    所谓四层就是基于IP+端口的负载均衡,通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器七层就是基于URL等应用层信息的负载均衡。 3306端口基本不...

    所谓四层就是基于IP+端口的负载均衡,通过虚拟IP+端口接收请求,然后再分配到真实的服务器;七层通过虚拟的URL或主机名接收请求,然后再分配到真实的服务器七层就是基于URL等应用层信息的负载均衡。
    3306端口基本不对外开放。我们如果想通过外网直接访问mysql怎么做呢,这里我们可以使用nginx端口转发来实现。

    1、安装nginx

    ./configure --prefix=/application/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-stream
    make
    make install
    
    #这里必须要加上--with-stream ,四层转发主要是通过这个模块来实现的
    

    2、修改nginx的配置文件

    stream {  #类似于7层的http段
    	upstream mysql {
    	    #hash $remote_addr consistent;
    		server 172.16.1.202:3306 weight=1 max_fails=3 fail_timeout=10s;
    	}
    
    	server {
    		listen  3307;
    		proxy_pass mysql;
    		proxy_timeout 600s;
    		proxy_connect_timeout 30s;  
    	} 
    }
    

    需要注意的是这个配置要写在http外边

    3、重启nginx
    4、检查3307端口是否已经起来
    5、连接mysql

    mysql -uroot -p123456 -h10.0.0.199 -P3307
    内网mysql服务器要先授权10.0.0.199的内网ip地址
    10.0.0.199 是nginx的外网ip
    

    6、如果已经安装了nginx,想要再添加stream模块
    我们先使用nginx -V 查看之前的编译参数
    然后用之前的编译参数加上 –with-stream

    ./configure --prefix=/application/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-stream
    然后执行 make
    这里千万不要执行make install
    
    到这里,我们先备份之前的nginx启动文件
    cp /application/nginx/sbin/nginx(,.bak)
    然后拷贝编译目录下的cp ./objs/nginx /application/nginx/sbin/nginx
    这样就添加上了,然后使用nginx -V查看
    
    展开全文
  • 之前面试的时候被问了下,nginx四层负载均衡和七层负载的区别,脑袋一懵,和网络的7层架构和四层架构弄混了,结果一塌糊涂,大家可以大概看下负载均衡的我所能理解的,网上比我详细的很多,欢迎批评

    网络的架构体系

    1.7层架构

    • 1.1:物理层:定义物理设备的标准.主要作用是传输比特流
    • 1.2:数据链路层:作用是把物理层传输过来的数据进行MAC地址的封装和解封装,这一层的数据叫帧,这一层工作的设备是交换机
    • 1.3:网络层:从下层接受到的数据进行ip的封装和解封装,在这一层的设备是路由器,这一层的数据叫数据包
    • 1.4:传输层:定义传输数据的协议和端口号,主要是把下层接受到的数据进行分段处理,在进行组装,这一层的数据叫做段
    • 1.5:会话层:建立数据传输的通路,发起会话请求或者是接受会话请求
    • 1.6:表示层:把接收到的数据进行解释,压缩和解压,加密和解密
    • 1.7:应用层:主要是终端的一些应用,浏览器啊,app之类的

    2.4层架构

    • 2.1:应用层:1.5,1.6,1.7的集合
    • 2.2:传输层:1.4
    • 2.3:网络层:1.3
    • 2.4:链路层:就是1.1和1.2的集合

    3.nginx的四层和七层负载均衡的区别

    • 3.1:四层就是通过虚拟的ip加端口来做负债均衡,七层是通过虚拟的url等应用层信息来做负载均衡
    • 3.2:四层负载均衡通过ip和端口来确定选择哪台服务器来做连接,就像一个中转站一样,把报文中的目标ip地址修改为后端的服务器地址,
      为了回包,甚至会修改请求中的报文.而七层负载均衡会代理总服务器来和客户做连接,根据发来的报文中的内容和轮询算法来选择后端的服务器,
      也就是说需要和后端的服务器再建立一个新的连接,建立两个,而四层只需要一个连接.

    4.nginx的轮询算法

    • 4.1:轮询算法(Round Robin):也就是把后台服务器从一数到n,然后按顺序分
    • 4.2:权重轮询(Weight Round Robin):把后台服务器标注一个权重(可设置),然后权重比较高的按照权重比例能分得更多的请求,也就是说,值设置的越大,
      请求分配的越多
    • 4.3:随机均衡(Random):随机分配
    • 4.4:权重随机均衡(Weight Robin):和权重轮询类似,但是请求分担时是随机选择的过程
    • 4.5:响应速度均衡(Response Robin):负载均衡向后端服务器发出一个探测请求,那个回应速度最快就使用哪个,但是这里的响应速度是负载均衡设备到服务器的,
      不是客户端到服务器的响应速度
    • 4.6:最少连接数(Least Connection):负载均衡设备中会记录各个服务器的连接数,如果有新的请求,就会分配给连接数最少的服务器,适用于长连接
    • 4.7:处理能力均衡:把请求分配给处理负荷最轻的服务器,适用于第七层负载均衡
    • 4.8:DNS响应均衡(Flash DNS):客户端会给所有的负载均衡设备发送解析域名的请求,然后同时返回ip给客户端,客户端取最先收到的域名解析ip来继续请求服务.
      针对全局负载均衡的情况,对本地负载是没有意义的
    展开全文
  • Nginx四层负载均衡

    2019-09-25 11:16:27
    Nginx四层负载均衡概述 Nginx如何配置四层负载均衡 使用nginx四层负载均衡实现tcp的转发 Nginx四层负载均衡概述 什么是四层负载均衡 四层负载均衡是基于传输层协议包来封装的(如:TCP/IP),那我们前面...

    Nginx四层负载均衡概述

    什么是四层负载均衡

    四层负载均衡是基于传输层协议包来封装的(如:TCP/IP),那我们前面使用到的七层是指的应用层,他的组装在四层的基础之上,无论四层还是七层都是指的OSI网络模型。


    四层负载均衡应用场景

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

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


    四层 + 七层构建大规模集群架构使用场景

    img


    四层负载均衡总结

    1、四层负载均衡仅能转发TCP/IP协议、UDP协议、通常用来转发端口,如:tcp/22、udp/53;
    2、四层负载均衡可以用来解决七层负载均衡端口限制问题;(七层负载均衡最大使用65535个端口号)
    3、四层负载均衡可以解决七层负载均衡高可用问题;(多台后端七层负载均衡能同事的使用)
    4、四层的转发效率比七层的高得多,但仅支持tcp/ip协议,不支持http和https协议;
    5、通常大并发场景通常会选择使用在七层负载前面增加四层负载均衡。


    nginx四层负载均衡场景实践

    Nginx如何配置四层负载均衡

    1、通过访问负载均衡的5555端口,实际是后端的web01的22端口在提供服务;

    2、通过访问负载均衡的6666端口,实际是后端的mysql的3306端口在提供服务。

    先配置两台lb负载均衡

    [root@lb02 ~]# cat /etc/yum.repos.d/nginx.repo 
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    
    #在lb02上安装nginx
    [root@lb02 yum.repos.d]# yum install -y nginx
    
    #在lb02上同步lb01的所有nginx相关配置
    [root@lb02 ~]# scp -r root@172.16.1.5:/etc/nginx /etc/
    
    
    #启动nginx
    [root@lb02 conf.d]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@lb02 conf.d]# systemctl enable nginx
    Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
    [root@lb02 conf.d]# nginx

    1.创建存放四层负载均衡配置文件的目录

    [root@lb03 ~]# vim /etc/nginx/nginx.conf
    events {
            ....
    }
    include /etc/nginx/conf.c/*.conf;
    http {
            .....
    }
    
    [root@lb03 ~]# mkdir /etc/nginx/conf.c

    2.配置四层负载均衡

    [root@lb03 conf.c]# cat lb_domain.conf 
    stream {
        upstream lb {
                server 172.16.1.5:80 weight=5 max_fails=3 fail_timeout=30s;
                server 172.16.1.6:80 weight=5 max_fails=3 fail_timeout=30s;
        }
    
        server {
                listen 80;
                proxy_connect_timeout 3s;
                proxy_timeout 3s;
                proxy_pass lb;
        }
    }
    [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
    
    #配置本机hosts解析后浏览器访问并查看nginx日志

    3.四层负载均衡开启日志

    #四层负载均衡是没有access的日志的,因为在nginx.conf的配置中,access的日志格式是配置在http下的,而四层复杂均衡配置实在http以外的;
    
    #如果需要日志则需要配置在stream下面
    [root@web03 conf.c]# cat 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;
        upstream lb {
                server 172.16.1.5:80 weight=5 max_fails=3 fail_timeout=30s;
                server 172.16.1.6:80 weight=5 max_fails=3 fail_timeout=30s;
        }
    
        server {
                listen 80;
                proxy_connect_timeout 3s;
                proxy_timeout 3s;
                proxy_pass lb;
        }
    }

    域名解析到lb03上,再次登录

    查看日志:

    [root@lb03 ~]# tail -f /var/log/nginx/proxy.log
    
    541055 - lb03 - TCP - 10.0.0.1 - 1656 - 80 - 75.856 - 200 - 28/Aug/2019:03:22:50 +0800
    344557 - lb03 - TCP - 10.0.0.1 - 1658 - 80 - 75.850 - 200 - 28/Aug/2019:03:22:50 +0800
    284545 - lb03 - TCP - 10.0.0.1 - 1654 - 80 - 75.957 - 200 - 28/Aug/2019:03:22:50 +0800
    225560 - lb03 - TCP - 10.0.0.1 - 1659 - 80 - 75.858 - 200 - 28/Aug/2019:03:22:50 +0800
    

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

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

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

    [root@lb4-01 ~]# cat /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;
        }
    }

    使用本地连接

    ssh root@10.0.0.4 5555
    会自动跳转到端口所指定的服务器上

    1689287-20190828153657362-1527434234.png

    输入密码
    1689287-20190828153714113-474945373.png

    自动连接到5555端口指定的服务器,跳转到web01
    1689287-20190828153733398-582307463.png

    转载于:https://www.cnblogs.com/gongjingyun123--/p/11424424.html

    展开全文
  • 目录 ... Nginx四层负载均衡概述 什么是负载均衡 负载均衡应用场景 四层,七层集群架构 四层负载均衡总结 Nginx如何配置四层负载均衡 nginx四层负载均衡端口转发 Nginx四层负载均衡...

    Nginx四层负载均衡概述

    什么是负载均衡

    四层负载均衡是基于传输层协议包来封装的(如:TCP/IP),那我们前面使用到的七层是指的应用层,他的组装在四层的基础之上,无论四层还是七层都是指的OSI网络模型。

    负载均衡应用场景

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

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

    四层,七层集群架构

    1690286-20190828184453468-1825399260.png

    四层负载均衡总结

    1、四层负载均衡仅能转发TCP/IP协议、UDP协议、通常用来转发端口,如:tcp/22、udp/53;
    2、四层负载均衡可以用来解决七层负载均衡端口限制问题;(七层负载均衡最大使用65535个端口号)
    3、四层负载均衡可以解决七层负载均衡高可用问题;(多台后端七层负载均衡能同事的使用)
    4、四层的转发效率比七层的高得多,但仅支持tcp/ip协议,不支持http和https协议;
    5、通常大并发场景通常会选择使用在七层负载前面增加四层负载均衡。

    Nginx如何配置四层负载均衡

    1、通过访问负载均衡的5555端口,实际是后端的web01的22端口在提供服务;

    2、通过访问负载均衡的6666端口,实际是后端的mysql的3306端口在提供服务。

    先配置两台lb负载均衡

    [root@lb02 ~]# cat /etc/yum.repos.d/nginx.repo 
    [nginx-stable]
    name=nginx stable repo
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    gpgcheck=0
    enabled=1
    gpgkey=https://nginx.org/keys/nginx_signing.key
    
    #在lb02上安装nginx
    [root@lb02 yum.repos.d]# yum install -y nginx
    
    #在lb02上同步lb01的所有nginx相关配置
    [root@lb02 ~]# scp -r root@172.16.1.5:/etc/nginx /etc/
    
    
    #启动nginx
    [root@lb02 conf.d]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@lb02 conf.d]# systemctl enable nginx
    Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
    [root@lb02 conf.d]# nginx

    1.创建存放四层负载均衡配置文件的目录

    [root@lb02 ~]# vim /etc/nginx/nginx.conf
    events {
            ....
    }
    include /etc/nginx/conf.c/*.conf;
    http {
            .....
    }
    
    [root@lb02 ~]# mkdir /etc/nginx/conf.c

    2.配置四层负载均衡

    [root@lb02 conf.c]# cat lb_domain.conf 
    stream {
        upstream lb {
                server 172.16.1.5:80 weight=5 max_fails=3 fail_timeout=30s;
                server 172.16.1.6:80 weight=5 max_fails=3 fail_timeout=30s;
        }
    
        server {
                listen 80;
                proxy_connect_timeout 3s;
                proxy_timeout 3s;
                proxy_pass lb;
        }
    }
    [root@web03 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@web03 conf.c]# nginx -s reload
    
    #配置本机hosts解析后浏览器访问并查看nginx日志

    3.四层负载均衡开启日志

    #四层负载均衡是没有access的日志的,因为在nginx.conf的配置中,access的日志格式是配置在http下的,而四层复杂均衡配置实在http以外的;
    
    #如果需要日志则需要配置在stream下面
    [root@lb01 conf.c]# cat 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;
        upstream lb {
                server 172.16.1.5:80 weight=5 max_fails=3 fail_timeout=30s;
                server 172.16.1.6:80 weight=5 max_fails=3 fail_timeout=30s;
        }
    
        server {
                listen 80;
                proxy_connect_timeout 3s;
                proxy_timeout 3s;
                proxy_pass lb;
        }
    }

    nginx四层负载均衡端口转发

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

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

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

    [root@lb4-01 ~]# cat /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;
        }
    }

    转载于:https://www.cnblogs.com/1naonao/p/11425827.html

    展开全文
  • Nginx 四层负载均衡及反向代理配置

    千次阅读 2019-12-19 14:29:57
    Nginx 四层负载均衡及反向代理配置 前言 博客书 版本说明 linux.centos=7 mysql=8.0.18 nginx=1.16.1 相关链接 nginx 官网:http://nginx.org/ nginx 官网 tcp/udp 配置:...
  • Nginx四层反向代理

    千次阅读 2020-01-25 10:38:15
    安装Nginx yum install epel-release yum install nginx 安装完成后启动Nginx验证一下安装。 systemctl start nginx 或者直接使用命令启动 nginx 通过浏览器访问一下页面测试一下Nginx的安装。 配置反向代理 备份...
  • nginx四层代理原理

    千次阅读 2020-06-11 00:26:05
    nginx一般使用七层代理也就是http应用层代理,可以反向代理和负载均衡。但是项目要使用长连接,此时内网服务器肯定不能暴漏,还是...就直接使用nginx四层代理,nginx四层代理需要使用nginx的stream模块在编译...
  • nginx四层负载均衡

    2020-05-06 14:14:56
    总览: 1、七层负载均衡 ...5、nginx四层配置+七层负载+web集群 6、配置阿里云四层负载均衡 实现端口转发 7、架构图 七层负载均衡: 根据url 调度不同的集群 url.cheng.com 10.0.0.5 10.0.0.7 /pas...
  • nginx四层代理配置

    2020-12-22 00:56:14
    nginx常用于四层负载均衡和web service的代理转发。 nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等,类似阿里云slb的 tcp协议模式。默认情况下,此模块不构建,应使用配置...
  • 1.Nginx四层负载均衡原理 Nginx四层负载均衡就是实现通过访问某个ip的端口转发至对应的服务器上,如图当访问10.0.0.5的5555端口就会跳转至web服务器172.1.16.7的22号端口,当访问10.0.0.5的6666端口就会转发到mysql...
  • 准备: (建议准备两台公有云,当然虚拟机也是可以的) 服务器一:192.168.1.1 服务器二:192.168.1.2 在服务器192.168.1.1上安装mysql。 ...目标:通过192.168.1.2代理连接到192.168....vim /etc/nginx/nginx.con...
  • nginx四层代理实现端口转发 nginx 从1.9.0版本开始支持四层代理,四层代理时,编译需要添加 --with-stream模块 下面举个栗子: A机器:47.92.125.67 安装了mysql,端口3306 B机器:106.53.96.205 安装了nginx C机器...
  • nginx代理服务器,nginx四层调度,nginx的常见问题处理及优化 nginx代理服务器 负载均衡 健康检查 ---web1服务器 用户---nginx代理服务器---| ---web2服务器 一、部署web1和web2的服务器的实验环境 web1: ...
  • nginx四层负载均衡配置代理Mysql集群 环境如下: ip 192.168.6.203 Nginx ip 192.168.6.*(多台) Mysql 步骤一 查看Nginx是否安装stream模块 没安装则进行安装 操作步骤如下 pkill nginx 至此 已成功...
  • 安装Nginx四层负载均衡 Nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信。 stream模块默认不安装的,需要手动添加参数:–with-stream,官方下载地址:download,根据自己系统版本选择...
  • nginx四层网络代理实现

    千次阅读 2019-09-17 21:03:12
    1.下载源码 wget ...tar -xzf nginx-1.14.0.tar.gz cd nginx-1.14.0 2.编译环境 Debian 环境需要安装的软件包 apt install gcc make apt install libpcre3 libpcre3-dev //【正则表达式库】 官网ht...
  • 配置Nginx四层负载均衡 nginx 支持TCP转发和负载均衡的支持 实现下面的架构: 看配置: #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_...
  • Nginx 4层和7层

    2020-11-11 14:00:48
    小编在面试的时候 被问到了,Nginx4层和Nginx7层,心里一阵慌张 不就是OSI 4层和7层嘛。难道是问我底层的原理吗? 4层代理和7层代理什么意思? 这里的层是OSI 7层网络模型,OSI 模型是从上往下的,越底层越接近硬件...
  • 转载请注明出处:https://blog.csdn.net/l1028386804/article/details/100627169 ... 一、静态负载均衡 Nginx四层静态负载均衡需要启用ngx_stream_core_module模块,默认情况下,ngx_stream_...
  • Nginx四层代理功能和Tengine编译安装 ngx_stream_core_module ngx_stream_core_module模块 模拟反代基于tcp或udp的服务连接,即工作于传输层的反代或调度器 stream { ... } 定义stream相关的服务;Context:main ...
  • nginx四层反向代理分析

    千次阅读 2018-03-22 09:05:48
    1 反向代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从...首先看配置,nginx反向代理是一个核心模块。基本配置如下。 tcp {  timeout

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,795
精华内容 21,118
关键字:

7层nginx四层