Tomcat和nginx负载均衡算法
自定义默认网站目录
- 首先创建一个web目录,作为存放网站文件
mkdir -pv /web/webapp
#创建一个测试文件
vim /web/webapp/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test page</title>
</head>
<body>
<% out.println("Welcome to test site,http://www.test1.com");%>
<body>
</html>
- 修改Tomcat的配置文件server.xml
#先对server.xml做一个备份
cp /usr/local/romcat8/conf/server.xml{,.-$(date +%F)}
vim /usr/local/tomcat8/conf/server.xml
<Context docBase="/web/webapp" path="" reloadable="flase">
</Context>
- 重启Tomcat服务进行测试
nginx+Tomcat负载均衡集群
-
nginx代理
常用的是反向代理,代理就好比一个中介,为了省时省力存在的 -
正向代理:
当局域网不能上网时,可以在浏览器设置正向代理满足上网要求
当我们想通过FQ访问国外网站查询资料,可以在浏览器设置正向代理
当服务器只允许某个端的IP访问(比如googe),所以我们需要请求运行访问的那个客户端,在让其帮我们转发请求
正向代理模型图
-
反向代理:
客户端需要自己去请求DNS获取服务端地址;
代理是为服务端服务的;
红色虚线表示防火墙;
配置在服务端,分发客户端请求到不同的服务端
主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息
-
实验:
#关闭防火墙
#17,18安装jdk,配置Java,保证版本一致
#17,18安装Tomcat,版本一致
#19安装nginx
vim /usr/local/nginx/conf/nginx.conf #配置nginx
upstream tomcat {
server 192.168.200.18:8080 weight=1;
server 192.168.200.17:8080 weight=1;
} #weight算法,
location ~ \.jsp$ {
proxy_pass http://tomcat;
} #确认路径
#确认17,18,Java启动,19 nginx启动
#查看端口,并且在浏览器确认
nginx负载均衡算法
- 轮询(默认)
weight=1 #一个一个轮着来 - weight(轮询权值)
数字越大,轮的越多 - least_conn
会自动分配到清闲的服务器upstream tomcat { least_conn server 192.168.200.18:8080 weight=1; server 192.168.200.17:8080 weight=1;
- ip_hash
每一个请求安装访问ip的哈希结果分配,使一个ip有固定的的一台后端服务器,请求记录==哈希。upstream tomcat { ip_hash server 192.168.200.18:8080 weight=1; server 192.168.200.17:8080 weight=1;
- fail,url_hash
需要下载模块
fail可以根据响应时间长短分配
根据URL的哈希分配
nginx负载均衡调度状态
- down:表示当前的server不参与负载均衡
- backup:预备,只有其他的出现故障才会使用
- max_fails:允许请求失败的次数,默认是1
- fail_timeout:请求失败的时间,在经历max_fails后,暂停服务时间