实现效果
浏览器输入192.168.207.129,实现负载均衡的效果,平均分配到两个tomcat上面。
ip:192.168.207.129
tomcat1端口:8080
tomcat2端口:8090
在一台虚拟机实现负载均衡。
如何搭建tomcat,及搭建nginx,百度一大把这边主要做一些负载均衡的配置。
1、测试访问nginx及tomcat是否能正常访问
测试nginx
测试tomcat1端口8080
测试tomcat2端口8090
2、配置nginx实现负载均衡
vim nginx.conf
upstream myserver{
server 127.0.0.1:8080 weight=1; #添加tomcat1服务器的ip加端口
server 127.0.0.1:8090 weight=1; #添加tomcat2服务器的ip加端口
}
server {
listen 80;
server_name 192.168.207.129; #使用ip访问我们就设置为ip
location / {
proxy_pass http://myserver/test/; #添加负载均衡规则
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
保存退出,然后重启nginx
3、测试访问
第一次访问
第二次访问
两次刷新结果不同,说明已经分发至两台服务器。
模拟当一台tomcat出现故障时是否能提供服务。(关闭一台tomcat测试访问)
当把tomcat1关闭时,还是可以提供访问。nginx负载均衡配置完成,实现负载均衡功能。
扩展
负载均衡的作用就是将不同的请求分发至不同服务器,减轻单台的压力,当其中一台出现故障也不会导致业务中断。
nginx负载均衡的几种方式
本次实验所使用nginx负载均衡的“轮询”方式,当后端的tomcat挂掉时能自动的剔除。我们设置轮询的都为1说明是平均分配,也就等同于默认的策略。
upstream myserver{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8090 weight=1;
}
可以指定轮询的几率,让8080端口的服务器接收请求多一些,8090接受请求少一些。
upstream myserver{
server 127.0.0.1:8080 weight=3;
server 127.0.0.1:8090 weight=1;
}
注意事项:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。
ip_hash
按ip的hash的结果分配,当客户第一次访问了我们8080端口时,第二次在进行访问时会通过哈希算法分配至8080端口服务器。客户定于就固定访问这个服务器,解决session问题。
这样就不会出现用户第一次登陆8080端口服务器,然后刷新了页面跳至另一台服务器,这样用户第一次登陆的信息就会丢失。
upstream myserver{
server 127.0.0.1:8080;
server 127.0.0.1:8090;
ip_hash;
}
fair
根据服务器的响应速度进行分配,就是哪台服务器的响应速度快就分配至哪台服务器。
upstream myserver{
server 127.0.0.1:8080;
server 127.0.0.1:8090;
fair;
}
url_hash(通过请求url进行hash,再通过hash值选择后端server)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。、
upstream myserver{
server 127.0.0.1:8080;
server 127.0.0.1:8090;
hash $request_uri;
}
server {
listen 80;
server_name 192.168.207.129;
location /image {
proxy_pass http://myserver;
}
}
当请求url为/image时,会走url_hash;同样配置了upstream模块,hash $request_uri表明了是按照url规则进行hash策略。
upstream还可以为每个设备设置状态值,这些状态值的含义分别如下:
down 表示单前的server暂时不参与负载
upstream myserver{
server 127.0.0.1:8080;
server 127.0.0.1:8090 down;
ip_hash;
}
backup 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
upstream myserver{
server 127.0.0.1:8080;
server 127.0.0.1:8090 backup;
ip_hash;
}
欢迎大家阅读,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。