发表于: 2020-06-29 23:30:43
1 1832
今天完成的事情:
1. 部署两个应用服务器
2. nginx 使用 upstream 负载均衡
遇到的问题:
1. 本地静态资源获取不到
原因:
配置文件里有静态文件的默认配置,不符合项目实际情况。
解决的方法:
去除静态文件的错误配置,所有请求全部转发。
2. 数据无法缓存
原因:
subList 不支持序列化。
解决的方法:
new ArraryList<>(list.subList(0, 4));
3. 项目不适合负载均衡
我使用了 cookie-session 的验证方案,并且表单加入了 csrf 校验,/u/ 路径下的页面做了基于 session 的跳转逻辑,在负载均衡下完全跑不通。
选择有两个:
a,重构项目,换成基于 token 的验证方案。
b,压测时仅测试首页。
收获:
1. upstream 配置负载均衡的简单使用
upstream myapp {
server localhost:8080 weight=1 max_fails=2;
server localhost:9080 weight=1 max_fails=2;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://myapp;
}
}
这个示例配置就是全部转发,没别的。
upstream 还有一些别的配置,我这里没有用上。
2. tomcat 多实例配置
参考:https://www.cnblogs.com/mafly/p/tomcat.html
主程序只需要一份,关键在于配置环境变量 $CATALINA_BASE
明天的计划:
1. 重构项目,换成 JWT 校验
把登录的那部分完全去掉是可以完成压测的,不过 JWT 我没做过,考虑到这是个很流行的解决方案我还是做一做吧。
或者做成 cookie-session 与 JWT 两种都支持的?
redis 是支持缓存 session 的,我再好好想想要怎么搞。
评论