nginx实现负载均衡

nginx实现负载均衡

一 负载均衡的步骤
  • 准备两个或多个tomcat服务器,本地或者远程均可。

    如果是本地的话,需要设置两个tomcat的端口不一致。包括启动端口,关闭端口,jvm端口。

    分别为:

    <Server port="8005" shutdown="SHUTDOWN"> //关闭端口
    <Connector port="8081" protocol="HTTP/1.1" 
                 connectionTimeout="20000"
                 redirectPort="8443" /> //启动端口
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />//调用jvm的端口

    我把两个服务器的启动端口分别改为8080,8081.

  • 开始负载均衡的配置:

    在nginx的配置文件中要进行一下几点的配置:

    • 设置负载服务器的地址,即两个tomcat的地址
        upstream  dc{
           ip_hash;  
           #不加的话会一直存不上session,导致登陆一直超时,加上了权重轮询就无效了,
           #这是ip哈希算法根据访问ip进行计算后分的的服务,会一直是这个服务器,例如本机的ip,
           #经计算后与8080端口契合,所以一直访问这个端口。除非他挂了,
           #然后会经过proxy_connect_timeout时间后进行下一个可用服务的访问。
           server 127.0.0.1:8081 weight=2;
           server 127.0.0.1:8080 weight=1;
    
        }

    此处坑很多~~

    NO.1 ip_hash是负载均衡的一种请求分配的方式,通过计算请求的ip,即本机ip,来给该访客指定一个服务地址,这样一个ip就被指定到一个tomcat的地址。用来解决多服务器之间session不通,导致轮询访问的话会话丢失的问题。如果不加的话,恰巧项目又用到了session,就会连登陆都无法使用。

    NO.2 加上了这个之后,权重轮询就无效了,毕竟是两个不同的算法。

    • 配置反向代理:

      server {
          listen       80;
          server_name  localhost;
      
          #charset koi8-r;
          #access_log  logs/host.access.log  main;
      
           location / {
               proxy_pass http://dc;  #此处就是upstream的名字
              proxy_redirect off;
              proxy_set_header Host $host;
               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header REMOTE-HOST $remote_addr;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      
              proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
              proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置
              proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
              proxy_temp_file_write_size 64k;
              #设定缓存文件夹大小,大于这个值,将从upstream服务器传
              #root   html;
              #index  index.html index.htm;
      
          }
         #本地动静分离反向代理配置,所有jsp的页面均交由tomcat或resin处理
          location ~ .(jsp|jspx|do)?$ {
                  proxy_set_header Host $host;
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                  proxy_pass http://dc;
          }
      
      ##所有静态文件由nginx直接读取不经过tomcat或resin
      
          location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {  
                  expires 15d; #15天过期
          }
          location ~ .*.(js|css)?$ { 
                  expires 1h; 
          }
          location ~ ^/(images|javascript|js|css|flash|media|static)/ {            
                  #过期30天,静态文件不怎么更新,过期可以设大一点,
                  #如果频繁更新,则可以设置得小一点。
                  expires 30d;
          }
      
    • 配置超时属性:https://my.oschina.net/xsh1208/blog/199674

      proxy_connect_timeout 5s;  //若当前请求的服务挂掉,等待5s转向其他可用服务
  • 配置完成,如何访问:

    前面server节点定义的server_name和port就规定了我们的代理地址:http://localhost:80

    想访问项目在后面 加项目名即可。

    如果不想加项目名,参考链接:https://www.cnblogs.com/langtianya/p/5743357.html

二 nginx的常用配置

参考连接:https://blog.csdn.net/happydream_c/article/details/54943802

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值