Nginx+Tomcat负载均衡和动静分离群集
- Nginx是-款非常优秀的HTTP服务器软件
- 支持高达50 000个并发连接数的响应
- 拥有强大的静态资源处理能力
- 运行稳定
- 内存、CPU等系统资源消耗非常低
Nginx作用
-
目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力
-
正向代理:代理的是客户端,安装在客户端本机上
- 正向代理类似一个跳板机,代理访问外部资源。
- 正向代理的用途:
- 访问原来无法访问的资源,如google
- 可以做缓存,加速访问资源
- 对客户端访问授权,上网进行认证
- 代理记录用户访问记录(上网行为管理),也可以对外网隐藏用户信息。
【从外网的角度,只有代理服务器获取资源的时候有一次记录,当代理告服务器不告诉网站时,外网就不知道这个请求的用户信息】
-
反向代理:代理的是服务端,
-
让用户无感知地浏览服务器资源(无论动容增加了多少台服务器,用户都无法感知,用户访问的永远是域名),并且让服务器更好的部署上线
- 客户端是无感知代理服务器的存在的,访问者者并不知道自己访问的是一个代理。
- 因为客户端不需要任何配置就可以访问。
##反向代理主要参数
upstream 服务池名{} ##配置后端服务器池,以提供响应数据
proxy_pass http://服务池名 ##配置将访问请求转发给后端服务器池的服务器处理
动静分离
服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx提供服务,动态资源Nginx转发至后端
并发量:以10分钟有5000万用户平均每人访问2次为例,并发量为每秒(5000w*2)/(60*10)=16.7万,再double下,就说每秒25万并发量
吞吐量可以理解成带宽流量,以每个请求0.5KB大小,并发每秒25万,0.5/1024MB*250000=122MB*8bit=977Mbps
实验
七层反向代理nginx动静分离
名称 | IP |
---|---|
tomcat服务器1 | 192.168.242.66:8080 |
tomcat服务器2 | 192.168.242.67:8080 |
nginx服务器 | 192.168.242.68 |
##在tomcat服务器中创建动态页面
cd /usr/local/tomcat/webapps/
mkdir test
cd test/
vim index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test1 page</title> #指定为 test1 页面
</head>
<body>
<% out.println("动态页面 1");%>
</body>
</html>
##nginx服务器设置
systemctl disable --now firewalld
setenforce 0
##yum安装nginx
cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak
vim nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
yum clean all && yum makecache
yum -y install nginx
cd /etc/nginx/conf.d/
vim default.conf
##定义后端服务器组的名称和节点配置
upstream tomcat_server {
server 192.168.242.66:8080 weight=1;
server 192.168.242.67:8080 weight=1;
}
在server中配置
location ~* .*\.jsp$ {
proxy_pass http://tomcat_server;
#设置后端的Web服务器可以获取远程客户端的真实IP
proxy_set_header HOST $host;
##设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认HOST的值为proxy_pass
proxy_set_header X-Real-IP $remote_addr;
##把$remote_addr赋值给X-Real-IP,来获取源IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
##在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
}
location ~* .*\.jsp$ {
proxy_pass http://tomcat_server;
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
##创建静态界面
vim index.html
<html>
<body>
<hi>静态界面1</hi>
</body>
</html>
##验证实现
访问 nginx 服务器地址 http://192.168.242.68/index.jsp
四层反向代理负载均衡
名称 | IP |
---|---|
tomcat服务器1 | 192.168.242.66:8080 |
tomcat服务器2 | 192.168.242.67:8080 |
七层nginx服务器1 | 192.168.242.68 |
七层nginx服务器2 | 192.168.242.69 |
四次代理nginx服务器 | 192.168.242.70 |
##在nginx源码编译安装时,加载模块
./configure --with-stream
vim /usr/local/nginx/conf/nginx.conf
和http同等级:所以一般只在http上面一段设置
stream {
upstream nginx_server {
server 192.168.242.68:80 weight=1;
server 192.168.242.69:80 weight=1;
}
server {
listen 80;
nginx_server;
}
}
http {
server {
listen 8080;
......
测试静态页面效果
浏览器访问 http://192.168.242.68/test/index.html
测试负载均衡效果,不断刷新浏览器测试
浏览器访问 http://192.168.58.68/test/index.jsp
四层反向代理:基于IP+PORT实现的代理转发
四层反向代理:基于http、https、mail等七层应用协议实现的代理转发文章来源:https://www.toymoban.com/news/detail-478846.html
Nginx 负载均衡模式:文章来源地址https://www.toymoban.com/news/detail-478846.html
- rr 轮询 负载均衡模式:
每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail_timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效继续探测,一般来说rr可以根据权重来进行均匀分配。 - 加权轮询:
weight值越大,被分配到的访间请求概率越高,主要用于后端服务器性能不均匀的情况。 - least_conn 最少连接:
优先将客户端请求调度到当前连接最少的服务器。 - ip_hash 负载均衡模式:
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式,session 共享问题可用后端服务的 session 共享代替 nginx 的 ip_hash(使用后端服务器自身通过相关机制保持session同步)。 - fair(第三方)负载均衡模式:
按后端服务器的响应时间来分配请求,响应时间短的优先分配。 - url_hash(第三方)负载均衡模式:
基于用户请求的uri做hash。和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。
共享代替 nginx 的 ip_hash(使用后端服务器自身通过相关机制保持session同步)。 - fair(第三方)负载均衡模式:
按后端服务器的响应时间来分配请求,响应时间短的优先分配。 - url_hash(第三方)负载均衡模式:
基于用户请求的uri做hash。和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。
到了这里,关于3.Nginx+Tomcat负载均衡和动静分离群集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!