实验环境
- 机器1的ip:10.10.10.248, tomcat端口:8088
- 机器2的ip:10.10.10.166, tomcat端口:8088
- nginx所在机器ip:10.10.10.248, 监听端口80
启动两个tomcat,配置nginx
我使用的是jenkins启动的tomcat,一键部署成功, 效果如下:
我的nginx是部署在248服务器上,监听的是80端口, 现在想做的就是:
在访问http://10.10.10.248:80的时候,nginx把所有的请求均等转发到10.10.10.248:8088和10.10.10.166:8088
nginx配置/etc/nginx/sites-available/default
如下:
1 | upstream kyg.com { |
修改nginx配置后需要重新加载配置sudo nginx -s reload
查看日志,分析结果
- 分别在两台服务器上
tail -f /home/kyg/logs/blog/all.log
- 然后访问http://10.10.10.248
- 观察哪台服务器会刷日志
- 再次访问http://10.10.10.248
- 观察哪台服务器会刷日志
- 重复访问观察…
发现nginx会把所有的请求均等的(发给你一次发给我一次)转发到两台服务器, 当然你也可以配置权重,让某台服务分担的压力小一点,或者动态负载均衡等。
kill其中一个tomcat
我现在把166服务器kill了,在访问并观察日志, 结果:
- 网站仍然可以正常访问
- 所有的访问全部转发到248服务器
分布式服务需要解决的几个问题
- 会话共享,请参考我的另一篇博客shiro集成redis实现session集群共享
- 文件共享, 请参考我的另一篇博客ubuntu下配置ftp服务器