- 论坛徽章:
- 2
|
server a是之前退役的,现存放着一些小些
php
站点和
lucene
搜索,
server a
cpu: Xeon(TM) CPU 2.80GHz (双核*2)
mem:1G*2
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:1G*2
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同步索引文件。
一。先设置两台服务器时间是同步的。
二。设置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 rsync@221.0.0.1:/lucene/index / >> /opt/shell/rsync_index.log
vi rsync_cache.sh
#!/bin/bash
#获取职位的cache和关键词
/usr/bin/rsync -avlR –delete -e /usr/bin/ssh
[email=rsync@221.0.0.1:/lucene/keyword]rsync@221.0.0.1:/lucene/keyword[/email]
/ >> /opt/shell/rsync_keyword.log
/usr/bin/rsync -avlR –delete -e /usr/bin/ssh
[email=rsync@221.0.0.1:/lucene/cache]rsync@221.0.0.1:/lucene/cache[/email]
/ >> /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,还可以接受。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4206/showart_1359089.html |
|