Nginx+Tomcat负载均衡,动静分离群集

Nginx反向代理原理

Nginx 反向代理:将Nginx接收到的请求转发给其它应用服务器处理

Nginx 负载均衡:通过反向代理实现,还可以将nginx接收到的请求转发给多个后端应用服务器处理

Nginx 动静分离:静态页面请求,由nginx自行处理并响应;动态页面请求,则nginx通过反向代理转发给后端应用服务器处理

他的主要思想就是实现将客户发来的的请求转发给后台服务器进行操作,当后台有多台服务器时,就会进行平均或者自定义的数据转发来实现负载均衡的效果,降低每一台后端服务器的压力,动静分离则是充分利用各个服务器的优点来发挥,静态页面交给专业的静态页面去处理,动态的则交给动态页面去处理,来实现作用。

Nginx反向代理的类型

七层反向代理

七层反向代理:基于http、https、mail等七层应用协议的代理转发(根据用户访问请求的URL路径来转发请求),通常用于 动静分离 等应用场景

配置:

1)在http配置块中使用upstream定义后端服务器列表名称和节点参数

http {

upstream 服务器池名称 {

server IP1:PORT1 weight=1;

server IP2:PORT2 weight=1;

......

}

2)在server配置块中使用location匹配用户请求的动态页面的URL路径,使用 proxy_pass 基于协议代理转发

server {

......

location ~ .*\.jsp$ {

proxy_pass http://服务器池名称;

#用于为后端服务器获取真实的客户端地址

proxy_set_header HOST $host;

proxy_set_header X_Real_IP $remote_addr;

proxy_set_header X_Forwarded_For $proxy_add_x_forwarded_for;

}

......

}

......

}

四层反向代理

四层反向代理:基于 IP 和 端口 实现的代理转发(根据用户请求的IP和端口来转发请求),通常用于做 网关访问入口的负载均衡器 等应用场景

1)编译安装时需要添加 stream 四层代理模块 ./configure --with-stream

2)在 http 配置块同层级,一般在 http 配置块上面添加 stream 配置块,在 stream 配置块里使用upstream定义后端服务器列表名称和节点参数以及使用server配置块定义监听端口和转发配置

stream {

upstream 服务器池名称 {

server IP1:PORT1 weight=1;

server IP2:PORT2 weight=1;

......

}

server {

listen IP:PORT;

proxy_pass 服务器池名称;

}

}

http {....}

四层反向代理 比 七层反向代理 转发性能更高于;

七层反向代理 比 四层反向代理 转发功能更多、更灵活

Nginx的负载均衡模式

Nginx的负载均衡模式(调度模式、调度算法、调度策略),在 upstream 配置块里设置

轮询(round robin、rr) 是nginx的默认调度模式,按照时间顺序逐一分配请求

加权轮询(weight round robin、wrr) 使用weight参数设置权重,weight值越高的节点被分配请求的概率越大

least_conn(最少连接、最小连接) 优先将请求分配给当前连接数最少的节点

ip_hash(源地址哈希) 根据客户端IP做hash缓存调度,会将请求分配给固定的一个节点

url_hash(目的地址哈希) 根据客户端请求访问的URL路径做hash缓存调度,会将请求分配给固定的一个节点。需要另外按照第三方模块支持

fair 优先将请求分配给响应时间最少的节点。需要另外按照第三方模块支持

random 随机分配请求

hash nginx全局变量 consistent 一致性hash算法,根据nginx全局变量的值来做hash缓存调度

比如 hash $remote_addr consistent 根据客户端ip做hash缓存调度,是ip_hash的加强版

举例:

upstream 服务器池名称 {

server IP1:PORT1 weight=权重 max_fails=最大的失败次数 fail_timeout=暂停服务的时间 max_conns=最大并发连接数;

......

least_conn;/ip_hash;/hash request_uri;/fair;/random;/hash remote_addr consistent;

}

Nginx负载均衡如何实现会话保持?

1)ip_hash 或 一致性hash算法 基于客户端IP做hash缓存将请求发送给同一个后端节点服务器来实现会话保持,但是此方法容易导致负载失衡问题

2)sticky_cookie_insert 基于cookie来判断实现会话保持

upstream backend {

server ...... ;

sticky_cookie_insert srv_id expires=浏览器中保持cookie的时间 domain=cookie的域名 path=cookie的路径;

}

3)后端应用服务器自身通过相关机制设置,使用缓存数据库为后端节点服务器做session同步复制实现会话保持

相关推荐
記億揺晃着的那天1 小时前
NAS 内网域名访问为什么需要浏览器授权
网络·nginx·js·nas
counting money9 小时前
Tomcat 专题:从基础架构到性能调优与 WebSocket 实战
java·websocket·tomcat
骇客野人14 小时前
基于Nginx+Eureka+Apollo+Jenkins+SpringBoot Web系统分布式部署方案
nginx·eureka·jenkins
Kendra9191 天前
从 0 到上线:单文件网页 App 部署到阿里云 ECS 全流程(Nginx+Node+PM2+PostgreSQL)
nginx·阿里云·云计算·部署·个人开发·今天吃什么
暖核1 天前
Nginx 从入门到实践:部署、配置、反向代理与负载均衡全解
运维·nginx·负载均衡
.柒宇.1 天前
运维常见面试题_04_Nginx与DNS服务
运维·nginx·面试·dns
NGINX开源社区1 天前
NGINX Ingress Controller 5.5:安全性与性能提升,迁移更轻松
java·服务器·nginx
weixin_307779131 天前
PHP 大文件上传:内存占用、超时与最佳实践
linux·服务器·开发语言·nginx·php
闲云野鹤在人间1 天前
项目实战:LNMP-电商平台-ECshop
linux·运维·nginx·apache·lvs
暖核1 天前
Keepalived 高可用全解析:从 VRRP 原理到生产环境 Nginx 主备切换实践
网络·nginx·智能路由器