负载均衡:就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器,从而不会产生集群中大量请求只请求某一台服务器,从而使该服务器宕机的情况。
创建负载均衡环境:创建两个tomcat服务:8091和8093,同一个项目复制之后改个名字或者端口号就可以了
idea中服务搭建成功之后,现在在nginx中部署负载均衡
#tomcats是自定义的,不是一定要命名这样的
upstream tomcats{
server localhost:8091;
server localhost:8093;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http:tomcats;
}
}
启动tomcat服务一级nginx服务,重启nginx,访问:localhost/wer
访问接口,每次刷新都会在这两个端口来回跳动
upstream tomcats{
server localhost:8091 weight=8;
server localhost:8093 weight=2;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcats;
}
}
nginx.exe -s reload命令重启nginx,然后重新访问localhost/wer即可,可以看出,端口8091出现的次数多
upstream tomcats{
ip_hash;
server localhost:8091 weight=6;
server localhost:8093 weight=4;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcats;
}
}
重启nginx一级重新访问localhost/wer,不管访问多少遍都是同一个结果
nginx的高可用实现
问题描述:当nginx访问tomcat服务器时,如果后端服务器宕机,则nginx依然会访问故障机,这样会造成用户响应变慢,如何优化?
1.down属性:用来表示tomcat服务器,告知nginx,该服务器已经下线,以后不会访问该服务器
2.backup:设定备用机,正常情况下,不会主动提供服务,当服务器遇忙时/或者主机下线时,才起作用
(反向代理的时候监听端口千万不要写成80,要不然页面一直出现什么404 Not Found,换个接口,当然,能换个局域网名称就不用改了,还有最重要的使用英文版的标点符号)
upstream tomcats{
server localhost:8091 weight=6 down;
server localhost:8093 weight=4;
}
server {
listen 1111;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcats;
}
}
一直刷新结果都是8093,backup同理,这里就不作实验了
tomcat高可用实现
1.max_fails=1指定最大的失败的次数,规定最大的失败次数1
2.fail_timeout=60s;如果失败的次数达到最大失败次数60s内,nginx就不会再次访问
upstream tomcats{
server localhost:8091 weight=6 max_fails=1 fail_timeout=60s;
server localhost:8093 weight=4 max_fails=1 fail_timeout=60s;
}
server {
listen 1111;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://tomcats;
}
}
在线部署步骤
需求:要求用户正常使用,并且完成项目升级,打成jar包,重新部署,如何操作
关键点:原有的服务必须关闭,之后才能升级
步骤:1.将设计部署的策略2.通过down属性标识下线 3.之后部署新的项目,如果没有问i题,则上线运行
4.重复执行上述的操作即可 5.上述的操作一般都有脚本完成,几分钟即可上线操作,linux运维