Linux Nginx 负载均衡

Linux Nginx 负载均衡负载均衡,英文名称为LoadBalance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。软/硬件负载均衡软件负载均…

大家好,又见面了,我是你们的朋友全栈君。

Linux Nginx 负载均衡

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

  • 软/硬件负载均衡

软件负载均衡解决方案是指在一台或多台服务器相应的操作系统上安装一个或多个附加软件来实现负载均衡,如DNS Load Balance,CheckPoint Firewall-1 ConnectControl等,它的优点是基于特定环境,配置简单,使用灵活,成本低廉,可以满足一般的负载均衡需求。

软件解决方案缺点也较多,因为每台服务器上安装额外的软件运行会消耗系统不定量的资源,越是功能强大的模块,消耗得越多,所以当连接请求特别大的时候,软件本身会成为服务器工作成败的一个关键;软件可扩展性并不是很好,受到操作系统的限制;由于操作系统本身的Bug,往往会引起安全问题。

硬件负载均衡解决方案是直接在服务器和外部网络间安装负载均衡设备,这种设备通常称之为负载均衡器,由于专门的设备完成专门的任务,独立于操作系统,整体性能得到大量提高,加上多样化的负载均衡策略,智能化的流量管理,可达到最佳的负载均衡需求。

负载均衡器有多种多样的形式,除了作为独立意义上的负载均衡器外,有些负载均衡器集成在交换设备中,置于服务器与Internet链接之间,有些则以两块网络适配器将这一功能集成到PC中,一块连接到Internet上,一块连接到后端服务器群的内部网络上。一般而言,硬件负载均衡在功能、性能上优于软件方式,不过成本昂贵。

  • 本地/全局负载均衡

负载均衡从其应用的地理结构上分为本地负载均衡(Local Load Balance)和全局负载均衡(Global Load Balance,也叫地域负载均衡),本地负载均衡针对本地范围的服务器群做负载均衡,全局负载均衡针对不同地理位置、不同网络结构的服务器群做负载均衡。

本地负载均衡不需要花费高额成本购置高性能服务器,只需利用现有设备资源,就可有效避免服务器单点故障造成数据流量的损失,通常用来解决数据流量过大、网络负荷过重的问题。同时它拥有形式多样的均衡策略把数据流量合理均衡的分配到各台服务器。如果需要在现在服务器上升级扩充,不需改变现有网络结构、停止现有服务,仅需要在服务群中简单地添加一台新服务器。

全局负载均衡主要解决全球用户只需一个域名或IP地址就能访问到离自己距离最近的服务器获得最快的访问速度,它在多区域都拥有自己的服务器站点,同时也适用于那些子公司站点分布广的大型公司通过企业内部网(Intranet)达到资源合理分配的需求。

全局负载均衡具备的特点:

  1. 提高服务器响应速度,解决网络拥塞问题,达到高质量的网络访问效果。

  2. 能够远距离为用户提供完全的透明服务,真正实现与地理位置无关性

  3. 能够避免各种单点失效,既包括数据中心、服务器等的单点失效,也包括专线故障引起的单点失效

负载均衡部署方式

负载均衡有三种部署方式:路由模式、桥接模式、服务直接返回模式。路由模式部署灵活,约60%的用户采用这种方式部署;桥接模式不改变现有的网络架构;服务直接返回(DSR)比较适合吞吐量大特别是内容分发的网络应用。约30%的用户采用这种模式。

  • 路由模式(推荐)

路由模式的部署方式,服务器的网关必须设置成负载均衡机的LAN口地址,且与WAN口分署不同的逻辑网络。因此所有返回的流量也都经过负载均衡。这种方式对网络的改动小,能均衡任何下行流量。

  • 桥接模式

桥接模式配置简单,不改变现有网络。负载均衡的WAN口和LAN口分别连接上行设备和下行服务器。LAN口不需要配置IP(WAN口与LAN口是桥连接),所有的服务器与负载均衡均在同一逻辑网络中。

由于这种安装方式容错性差,网络架构缺乏弹性,对广播风暴及其他生成树协议循环相关联的错误敏感,因此一般不推荐这种安装架构。

  • 服务直接返回模式

