Nginx四层负载均衡的配置指南

一、四层负载均衡介绍

什么是四层负载均衡

所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。

以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器。TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作。在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,在转发报文的同时可能还会对报文原来的源地址进行修改。

应用场景

1.四层+七层来做负载均衡,四层可以保证七层的负载均衡的高可用性;

2.负载均衡可以做端口转发

3.数据库读写分离

四层负载均衡特点

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

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

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

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

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

二、四层负载均衡环境搭建

环境准备

主机 IP 身份
lb4 172.16.1.6,10.0.0.6 四层负载均衡
lb01 172.16.1.4,10.0.0.4 七层负载均衡
lb02 172.16.1.5,10.0.0.5 七层负载均衡

lb4和lb02搭建Nginx

# 配置yum源
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

# 安装Nginx
[root@lb02 ~]# yum install nginx -y
[root@lb4 ~]# yum install nginx -y

# 创建用户
[root@lb02 ~]# groupadd www -g 666 && useradd www -u 666 -g 666 -s /sbin/nologin -M
[root@lb4 ~]# groupadd www -g 666 && useradd www -u 666 -g 666 -s /sbin/nologin -M

# 配置nginx
[root@lb02 ~]# vim /etc/nginx/nginx.conf
user  www;
[root@lb4 ~]# vim /etc/nginx/nginx.conf
user  www;

# 启动Nginx
[root@lb4 ~]# systemctl start nginx && systemctl enable nginx && systemctl status nginx
[root@lb02 ~]# systemctl start nginx && systemctl enable nginx && systemctl status nginx

将lb01配置同步到lb02

[root@lb01 ~]# scp /etc/nginx/conf.d/* 172.16.1.5:/etc/nginx/conf.d/
[root@lb01 ~]# scp /etc/nginx/proxy_params 172.16.1.5:/etc/nginx/

测试lb02的负载均衡

[root@lb02 ~]# nginx -t && systemctl restart nginx

#配置hosts测试
10.0.0.5 linux.wp.com

三、配置四层负载均衡

四层负载均衡语法

Syntax:	stream { ... }
Default:	—
Context:	main

#示例:四层负载均衡stream模块跟http模块在同一级别,不能配置在http里面
stream {
    upstream backend {
        server backend1.example.com:12345 weight=5;
        server 127.0.0.1:12345            max_fails=3 fail_timeout=30s;
    }

    server {
        listen 12345;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass backend;
    }
}

配置nginx主配置文件

