一、前言
我们窗帘POS系统一直是单机运行,因为门店并不多访问量也有限,稳定性还是不错的,但现在老板提出要再加一台机器水平扩展一下,当其中一个实例无法提供服务后,由另外一个实例继续提供服务,平时另外一个实例仅做为backup。来看一下怎么做,虽然我个人觉得这个意义并不大。。
二、配置说明
两台机器
第一台: 47.*.220.169 部署了Nginx以及收银台服务端store.jar。
第二台: 116.*.135.241 部署收银台服务端store.jar
这个配置和一般负载均衡配置差不多,但多加了几个参数
1、max_fails
max_fails:指的是请求server发生错误最多次数,错误次数达到该值,Nginx会标记该Server为故障状态,后续就不会再请求它(需要和fail_timeout参数配合使用)。
2、fail_timeout
fail_timeout:故障等待超时时间,max_fails是设置达到多少次错误会被标记为故障状态,而在fail_timeout时间之后会被重试,重试成功重新被标记为正常状态。
3、backup
可以为一个upstream设置一个backup的server,在生产server全部都出现问题之后,可以自动切换到备用server,为恢复服务争取时间。
测试结果:
通过观察应用日志,发现当把第一台Java进程Kill,请求会自动转发到第二台,正常提供服务,而当把第一台服务恢复后,请求又转发到第一台,不会再去第二台