3.Nginx+Tomcat负载均衡和动静分离群集

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

  • Nginx是-款非常优秀的HTTP服务器软件
    • 支持高达50 000个并发连接数的响应
    • 拥有强大的静态资源处理能力
    • 运行稳定
    • 内存、CPU等系统资源消耗非常低

Nginx作用

  • 目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力

  • 正向代理:代理的是客户端,安装在客户端本机上

    • 正向代理类似一个跳板机,代理访问外部资源。
    • 正向代理的用途:
      1. 访问原来无法访问的资源,如google
      2. 可以做缓存,加速访问资源
      3. 对客户端访问授权,上网进行认证
      4. 代理记录用户访问记录(上网行为管理),也可以对外网隐藏用户信息。
        【从外网的角度,只有代理服务器获取资源的时候有一次记录,当代理告服务器不告诉网站时,外网就不知道这个请求的用户信息】
  • 反向代理:代理的是服务端,

  • 让用户无感知地浏览服务器资源(无论动容增加了多少台服务器,用户都无法感知,用户访问的永远是域名),并且让服务器更好的部署上线

    • 客户端是无感知代理服务器的存在的,访问者者并不知道自己访问的是一个代理。
    • 因为客户端不需要任何配置就可以访问。
##反向代理主要参数

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服务器1192.168.242.66:8080
tomcat服务器2192.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服务器1192.168.242.66:8080
tomcat服务器2192.168.242.67:8080
七层nginx服务器1192.168.242.68
七层nginx服务器2192.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等七层应用协议实现的代理转发

Nginx 负载均衡模式:

  • 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定向到同一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜海赤竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值