Loading

Nginx的负载均衡

Nginx的负载均衡

随着互联网信息的爆炸性增长,负载均衡(load balance)已经不再是一个很陌生的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。快速增长的访问量和数据流量催生了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件大受欢迎, nginx就是其中的一个,在linux下有Nginx、LVS、Haproxy等等服务可以提供负载均衡服务。

一、nginx对Tomcat服务负载均衡

实验目的:用户访问tomcat时,nginx利用负载均衡策略分担单主机提供的Tomcat服务的压力

实验准备:在两台Linux主机上部署Tomcat服务Tomcat服务部署参考

  • host A 的 apache-tomcat-10.0.10/webapps/examples 路径下放置test.html
    test.html
    <!DOCTYPE html>
    <html>
            <head>
                    <meta charset="utf-8" />
                    <title>Tomcat 10.0.10</title>
            </head>
            <body>
                    <h1> Load Balance Example </h1>
                    <p> There is host A that ip address is 10.8.198.66 </p>
            </body>
    </html>
    

  • host B 的 apache-tomcat-10.0.10/webapps/examples 路径下放置test.html
    test.html
    <!DOCTYPE html>
    <html>
            <head>
                    <meta charset="utf-8" />
                    <title>Tomcat 10.0.10</title>
            </head>
            <body>
                    <h1> Load Balance Example </h1>
                    <p> There is host B that ip address is 10.8.198.77 </p>
            </body>
    </html>
    

nginx配置

nginx.conf配置内容:

events {
  worker_connections  1024;
}

http {
  include       mime.types;
  default_type  application/octet-stream;
  sendfile        on;
  
  upstream tomcat{
      server 10.8.198.66:8080;
      server 10.8.198.77:8080;
  }
  
  server {
      listen       8080;
      server_name  10.8.198.55;
  	
      location ~ /examples {
      proxy_pass http://tomcat;
      }

      #error_page  404              /404.html;
      # redirect server error pages to the static page /50x.html
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
          root   html;
      }
  }
}            

同局域网其他主机通过nginx访问tomcat,浏览器地址栏: http://10.8.198.55:8080/examples/test.html

第一次访问结果:

第二次访问结果:

二、nginx负载均衡策略

Nginx提供了几种分配方式(策略):

1️⃣ 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

2️⃣ weight:weight 代表权,权重默认为 1,权重越高被分配的客户端越多

upstream server pool {
	server ip:port weight=5;
	server ip:port weight=10;
}

3️⃣ ip_hash:每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题

upstream server pool {
	ip_hash;
	server ip:port ;
	server ip:port ;
}

4️⃣ fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配

upstream server pool {
	server ip:port ;
	server ip:port ;
  fair;
}
posted @ 2022-12-06 11:38  eiSouthBoy  阅读(48)  评论(0)    收藏  举报