Archive for the Category » Web架构/负载/性能 «

Haproxy: uptime = 465d 9h37m14s

今天需要对服务器进行架构方面的调整,无奈需要重启Haproxy服务,发现它已经运行了465天没有重启过了,这一年多,还是挺省心的!

QQ截图20140107025807

用Chrome的调试工具改善网站整体访问性能

Chrome浏览器的Developer Tools里面有个Audits工具,可以很方便的帮我们发现网站存在的一些常见问题,比如缓存时间设置问题,header里面是否有CacheControl Public问题,Gzip是否打开等等,建议做系统管理的可以尝试一下。

另外,在IE下有个HttpWatch Professional的插件,这个工具也提供很全面的网站访问改进建议!

准备运行Audits

查看Audits结果

cherokee

估计是喜欢开cherokee,最近新上线的服务器我也懒得配置Nginx,直接用cherokee了,配置起来很方便,对于当前访问量不大的站点,其实用那个都行,简单就好,简单就好!

 

使用HAProxy对MySQL进行负载均衡和状态监控

转载请保留原文内容,并声明转载地址:http://www.toplee.com/blog/1284.html

乐搜(lesoo.com)使用HAProxy已经很久了,但主要用在前端web请求的负载均衡和状态监控上,对于后端的Memcached以及MySQL却一直没有应用,最近对系统架构进行了小规模的整理,把MySQL也收编到了HAProxy下,经过一段时间的使用,体验还是不错的。

详细的HAProxy的安装配置我就不说了,主要针对HAProxy如何监控检测后端MySQL服务器的状态说两句。

我们的环境由两台master和若干台slave数据库组成,在HA的配置中,可以设置灵活的策略和进行slave的分组,如果系统更大了,将还会根据业务系统来拆分若干个master和slave组。

声明:以下内容应用和验证环境是基于 FreeBSD 8.2 环境,MySQL在5.1以上版本,理论上 Linux 的各个版本基本都能通过,如果有不能通过的情况,请别随意张口扔板砖,欢迎添加评论留言向我提问

HA对MySQL状态监控实现的方式很多,不过大多逻辑都一样,使用自己编写的脚本程序(可以是shell、php、perl等你熟悉的语言)监控mysql的运行情况,然后通过HTTP的方式输出运行结果给HA,我使用的是shell程序来实现的监控,结合 FreeBSD的inetd服务来实现监控端口的提供

more »

为2010架构师大会准备PPT中

下月底,在喜来登有个2010年架构师大会,有幸受邀去登台献丑,最近得认真准备下PPT,好好备备课,估计到时会见到好多老朋友。

大会官网: http://sacc.it168.com/3.html (嘿嘿,有张个人照片,献丑了)

Haproxy在Freebsd下不能记录日志的问题

这几天给蹦心(bengxin.com) 开发环境配置haproxy,遇到的这个问题困扰了我一个晚上,google和baidu了N次也没有找到解决办法,最后自己通读了syslogd和syslog.conf以及haproxy的log相关的man pages,经过若干次的syslogd -d (debug) ,终于在debug日志里面发现了端倪,有这么一个东西导致了日志不能正确的记录到haproxy指定的日志文件里面:

validate: dgram from IP 127.0.0.1, port 49336, name localhost.bengxin.com;
rejected in rule 0 due to port mismatch.
rejected in rule 1 due to port mismatch.
rejected in rule 2 due to port mismatch.

于是给syslogd启动参数加入了下面的内容:

-a 127.0.0.1/32:* -a localhost:* -a 192.168.222.0/16:*

于是乎,期待了很久的haproxy日志出现了!

dev# tail -f /var/log/haproxy/haproxy_3.log
Aug 22 15:32:06 localhost haproxy[64136]: Proxy www started.
Aug 22 15:32:06 localhost haproxy[64136]: Proxy cherokee started.
Aug 22 15:32:06 localhost haproxy[64136]: Proxy wap started.
Aug 22 15:32:06 localhost haproxy[64136]: Proxy pic started.
Aug 22 15:32:06 localhost haproxy[64136]: Proxy img started.
Aug 22 15:32:06 localhost haproxy[64136]: Proxy public started.
Aug 22 15:32:06 localhost haproxy[64136]: Proxy public started.
Aug 22 15:32:59 localhost haproxy[64137]: 219.142.128.30:6416 [22/Aug/2009:15:32:59.754] public stats/<stats> 0/-1/-1/-1/0 200 17329 - - PR-- 0/0/0/0/0 0/0 "GET /?stats HTTP/1.1"
Aug 22 15:32:59 localhost haproxy[64137]: 219.142.128.30:6416 [22/Aug/2009:15:32:59.754] public stats/</stats><stats> 0/-1/-1/-1/0 200 17329 - - PR-- 0/0/0/0/0 0/0 "GET /?stats HTTP/1.1"
</stats>