[root@lb4 ~]# vim /etc/nginx/nginx.conf
#注释http层所有内容
user  www;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
#添加一个包含文件
include /etc/nginx/conf.c/*.conf;
#http {
#    include       /etc/nginx/mime.types;
#    default_type  application/octet-stream;
#    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
#                      '$status $body_bytes_sent "$http_referer" '
#                      '"$http_user_agent" "$http_x_forwarded_for"';
#    access_log  /var/log/nginx/access.log  main;
#    sendfile        on;
#    #tcp_nopush     on;
#    keepalive_timeout  65;
#    #gzip  on;
#    include /etc/nginx/conf.d/*.conf;
#}

配置四层负载均衡

#创建目录
[root@lb4 ~]# mkdir /etc/nginx/conf.c

#配置
[root@lb4 ~]# vim /etc/nginx/conf.c/linux.lb4.com.conf
stream {
    upstream lbserver {
        server 10.0.0.4:80;
        server 10.0.0.5:80;
    }

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

# 启动Nginx
[root@lb4 ~]# nginx -t && systemctl start nginx

# 配置hosts访问
10.0.0.6 linux.lb4.com

四层负载均衡配置日志

#四层负载均衡是没有access的日志的,因为在nginx.conf的配置中,access的日志格式是配置在http下的,而四层负载均衡配置是在http以外的;

#如果需要日志则需要配置在stream下面
[root@lb4 ~]# vim /etc/nginx/conf.c/linux.lb4.com.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 lbserver {
        server 10.0.0.4:80;
        server 10.0.0.5:80;
    }

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

#查看所有web服务器日志
[root@web01 ~]# tail -f /var/log/nginx/access.log
[root@web02 ~]# tail -f /var/log/nginx/access.log

四、四层负载端口转发

请求负载均衡的5555端口,跳转到web01的22端口

#简单配置
stream {
	server {
        listen 5555;
        proxy_pass 172.16.1.7:22;
	}
}

#一般配置
stream {
    upstream ssh_7 {
        server 10.0.0.7:22;
    }

    server {
        listen 5555;
        proxy_pass ssh_7;
    }
}

# 测试
[D:\~]$ ssh root@10.0.0.6:5555
成功跳转

请求负载均衡的6666端口,跳转至172.16.1.51:3306

stream {
    upstream db_51 {
        server 172.16.1.51:3306;
    }

    server {
        listen 6666;
        proxy_pass db_51;
    }
}

数据库从库的负载均衡

stream {
    upstream dbserver {
        server 172.16.1.51:3306;
        server 172.16.1.52:3306;
        server 172.16.1.53:3306;
        server 172.16.1.54:3306;
        server 172.16.1.55:3306;
        server 172.16.1.56:3306;
    }

    server {
        listen 5555;
        proxy_pass dbserver;
    }
}

总结

到此这篇关于Nginx四层负载均衡配置的文章就介绍到这了,更多相关Nginx四层负载均衡内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Nginx实现集群的负载均衡配置过程解析

    Nginx 的负载均衡功能,其实实际上和 nginx 的代理是同一个功能,只是把代理一台机器改为多台机器而已. Nginx 的负载均衡和 lvs 相比,nginx属于更高级的应用层,不牵扯到 ip 和内核的修改,它只是单纯地把用户的请求转发到后面的机器上.这就意味着,后端的 RS 不需要配置公网. 一.实验环境 Nginx 调度器 (public 172.16.254.200 privite 192.168.0.48) RS1只有内网IP (192.168.0.18) RS2只有外网IP (19

  • Nginx负载均衡的4种方案配置实例

    1.轮询 轮询即Round Robin,根据Nginx配置文件中的顺序,依次把客户端的Web请求分发到不同的后端服务器. 配置的例子如下: http{ upstream sampleapp { server <<dns entry or IP Address(optional with port)>>; server <<another dns entry or IP Address(optional with port)>>; } .... server{

  • Nginx负载均衡配置简单配置方法

    背景 当一个网站从小到大,访问量逐渐增大现有的服务器已经支撑不住,一般的解决方案就是缓存.加服务器.数据库读写分离.实行负载均衡分布式等等,本人对这些技术方案都没有在项目中具体的实践过, 但是一直听同事过说起,利用空闲时间自我学习了解下: 负载均衡 什么是负载均衡,就是当快要承受不住的时候,又给你一台服务器来分担压力,请求会分配到两台服务器上,两台服务器上部署相同的内容相当于一个分身,可以处理相同的事情: Nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转

  • 5种nginx负载均衡配置方法分享

    一.轮询(默认)  每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 二.weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况.  例如: 复制代码 代码如下: upstream bakend {  server 192.168.0.14 weight=10;  server 192.168.0.15 weight=10;  } 三.ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以

  • Nginx 简单的负载均衡配置示例

    用户访问http://www.net-hb.com.cn,将其负载均衡到192.168.1.2:80.192.168.1.3:80.192.168.1.4:80.192.168.1.5:80四台服务器. 用户访问http://www.jb51.net,将其负载均衡到192.168.1.7服务器的8080.8081.8082端口. 以下为配置文件nginx.conf: 引用 [table=95%][tr][td]user www www; worker_processes 10; #error_l

  • Nginx+Windows负载均衡配置方法

    一.下载Nginx http://nginx.org/download/nginx-1.2.5.zip 解压到C:\nginx目录下 二.在两台服务器上分别建一个网站: S1:192.168.16.35:8054 S2:192.168.16.16:8089 二.找到目录 C:\nginx\conf\nginx.conf 打开nginx.conf 配置如下: 复制代码 代码如下: #使用的用户和组,window下不指定 #user nobody; #指定工作衍生进程数(一般等于CPU总和数或总和数

  • Nginx四层负载均衡的配置指南

    一.四层负载均衡介绍 什么是四层负载均衡 所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器. 以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务器IP),直接转发给该服务器.TCP的连接建立,即三次握手是客户端和服务器直接建立的,负载均衡设备只是起到一个类似路由器的转发动作.在某些部署情况下,为保证服务器回包可以正确返回给负载均衡设备,

  • Nginx/Httpd负载均衡tomcat配置教程

    在前一篇博客中我们聊了下用Nginx和httpd对后端tomcat服务做反代相关配置,回顾请参考https://www.jb51.net/article/191277.htm:今天我们来聊一聊用Nginx和httpd对tomcat集群做负载均衡的配置以及需要注意的点:在前边的演示和配置都是以单台tomcat来配置使用:但是在生产中单台tomcat实在支撑不了大规模的访问,这个时候我们就需要考虑把多台tomcat做成集群对外提供服务:多台tomcat做成集群对外提供服务就必然要有一个调度器来对客户

  • Nginx+Tomcat负载均衡集群安装配置案例详解

    目录 前言 一.Nginx+Tomcat 二.配置Nginx服务器 三.部署Tomcat应用服务器 总结 前言 介绍Tomcat及Nginx+Tomcat负载均衡集群,Tomcat的应用场景,然后重点介绍Tomcat的安装配置.Nginx+Tomcat负载均衡集案列是应用于生产环境的一套可靠的Web站点解决方案. 一.Nginx+Tomcat 通常情况下,一个Tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完

  • Nginx实现负载均衡的项目实践

    目录 一.Nginx介绍 二.Nginx特点 三.Nginx负载均衡 3.1 认识 upstream 模块 3.2 Nginx负载均衡策略 3.3 Nginx负载均衡实例 总结 一.Nginx介绍 Nginx是一款高性能的Http和反向代理服务器,也是一个IMAP/POP3/SMTP服务器(电子邮件代理),最早开发这个产品的目的之一也是作为邮件代理服务器.因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗及其高并发性能强而广泛应用于各种生产部署之中.而且nginx是基于事件驱动模型(ep

  • Nginx Tomcat负载均衡动静分离原理解析

    目录 nginx实现负载均衡原理 nginx动静分离原理 nginx静态处理优势 nginx+tomcat动静分离.负载均衡配置 1.准备三台服务器,nginx作为负载均衡器,tomcat作为应用服务器 2.部署nginx负载均衡器 3.部署两台tomcat应用服务器 4.动静分离配置 5.测试效果 nginx负载均衡中4层代理和7层代理 4层代理和7层代理 代理原理 优缺点对比 nginx支持的代理类型 nginx负载均衡模式 Nginx 四层代理配置 nginx实现负载均衡原理 Nginx实

  • 详解Linux系统配置nginx的负载均衡

    详解Linux系统配置nginx的负载均衡 负载均衡的几种方式: 1.轮询:默认按照时间顺序对所有服务器一个一个的访问,如果有服务器宕机,会自动剔除: 2.weight:服务器的方位几率和weight成正比,这个可以在服务器配置不均的时候进行配置: 3.ip_hash:对每个请求的ip进行hash计算,并按照一定的规则分配对应的服务器(可解决session共享): 4.fair:按照每台服务器的响应时间(rt)来分配请求,rt知道优先分配: 5.url_hash:按照访问url的hash值来分配

  • 负载均衡的基本知识以及使用nginx进行负载均衡的简单例子

    nginx一般可以用于七层的负载均衡,这篇文章将介绍一些负载均衡的基本知识以及使用nginx进行负载均衡的简单的例子. 四层负载均衡 vs 七层负载均衡 经常会说七层负载均衡还是四层负载均衡,其实根据ISO的OSI网络模型的所在层的叫法而决定的,nginx因为在使用http协议在应用层进行负载均衡的操作,所以被称为七层负载均衡.而诸如LVS在TCP层进行负载均衡操作的则被称为四层负载均衡.一般来说,有如下层的负载均衡分类: 常见软件的支持 常见的负载均衡算法 负载均衡常见有如下几种算法: 负载均

  • Nginx搭建负载均衡集群的实现

    (1).实验环境 youxi1 192.168.5.101 负载均衡器 youxi2 192.168.5.102 主机1 youxi3 192.168.5.103 主机2 (2).Nginx负载均衡策略 nginx的负载均衡用于upstream模板定义的后端服务器列表中选取一台服务器接收用户的请求.一个基本的upstream模块如下: upstream [服务器组名称]{ server [IP地址]:[端口号]; server [IP地址]:[端口号]; .... } 在upstream模块配置

  • 使用nginx做负载均衡的模块解读

    使用nginx做负载均衡的两大模块: upstream 定义负载节点池. location 模块 进行URL匹配. proxy模块 发送请求给upstream定义的节点池. upstream模块解读 nginx 的负载均衡功能依赖于 ngx_http_upstream_module模块,所支持的代理方式有 proxy_pass(一般用于反向代理),fastcgi_pass(一般用于和动态程序交互),memcached_pass,proxy_next_upstream,fastcgi_next_p

  • Nginx+tomcat负载均衡集群的实现方法

    实验环境如下 这里需要准备4台服务器(1台nginx.2台tomcat做负载.一台MySQL做数据存储) 准备软件包如下: 软件包地址连接: 链接: https://pan.baidu.com/s/1Zitt5gO5bDocV_8TgilvRw 提取码: ny1r nginx配置(172.16.1.54) 1.安装依赖包 yum -y install pcre-devel zlib-devel gcc gcc-c++ 2.创建nginx运行用户 useradd -M -s /sbin/nolog

随机推荐