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 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!