使用nginx进行负载均衡

芝士年糕
• 阅读 305

我使用了三台VPS服务器,同一网段的,用来搭建网站,推荐你们也可以使用3A服务器

  1. nginx负载均衡介绍 nginx应用场景之一就是负载均衡。在访问量较多的时候,可以通过负载均衡,将多个请求分摊到多台服务器上,相当于把一台服务器需要承担的负载量交给多台服务器处理,进而提高系统的吞吐率;另外如果其中某一台服务器挂掉,其他服务器还可以正常提供服务,以此来提高系统的可伸缩性与可靠性。 下图为负载均衡示例图,当用户请求发送后,首先发送到负载均衡服务器,而后由负载均衡服务器根据配置规则将请求转发到不同的web服务器上。
  2. nginx负载均衡策略 以下截图为nginx官网文档 nginx内置负载均衡策略主要分为三大类,分别是轮询、最少连接和ip hash 最少连接 请求分配给活动连接数最少的服务器,哪台服务器连接数最少,则把请求交给哪台服务器,由nginx统计服务器连接数 ip hash 基于客户端ip的分配方式
  3. 1 轮询 以循环方式分发对应用服务器的请求,将请求平均分发到每台服务器上。
  4. 1.1 普通轮询方式 该方式是默认方式,轮询适合服务器配置相当,无状态且短平快的服务使用。另外在轮询中,如果服务器挂掉,会自动剔除该服务器。
    http {
      # 定义转发分配规则
      upstream myapp1 {
          server srv1.com; # 要转发到的服务器,如ip、ip:端口号、域名、域名:端口号
          server srv2.com:8088;
          server 192.168.0.100:8088;
      }
      server {
          listen 80; # nginx监听的端口
          location / {
              # 使用myapp1分配规则,即刚自定义添加的upstream节点
              # 将所有请求转发到myapp1服务器组中配置的某一台服务器上
              proxy_pass http://myapp1; 
          }
      }
    }
  5. 1.2 权重轮询方式 如果在 upstream 中配置的server参数后追加 weight 配置,则会根据配置的权重进行请求分发。此策略可以与least_conn和ip_hash结合使用,适合服务器的硬件配置差别比较大的情况。
    # 定义转发分配规则
    upstream myapp1 {
      server srv1.com weight=1; # 该台服务器接受1/6的请求量
      server srv2.com:8088 weight=2; # 该台服务器接受2/6的请求量
      server 192.168.0.100:8088 weight=3; # 该台服务器接受3/6的请求量;
    }
  6. 2 最少连接 轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果,适合请求处理时间长短不一造成服务器过载的情况。
    # 定义转发分配规则
    upstream myapp1 {
      least_conn; # 把请求分派给连接数最少的服务器
      server srv1.com;
      server srv2.com:8088;
      server 192.168.0.100:8088;
    }
  7. 3 ip hash 这个方法确保了相同的客户端的请求一直发送到相同的服务器,这样每个访客都固定访问一个后端服务器。如用户需要分片上传文件到服务器下,然后再由服务器将分片合并,这时如果用户的请求到达了不同的服务器,那么分片将存储于不同的服务器目录中,导致无法将分片合并,该场景则需要使用ip hash策略。 需要注意的是,ip_hash不能与backup同时使用,另外当有服务器需要剔除,必须手动down掉,此模式适合有状态服务,比如session。
    # 定义转发分配规则
    upstream myapp1 {
      ip_hash; # #保证每个请求固定访问一个后端服务器
      server srv1.com;
      server srv2.com:8088;
      server 192.168.0.100:8088;
    }
  8. nginx负载均衡搭建示例 该示例使用一台nginx作为负载均衡服务器,两台tomcat作为web服务器;可以把三个服务均在一台机器进行搭建,也可以使用虚拟机虚拟三台机器,然后进行测试。教程这里就只在一台机器进行搭建,采用默认的权重方式进行配置。
  9. 1 tomcat配置 将两台tomcat解压出来,配置完毕相应的端口,然后在webapps目录下创建test目录,然后在test目录中创建index.html文件,随便写入一些内容,两台tomcat中test目录下的index.html文件内容要区分开来,例如写入1111111 / 222222222,如下图所示。
  10. 2 nginx配置 首先进行nginx的安装,安装教程可以参考 https://blog.csdn.net/guo_ridgepole/article/details/124438127 安装完毕后,进入nginx目录下的conf目录,编辑 nginx.conf 文件,修改内容为在http节点下增加
    language
    upstream tomcat { # 该部分内容与 server 节点同级
      server tomcat服务的ip:tomcat服务的端口号;
      server tomcat服务的ip:tomcat服务的端口号;
    }
    server节点下的location /节点中,把默认的
    language
    location / {
      root   html;
      index  index.html index.htm;
    }
    修改为
    language
    location / {
      proxy_pass http://tomcat;
    }
    然后启动 两台tomcat与nginx服务,在浏览器输入nginx服务的地址:端口,不停刷新页面,就可以看到每次请求的服务器发生了改变。
