使用nginx负载均衡lucene

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: server a是之前退役的,现存放着一些小些php站点和lucene 搜索,server acpu: Xeon(TM) CPU 2.80GHz (双核*2)mem:1G*2disk:scsi 74G *2 (raid 0)os:as4app:nginx+php+fcgi+xcache+mysql+tomcat+postfixserver b为刚退役,没有站点。

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/sshrsync@221.0.0.1:/lucene/keyword/ >> /opt/shell/rsync_keyword.log
/usr/bin/rsync -avlR –delete -e /usr/bin/sshrsync@221.0.0.1:/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_passhttp://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_passhttp://127.0.0.1:8080;
    proxy_passhttp://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,还可以接受。

<SCRIPT type=text/javascript><!-- google_ad_client = "pub-4117525570087365"; /* 468x15, 创建于 08-10-27 */ google_ad_slot = "2143600273"; google_ad_width = 468; google_ad_height = 15; //--> </SCRIPT> <SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript> </SCRIPT> <SCRIPT src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></SCRIPT> <SCRIPT> window.google_render_ad(); </SCRIPT>
相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
1月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
26 0
|
1月前
|
负载均衡 应用服务中间件 nginx
nginx-tomcat反向代理以及负载均衡测试
nginx-tomcat反向代理以及负载均衡测试
|
19天前
|
负载均衡 监控 应用服务中间件
Nginx负载均衡:你的网站流量翻倍利器
Nginx负载均衡:你的网站流量翻倍利器
15 0
|
20天前
|
消息中间件 关系型数据库 MySQL
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
使用Nginx的stream模块实现MySQL反向代理与RabbitMQ负载均衡
21 0
|
26天前
|
缓存 负载均衡 算法
【Nginx】Nginx 负载均衡
【1月更文挑战第25天】【Nginx】Nginx 负载均衡
|
26天前
|
负载均衡 应用服务中间件 nginx
【实践】使用Nginx作为GrayLog日志接入的负载均衡
【实践】使用Nginx作为GrayLog日志接入的负载均衡
13 0
|
1月前
|
负载均衡 算法 应用服务中间件
深入了解Nginx底层负载均衡算法
深入了解Nginx底层负载均衡算法
26 0
|
1月前
|
负载均衡 应用服务中间件 nginx
Nginx四层负载均衡在秒杀系统中的应用
Nginx四层负载均衡在秒杀系统中的应用
18 0
|
1月前
|
负载均衡 应用服务中间件 nginx
Nginx负载均衡选择在秒杀系统中的应用
Nginx负载均衡选择在秒杀系统中的应用
25 0
|
1月前
|
负载均衡 网络协议 小程序
Nginx配置Tcp负载均衡
Nginx配置Tcp负载均衡

相关产品

  • 云迁移中心