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;
}

作者:caojun97

出处:https://www.cnblogs.com/caojun97/p/16747766.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   eiSouthBoy  阅读(37)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu