工作上的的一个springmvc项目,目前需要做一个热备。
热备:就是服务器高可用应用的另一种说法,从狭义上讲,双机热备特指基于高可用系统中的两台服务器的热备.
我们这里说的热备,其实是做一个负载均衡。
目前的策略是用nginx来实现负载均衡。

原料准备

nginx, 两个linux服务器(服务器上分别放置一份项目代码并启动)

需求分析

1.需要做到请求分发,也就是负载均衡,nginx的策略有轮训,权重,以及ip_hash(ip分配),least_conn(最少连接优先).
nginx不能做到的策略有fair(时长优先)和url_hash(根据url分配连接)。
2. 因为项目里有token,所以选择了ip_hash策略。同时因为nginx转发请求会不转发带有“_“的报头header,所以需要在配置文件里加上针对的配置。

实施步骤:

step1. 选定一个服务器,安装nginx。具体的安装步骤,这里不写了。具体的过程可以参考

如果安装或者启动nginx发现报错error没有log file之类的问题。可以自己新建个文件夹,但不要新建log文件。然后nginx就可以启动了 。

step2

. 修改nginx配置文件nginx.conf
修改后要重启nginx服务。 命令如下: ./nginx -s reload

nginx监听10.xx.xx.33的***8090*** 端口,所有这个路径的/valueAdd请求都会被nginx监听并根据ip_hash策略进行转发。要么转发到33:8080要么就是34:8080。

配置了***backendIP***来查看转发的请求到了哪个服务器

nginx nuxt nginx nuxt 502如何跳转到热备_负载均衡


step3

联机测试。测试nginx负载均衡、ip_hash策略 和 nginx.conf有关header配置是否生效。

可以看到请求是8090/valueAdd打头,这样请求就会到nginx里。根据backendIP 看到这个请求被分发到33:8080端口了。

nginx nuxt nginx nuxt 502如何跳转到热备_负载均衡_02


这个请求会生成一个access_token。

nginx nuxt nginx nuxt 502如何跳转到热备_服务器_03


因为access_token是里面有下划线,正常来说nginx会不转发这个报头header的。不过我们配置了

#处理nginx转发请求时,head里token
	underscores_in_headers on;

所以nginx会把access_token一起带上的。

nginx nuxt nginx nuxt 502如何跳转到热备_nginx nuxt_04


可以看到bankendIP 也是33.8080.所以ip_hash策略也是成功的。