Skip to content


使用nginx负载均衡lucene

server a是之前退役的,现存放着一些小些php站点和lucene 搜索, server a cpu: Xeon(TM) CPU 2.80GHz (双核2) mem:1G2 disk:scsi 74G *2 (raid 0) os:as4 app:nginx+php+fcgi+xcache+mysql+tomcat+postfix

server b为刚退役,没有站点。 server b cpu: Xeon(TM) CPU 2.80GHz (双核2) mem:1G2 disk: sata 80G *1 (7200) os:as4 app:nginx+tomcat


server a 的搜索每天有几十万PV,平均load 5,更新索引达30,高峰时tomcat会挂掉。 产品结构:nginx代理tomcat,jsp提供搜索结果,jsp+mysql记录搜索关键字,crontab定时生成索引。

方案一:server a 提供生成索引和mysql服务,server b 提供纯web搜索服务,用rsync同步索引文件。 方案二:server a 提供生成索引和mysql服务,server b 和server a使用负载均衡一起提供需web搜索服务,用rsync同步索引文件。

一。先设置两台服务器时间是同步的。

Linux的时间设置与同步 (NTP)

二。设置rsync时不需要登录。 用server b 去拉server a的索引 使用crontab+ssh每天自动完全备份mysql数据

三。写更新的bash和设置crontab rsync在第一次是全部同步,以后就是只更新有异动的文件。 目前索引为1G左右, cache使用三级目录分布小文件,占4G

在server b上 vi rsync_index.sh #!/bin/bash #获取lucene索引 /usr/bin/rsync -avlR –delete -e /usr/bin/ssh [email protected]:/lucene/index / >> /opt/shell/rsync_index.log

vi rsync_cache.sh #!/bin/bash #获取职位的cache和关键词 /usr/bin/rsync -avlR –delete -e /usr/bin/ssh [email protected]:/lucene/keyword / >> /opt/shell/rsync_keyword.log /usr/bin/rsync -avlR –delete -e /usr/bin/ssh [email protected]:/lucene/cache / >> /opt/shell/rsync_cache.log

crontab每小时更新一次。 50 /bin/sh /opt/shell/rsync_cache.sh > /dev/null 2>&1 52 /bin/sh /opt/shell/rsync_index.sh > /dev/null 2>&1

四。设置nginx 设置nginx的配置文件,使用方案一

      location / {            proxy_pass http://127.0.0.1:8080;        location ~* ^.+.(jpg|jpeg|gif|png|css|js)$ {     root /opt/tomcat/webapps/search;     access_log   off;     expires 3d;     break;        }       }           

重启nginx,将域名指向server b. server b平均load 为5,当rsync更新时load 会达到20,还是不可靠,使用方案二。

     upstream mysvr {  #ip_hash; (据说可以以C类IP将用户固定在某台server,开启后并发大降不能肯定是否有bug)  server 127.0.0.1:8080;  server 221.0.0.1:8080;      }

server {       …..

      location / {            #proxy_pass http://127.0.0.1:8080;     proxy_pass http://mysvr;        location ~* ^.+.(jpg|jpeg|gif|png|css|js)$ {     root /opt/tomcat/webapps/search;     access_log   off;     expires 3d;     break;        }       }           

      …….

}

重启nginx,将域名指向server b. server b 和server 平均load 为1~2,更新会到5,还可以接受。

Posted in Nginx, Tomcat.

Tagged with , , , .


No Responses (yet)

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.