点赞
收藏
评论区
推荐文章
Stella981 Stella981
2年前
Nginx keepalive 双机热备 主主主从模式
Nginxkeepalived高可用双机热备(主从模式/双主模式)基础介绍负载均衡技术对于一个网站尤其是大型网站的web服务器集群来说是至关重要的!做好负载均衡架构,可以实现故障转移和高可用环境,避免单点故障,保证网站健康持续运行。   关于负载均衡介绍,可以参考:linux负载均衡总结性说明(四层负载/七层负载)
Wesley13 Wesley13
2年前
LNMP架构之负载均衡及HTTPS相关配置
本文索引:Nginx负载均衡ssl原理生成ssl密钥对Nginx配置sslNginx负载均衡负载均衡原理上就是代理,只不过通过设置多个代理服务器来实现多用户访问时的负载均衡。同时也可以在某个代理服务器无法访问时,切换到另外的代理服务器,从而实现访问不间断的目的。下面以qq.com为例
Stella981 Stella981
2年前
Keepalived+Nginx实现高可用和双主节点负载均衡
简介Nginx可以实现高并发反向代理,lvs集群可以实现负载均衡,但是他们都有一个共同的弊端,就是Nginx,lvs架构中Director是单点故障,有没有一个好的方案解决这个问题呢?答案是有。通过Keepalived就可以实现,前端Nginx,lvs中Director服务器的高可用和负载均衡,通过shell命令或者脚本可以实现对服务器状态和服务的监控!
Stella981 Stella981
2年前
Nginx Linux详细安装部署教程
转发:https://www.cnblogs.com/taiyonghai/p/6728707.html一、Nginx简介Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度
Stella981 Stella981
2年前
Nginx详细安装部署教程
一、Nginx简介Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤二、Nginx安装1、下载Nginx及相关组件Linux系统是Centos6.564位,我直接切换到root用户下安装!(https://im
Stella981 Stella981
2年前
Dubbo与Zookeeper在Window上的安装与简单使用
一:Dubbo是什么?有什么用途??  使用Dubbo可以将应用分布到多个服务器上,当有访问时,Dubbo有帮你管理自动将请求分配给合适得到服务器去执行,即建立多个生产者,建立多个消费者,自动匹配生产者与消费者,以便达到负载均衡。关于集群与负载均衡的一些概念的简单解释也可以参考《大话集群和负载均衡(https:/
Stella981 Stella981
2年前
Nginx负载均衡
前面我们说了反向代理,例子中用的是,两个请求请求同一个ip地址和端口,然后Nginx来根据域名调用不同的tomcat来进行请求处理及响应。反向代理主要说的是:不同的请求请求同一个Nginx服务器,Nginx服务器来决定由那个真正的业务服务器(eg:tomcat)处理某个请求。下面说负载均衡负载均衡一般是指,针对同一个(域名的)请求发送很多次,同
芝士年糕 芝士年糕
1年前
使用nginx进行负载均衡
我租了三台3A的服务器,使用的时候刚好用到了负载均衡,顺便分享给你们,如果有需要服务器或者哪里不懂的,可以私信我1.nginx负载均衡介绍nginx应用场景之一就是负载均衡。在访问量较多的时候,可以通过负载均衡,将多个请求分摊到多台服务器上,相当于把一台服务器需要承担的负载量交给多台服务器处理,进而提高系统的吞吐率;另外如果其中某一台服务器挂掉,其他服务器
解密负载均衡技术和负载均衡算法
什么是负载均衡技术负载均衡器是一种软件或硬件设备,它起到了将网络流量分散到一组服务器的作用,可以防止任何一台服务器过载。负载均衡算法就是负载均衡器用来在服务器之间分配网络流量的逻辑(算法是一组预定义的规则),有时候也叫做负载均衡的类型。负载均衡
负载均衡详解
负载均衡(LoadBalancing)是一种将网络流量或请求分发到多个服务器或资源的技术,以确保这些服务器或资源能够更均匀地处理负载,提高系统的性能、可用性和可伸缩性。负载均衡通常应用于Web服务、应用程序服务器、数据库服务器以及其他网络应用中。