我的haproxy和日志相关的配置部分如下:

more »

现在的web server,你都用什么?

LAMP叫了多年了,其实对于Apache来说,很多人都已经没有在使用了,很多人都在开始用Lighttpd和Nginx,其间的争论也很多,各种评测也不少,但是还是萝卜白菜各有所爱罢了。

在面对选择的时候,我也很困扰,实际上Apache固然是很久没用了,并非性能问题,而是感觉配置方法没有那么让我喜欢,有些臃肿,一直以来Lighttpd是我比较喜欢的,不管在配置、性能和架构方面都显得很简单,但是Lighttpd开发团队变迁问题以及1.5版的反反复复迟迟未推出,让我对Lighttpd的担忧多了一些,1.5计划要推出的对Comet的支持是我一直期待的,但是目前看来还是遥遥无期,于是就只剩下Nginx了,好在目前Nginx的开发更新还是比较快的,加上应用也越来越多,效果也不错,但是Nginx的技术架构总让我感觉有些别扭,如果说用Nginx来做Proxy或者负载均衡的辅助架构,我认为还是非常不错的。

朋友们,你们现在的网站选择的web server都什么情况呢?

Nginx和Lighttpd的Rewrite差别

简单的说,其实没啥差别,关键的一点,记住下面几个Nginx的Flags:
last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301

另外,有个东西很关键,曾经折腾我好几个小时才搞定,就是Nginx里面配置 {m,n} 这样的正则规则的时候,条件必须加上双引号,否则总是报错无法通过,官方文档里面真是很难找到这些东西,很晕。

把mrtg、awstats和bugzilla都移到了lighttpd下

  今天晚饭后抽了点闲功夫,把mrtg、awstats和bugzilla都移到的lighttpd下,于是把之前单独为这几个东西跑的apache停了,全部使用lighttpd提供web服务,系统开销又能小一些。

  mrtg很容易移植,几乎不用配置甚么就可以了,awstats和bugzilla都是perl的,需要配置lighttpd的cgi支持,简单的使用下面一行即可搞定awstats的移植

$HTTP["url"] =~ "^/awstats/" {
        cgi.assign = (
            ".pl" => "/usr/bin/perl",
            ".cgi" => "/usr/bin/perl"
            )
}

  不过照着上面的代码设置bugzilla的时候却遇到了问题,bugzilla的每个文件里面第一行的perl命令后加入了 -wT参数,在lighhtpd下以cgi模式运行会报 500 错误,尝试修改了index.cgi,去掉 -wT参数后可以正常运行,于是使用了下面的一句命令,把全部的cgi文件中-wT参数都给去掉了,这句命令估计对很多人都能有帮助:)

sed -in-place -e "s/ -wT/ /g" `grep " -wT" -l ./*.cgi`

  搞定!

  逐渐的,我开始抛弃Apache了。

Lighttpd 图片和视频等文件的防盗链处理

  用过Apache的朋友都知道mod_rewrite可以用来进行处理防盗链,Lighttpd也有同样的功能,而且总的来说,lighttpd.conf配置文件比httpd.conf更简单明了。 原来一直使用Apache来处理防盗链,今天修改了服务器上Lighttpd的配置,直接实现了防盗链,下面是防盗链部分的代码。

$HTTP["referer"] !~ "^($|http://.*\.(toplee\.com|8zone\.cn))" {       
  $HTTP["url"] =~ "\.(jpg|jpeg|png|gif|rar|zip|mp3)$" {
    url.redirect = (".*"    => "http://www.toplee.com/blog/")
  }
}

  懂点编程的朋友一定惊叹lighttpd的配置如此简洁明了,我非常喜欢这种风格的东西!
Lighttpd