需求:安装两个tomcat服务,通过nginx反向代理。
修改端口:打开bin目录下的server.xml文件
修改下面三个端口, 不能重复防止冲突;
<Serverport="8005"shutdown="SHUTDOWN">
<Connectorport="8080"protocol="HTTP/1.1" #这个是访问的端口 ,注意每个服务器的三个端口都不能重复
connectionTimeout="20000"
redirectPort="8443"/>
修改首页内容
打开wabapp下面的root目录下的index.jsp文件,在标题头上可加上标识用于区分服务器
打开nginx下的conf下的nginx.conf;
同一个网址在两台tomcat上使用,nginx完成负载均衡代理
#配置服务器集群
upstream tomcat_server1{ #给代理服务器集群取个名字
server 192.168.160.128:8081; #linux上的ip加上tomcat的端口号:在上面有配置好
server 192.168.160.128:8082;
server 192.168.160.128:8083;
}
#在网页中输入192.168.160.128:80时会访问以上三个服务器中的一个,如果没加权重就是默认轮询从第一个开
#始,如果加了权重就是按照比例随机
server {
listen 80;
server_name 192.168.160.128;
location / {
# root html161;
proxy_pass http://tomcat_server1; #请求找到上面的服务器集群名
proxy_http_version 1.1; #协议版本
proxy_set_header Host $host; #加上请求头
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
说明nginx默认的负载均衡策略是轮询策略
改完nginx.conf文件重启nginx报以下的错
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
解决:
修改nginx.conf正确的格式,然后删除nginx.pid文件
rm -f /usr/local/nginx/logs/nginx.pid
负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量(每秒钟可以处理的请求数QPS)、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为LoadBalance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至tomcat服务器。
权重
在网页中输入192.168.160.128:80时会访问以上三个服务器中的一个,如果没加权重就是默认轮询从第一个开始,如果加了权重就是按照比例随机
upstream tomcatservercluster{
server 192.168.160.133:8081 weight=2;
server 192.168.160.133:8082 weight=9;
server 192.168.160.133:8083 weight=1;
server 192.168.160.133:8084 weight=9;
}
轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
upstream tomcatservercluster{
server 192.168.160.133:8081 down; #下线,休息不参与负载
server 192.168.160.133:8082;
server 192.168.160.133:8083;
server 192.168.160.133:8084;
}
从访问结果看出8081不提供服务了
绑定ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,第一次访问使用的哪个服务器以后固定就用那个了,权重无效了.
#配置服务器集群
upstream tomcatservercluster{
ip_hash;
server 192.168.160.133:8081 weight=2;
server 192.168.160.133:8082 weight=9;
server 192.168.160.133:8083 weight=1;
server 192.168.160.133:8084 weight=9;
}
第一次访问使用的哪个服务器以后固定就用那个了,权重无效了
替补
#配置服务器集群
upstream tomcatservercluster{
server 192.168.160.133:8081;#假如8081端口宕机
server 192.168.160.133:8082;
server 192.168.160.133:8083;
server 192.168.160.133:8084 backup; #替补
}
down表示当前的server暂时不参与负载
weight默认为1.weight越大,负载的权重就越大
backup替补机:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
如果报错:
[root@localhost sbin]#"/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
执行: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf