首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Nginx+Tomcat集群的故障迁徙实验

2013-09-16 
Nginx+Tomcat集群的故障迁移实验  经过前面的集群实施,已经将Nginx+Tomcat的集群环境给配置起来了,接着继

Nginx+Tomcat集群的故障迁移实验

  经过前面的集群实施,已经将Nginx+Tomcat的集群环境给配置起来了,接着继续进行集群的故障转移实验.

  这里的故障转移包括节点关闭情况和节点宕机情况的故障转移.

  首先对于节点关闭或加入的情况,比如某一Tomcat节点关闭或重启的情况,在这种情况下,nginx可以快速识别到已停用或新加入的节点,基本上可以做到无延时的故障转移.所以这里主要实验的是tomcat宕机的情况,比如tomcat运行过程中出现内存溢出或长时间不响应的情况.

  为了实验的需要,在tomcat7080的启动参数中增加内存的配置,设置其最大可用内存为64m:

  

?

  日志文件中的输出结果为:


Nginx+Tomcat集群的故障迁徙实验
?

?

  从日志输出中可以看到,nginx仍然会尝试去请求已经宕机的7080端口,但在等待60秒之后将请求转发给了6080,然后在大约13秒左右的时间内都只会请求6080端口,然后再去尝试请求7080端口,依次循环.

  

  要解释出现这个现象的原因,需要来看一下集群中server的参数以及proxy_connect_timeout, proxy_read_timeout等参数的设置

?

  在nginx中,upstream中的server语法如下:

  (参考http://nginx.org/en/docs/http/ngx_http_upstream_module.html)

 upstream cluster {        server localhost:6080 weight=10 fail_timeout=1m;        server localhost:7080 weight=10 fail_timeout=1m;  }    location / {  proxy_pass http://cluster;  proxy_set_header Host $host;     proxy_set_header X-Real-IP $remote_addr;  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  proxy_connect_timeout       2s;  proxy_read_timeout          5s;  proxy_send_timeout          5s;}

?即可承受的请求响应时间为5s,在故障被检测到之后,1m内不再向故障节点发起新请求.(实际生产环境中可按需要适当进行调整)

  

热点排行