这种安装方式负载均衡的LAN口不使用,WAN口与服务器在同一个网络中,互联网的客户端访问负载均衡的虚IP(VIP),虚IP对应负载均衡机的WAN口,负载均衡根据策略将流量分发到服务器上,服务器直接响应客户端的请求。因此对于客户端而言,响应他的IP不是负载均衡机的虚IP(VIP),而是服务器自身的IP地址。也就是说返回的流量是不经过负载均衡的。因此这种方式适用大流量高带宽要求的服务。


Linux Nginx 负载均衡

Nginx 是一款高性能的HTTP和反向代理服务工具,现在很多大型网站都使用 Nginx 做负载均衡,由于支持高并发和资源占用低,越来越受到欢迎,下面介绍 Nginx 几种常用的负载均衡策略。

  • Nginx常用的几种负载均衡配置

  • 轮询模式:这种方式是nginx.conf配置文件的默认配置方式,当客户端访问服务的时候,请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
  • weight权重模式:这种方式比较灵活,当后端服务器性能存在差异的时候,通过配置权重,可以让服务器的性能得到充分发挥,有效利用资源。weight和访问比率成正比,用于后端服务器性能不均的情况。权重越高,在被访问的概率越大
  • ip_hash:配置很简单,在upstream中采用ip_hash指令,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到该服务器。每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。此种策略,可以实现同一个用户访问同一台服务器,会话不会丢失,但是可能会分配不均
  • fair(第三方插件):这种方式根据后端服务器的响应时间进行分配,响应快的优先分配请求
  • url  hash(第三方插件):此种方式和ip_hash比较类似,根据url的hash值进行分配,将url分配到同一个后端服务器,当服务器存在缓存时比较有效
  • nginx.conf 中命令说明

    down 表示单前的server暂时不参与负载 

    weight 默认为1.weight越大,负载的权重就越大。 

    max_fails:允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误 

    fail_timeout:max_fails次失败后,暂停的时间。 

    backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻


  • 实验环境
  • Server 192.168.1.2 CentOS 7.5 Nginx+负载均衡
  • Web 1 192.168.1.3 CentOS 7.5 Nginx+PHP
  • Web 2 192.168.1.4 CentOS 7.5 Nginx+PHP
  • Web 3 192.168.1.5 CentOS 7.5 Nginx+PHP

  • 分别在 Server 和 Web 端安装 Nginx,使用 Nginx 官网提供的 Yum 方式安装
  • Nginx  Yum 官方源   http://nginx.org/packages/    
    CentOS 7.X :

    rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

    CentOS 6.X :

    rpm -Uvh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

  • yum -y install nginx PS:确保 /etc/yum.repo.d/nginx.repo 为 enabled = 1 开启状态

  • Nginx+PHP 安装详细设置请参照拙作:Linux Nginx + PHP 安装及调优https://blog.csdn.net/gaofei0428/article/details/104058580


  • 安装完成后,首先在 Server 192.168.1.2 端配置 Nginx 负载均衡
  • vim /etc/nginx/nginx.conf
  • 在 http {……} 字段添加以下信息
  • http {

……….

    upstream myweb{    #开启负载均衡及定义名称
        ip_hash;     #采用 ip_hash 方式的负载均衡配置
        server 192.168.1.3 max_fails=10 fail_timeout=60s;
        server 192.168.1.4 max_fails=10 fail_timeout=60s;
        server 192.168.1.5 max_fails=10 fail_timeout=60s;
        }

#连接探测设置,如果发现后端异常,在单位周期为fail_timeout设置的时间,中达到max_fails次数,这个周期次数内,如果后端同一个节点不可用,那么接将把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功
    include /etc/nginx/conf.d/*.conf;
}

  • 确认无误保存退出,接下来编辑 /etc/nginx/conf.d/default.conf 
  • vim /etc/nginx/conf.d/default.conf
  • server {

        listen      *:80;
        server_name  www.myweb.com;
        location / {

            proxy_pass  http://myweb;     #使用前面定义的负载均衡配置
            proxy_set_header Host $host;    #允许重新定义或者添加发往后端服务器的请求头。$host变量值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名
            proxy_set_header X-Forwarded-For $remote_addr;    #增加节点服务器记录的IP字段
        }
    }
  • 确认无误保存退出,启动 Nginx

Linux Nginx 负载均衡

Linux Nginx 负载均衡

Linux Nginx 负载均衡


Linux Nginx 负载均衡

Linux Nginx 负载均衡

Linux Nginx 负载均衡

  • 下面开始测试,这里为了测试效果,暂时把 #ip_hash; 设置注释掉
  • 更改物理机的 HOSTS 文件 添加 192.168.1.2 www.myweb.com
  • 打开浏览器输入 www.myweb.com 按住 F5 可以看到变化

Linux Nginx 负载均衡

Linux Nginx 负载均衡

Linux Nginx 负载均衡

Linux Nginx 负载均衡

Linux Nginx 负载均衡

Linux Nginx 负载均衡

Linux Nginx 负载均衡

Linux Nginx 负载均衡

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/148693.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • ewebeditor php漏洞,ewebeditor for php任意文件上传漏洞「建议收藏」

    ewebeditor php漏洞,ewebeditor for php任意文件上传漏洞「建议收藏」此漏洞仅测试了最新版v3.8,不知道低版本是否存在此漏洞。PHP版本的ewebeditor并没有使用数据库来保存配置信息,所有信息位于php/config.php中,代码如下:$sUsername=”admin”;$sPassword=”admin”;[separator]$aStyle[1]=”gray|||gray|||office|||../uploadfile/|||550||…

  • eclipse导入maven工程没有src/main/resources文件夹

    eclipse导入maven工程没有src/main/resources文件夹很多时候导入maven工程的时候没有src/main/resources文件夹今天写个博客记录下如何解决首先右击项目然后如图所示然后点击ok再应用然后就先显示资源文件夹了…

  • 反掩码有什么作用?通配符掩码有什么作用?

    反掩码有什么作用?通配符掩码有什么作用?反掩码是指路由器使用的通配符掩码与源或目标地址相匹配,与子网掩码正好相反。就像子网掩码告诉路由器IP地址中哪个属于网络号一样,通配符掩码告诉路由器,为了判断匹配,需要检查IP地址中有多少位。这种地址掩码可以使用两个32位的数字来确定IP地址的范围。这个非常方便,因为如果没有掩码,你必须在每个匹配的IP客户地址上添加一个单独的访问列表语句。它会导致许多额外的输入和路由器的额外处理过程。因此地址掩码非常有用。在子网掩码中,将一个掩码设置为1,表示IP地址对应的位置属于网络地址部分。相反,在访..

  • jQuery的目标

    jQuery的开篇声明里有一段非常重要的话:jQuery是为了改变javascript的编码方式而设计的。从这段话可以看出jQuery本身并不是UI组件库或其他的一般AJAX类库。jQuery改变ja

    2021年12月24日
  • 使用pycharm安装包失败后,应该怎么办?

    使用pycharm安装包失败后,应该怎么办?用pycharm进行安装第三方包的时候,一些情况下会出现安装失败(具体怎么安装搜一下,教程很全,但这不是想说的重点)。有时候是因为pip版本较低,升级一下即可,但有时候就是安装不上,原因查了一下,有的博主说是pip不支持断点续传,也有的说是版本路径问题。但是不论如何,这个问题有解决的方法,也是迫不得已的办法。第一步:去官网下载对应的安装包,网址如下:这是网址至于应该安装什么样的包,最简单…

  • 制作opc服务器,力控服务器怎样做为OPC服务器,供其他OPC客户端程序访问

    制作opc服务器,力控服务器怎样做为OPC服务器,供其他OPC客户端程序访问publicvoidListAll(Guidcatid,outOpcServers[]serverslist){serverslist=null;Dispose();Guidguid=newGuid(13486D51-4821-11D2-A494-3CB306C10000);Typetypeoflist=Type.GetTypeFromCLSID(guid);OPCL…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号