technology

sacc 第二天

今天比较失望,收获不多,免费拿了两本书,听讲座糊涂糊涂的,就不多写了。

本来是选了本书的,但迟到了,结果早没了。。。唉,这个书真的很抢手呢。。。

南非蜘蛛说的太虚了,涵盖面太广了。。。听下来,实在没得到什么阿。。。我昨天听sina 的,好像都说是7×24 值守的,但sohu 已经开始无人值守了,应该部分已经实现了

sery 仍然与以前的演讲风格一样。。。我想说。。。这样是不行的阿。。。

SACC 第一天

SACC (system architect conference china) ,系统架构师大会第一天,写着8 点进场,我想想,估计不会那么早演讲吧,于是赶在8 点15 到喜来登,想不到还是早了,傻B 了,9 点才开始。

随便说说我的感想笔记吧,我一般选择不在ppt 出现的那些话,或我觉得很有趣的部分mark 下。

1,阿里云,纯讲运维管理

有一个庞大的运维数据库,储存了很多方面的信息,还包括了哪些应用对应哪些配置的,很多很多。web 界面展示,很强大。。。

提供给运维的接口,包括:web , api , cli 。cli 我觉得最有趣!!提供一个简单的cli 界面给运维,不需要ssh 。

还有一个有趣的,他们可以做到,down 了一两台服务器不要紧,每周统一一个时间去弄那些down 了的服务器。。。强大。。。我们可是马上去处理的。。。

2,F5 ,纯sell 自己的产品。

没怎么听,F5 我之前只是以为它是一家专卖负载均衡设备的公司,想不到现在卖解决方案了,做得挺好的嘛,但是,大家追求的都是低碳,低成本。。。

Q & A 环节,第一个发问的人非常V5 ,说:“我们是来听技术的”,全场鼓掌。。。让讲师郁闷死了。。。

3,QQ 游戏运营,就是讲运营的

既然讲运营的,就是拿些数据出来show show ,其实,也很有分量阿!

QQ 游戏相关的部分数据:2W台server、44个IDC、160TB数据、100G带宽。还不包括 qzone 的,可怕。。。

分发配置脚本,都是一个一个IDC 来分发的了。。。我们还是一台一台地来。。。

4,章文嵩介绍的淘宝图片CDN 服务(今天最亮点)

我也是看这次架构师大会的讲师介绍,才知道他去了淘宝呢。。。我上一年没听到他的讲座,今天第一次听,大师阿,整个演讲下来朴实无华,听就知道是搞技术的很实在的人。

淘宝开发了自己的文件系统来承载,叫 taobao file system ,就是 TFS 了。据说,原理和 GFS 差不多,将在9 月开源呢。

整个架构说下来,真让人流口水阿,但无奈 ,自己的应用去不到这个量。不过,又是怎么样的应用才会像淘宝那么大的量呢??放眼全世界,真的少之又少。

淘宝的那些图片,都是实时生成缩略图的哦,强大。现在的淘宝,已经可以向cpu 厂商提需求了,让后者帮它们打造低碳cpu ,牛X 阿!

想当初,他们也只是花钱解决问题,购买大量昂贵的设备去撑业务。到后来,厂商的设备已经无法满足他们的需求了,于是就自己搞了这么一套东西出来。他们也说得对,厂商是面对多数客户的,淘宝已经超越了那个量级,厂商也不会重点考虑这些少数派客户的了。

哈哈,我们就停留在花钱解决问题的程度上,什么时候才能长进呢?

5,chinacache ,自己业务的简介

这部分。。。也是卖广告,不过没有F5 吹得那么过分。。。只是平时都有用他们的服务,觉得还行,亮点不多,回去看看ppt 就行了。

6,sina ,平台化的介绍

童剑的讲座,上一年没听到,今年,也错过了。。。因为有报障要处理!!。。。真倒霉!!

就听了开头的部分,有一点比较有趣的,一般的gslb ,都是基于全局dns 的,但他们有一些应用,好像说是大文件下载吧,是基于文件的 gslb ,第一次听呢。。。

7,sina ,门户CDN 平台的介绍

其实,这个与我们的环境非常相似,我很认真地听完了。

有几点又是十分有趣的:

他们的4 层负载均衡,是 arp proxy+ lvs ,据说可以解决lvs 的瓶颈(单一的网卡局限),我还听不太明白呢。。。回头研究一下 ppt 。。。

由于squid 只能利用到单cpu ,他们倒是挺巧妙地利用了,假设有4 核,1核用于系统调用,1 核用于进程A squid ,1 核用于进程B squid ,1 核用于io 。

一般的dns 是根据地区来解析到最近的一个边缘服务器,但是,如果用户自己设定了 local dns 呢?这样就会造成不准确的解析了。他们的做法是,根据用户的 ip 再作判断,重定向到用户最近的边缘服务器。

Michael Lee 因为身体原因无法出席,昨晚我也看到他的blog 了,猜想他今天不会来的了,果然。。。很可惜。。。我看的第一篇关于架构的文章,就是他写的

三个开源ftp server 的速度对比

小测试了一下,发现我一直用的 proftpd 其实速度并不甚好,就是功能完善。

此测试使用大量小文件,从ftp server 上,下载回来本地。

大文件测试意义不大。

测试数次,速度上可能会稍有不同,不过相对速度是一致的。

纯玩玩,只用了几分钟测试,不作权威对比。

proftpd:

Total: 62 directories, 28853 files, 0 symlinks

332649527 bytes transferred in 270 seconds (1.18M/s)

pureftpd :

Total: 62 directories, 28817 files, 0 symlinks

332166614 bytes transferred in 129 seconds (2.46M/s)

vsftpd;

Total: 62 directories, 28853 files, 0 symlinks

332649527 bytes transferred in 146 seconds (2.17M/s)

招聘启示

职位:门户网站运维工程师

职责:负责服务器的架设与管理优化,保证服务器稳定运行。

要求:

1、精通 linux 操作系统及其下各类工具。

2、掌握 shell/perl/python 任一种语言,并懂得用其进行系统管理。

3、熟悉配置常见的web server ,如nginx / apache / squid 等。

4、有开源软件开发经验,或开源软件hack 经验者,优先考虑。

5、有在LAMP 下web 开发者,或有门户网站维护经验者,或DBA,优先考虑。

工作地点:北京

如有兴趣者,请将简历投递至这里 dc -e 2218434977265587644887655654201409471708622090P

个人主页上线

开了个个人主页,全手工书写html ,且极其简洁,全英文。

http://www.helosa.org/

写了个nginx module ,第一次写,纯练练手,业务有个需求,想用nginx module 来完成,就试着写一个来练习下先。

这个模块很简单,就是定义返回头的server 的值。以前lighttpd 有个 server.tag 的配置,就是差不多的用途的。

这个模块是在nginx 配置的 server 栏定义的,但直到使用时,我才发现,其实这个模块应该是放在main 那里才合适的。。。呃。。。算了,不改了!

微博作弊

鉴于某规定,微博需要考核。

作弊是肯定的,大部分都是这样,我也是。

注册用户这个比较难,我做不了。。。手工注册的。。。

注册马甲了以后,使用以下两条语句,就可以很方便地发推了。

curl -c cookie.txt -d ‘username=&password=’ https://reg.163.com/logins.jsp
curl -b cookie.txt -d ‘status=curl test’ http://t.163.com/statuses/update.do

作弊与否,其实也不管,需要的是一个数字,数字就是绩效。哼

done, that’s all . ok, KISS .

nginx-0.8.42 的一个新feature

nginx 0.8.42 有个新功能:

Feature: a text answer may be added to a “return” directive. (via nginx.org )

这个功能其实很有趣,当然自己写也不难,官方实现了就最好。

找了下,找不到相关的配置说明,只好自己摸索一下吧。一试就出来了,真神奇,哈哈。

三步走(./configure ; make ; make install)安装好 nginx 后,在配置上加一段:

location /iloveu/ {
return 200 “iloveu” ;
}
同时把
default_type  application/octet-stream;
修改为
default_type  text/plain;
如果是前者的话,不会看到字符串,而会下载的噢。
启动 nginx 后,curl -i http://127.0.0.1/iloveu/
HTTP/1.1 200 OK
Server: nginx/0.8.42
Date: Sun, 27 Jun 2010 18:44:04 GMT
Content-Type: text/plain
Content-Length: 3
Connection: keep-alive
iloveu
就这样玩玩吧。

debian 下nginx 快速搭建FCGI环境

我的想法是。。。快点,快点,再快点!!

apt-get install spawn-fcgi php5-cgi

用 spawn-fcgi 启动 fcgi ,

spawn-fcgi -a 127.0.0.1 -p 8000 -u nobody -f /usr/bin/php-cgi -C 5 ;

在 nginx 里配置加一句:
location ~ \.php$ {
fastcgi_pass 127.0.0.1:8000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/nginx/html$fastcgi_script_name;
include fastcgi_params;
}

然后把一个 php 放在 /home/nginx/html 里,就可以使用了。

nginx 实现缓和切换新旧首页

最近首页要改版,瞎折腾,还要新首页和旧首页并行服务,只有网友点击了“新版首页”的按钮后,才会显示新版首页,否则,显示旧版首页。
灵感来自 ayou 的一段配置,我的实现原理如下:

网友点击了切换按钮以后,利用 javascript set 一个 cookie ,如 newindex=y ,首页的 / 会作判断cookie ,然后 rewrite 到相应的页面。

具体实现:
1, 网友点击 set cookie,我抄了一段最简单的东西:

<html>
<head>
<title>Welcome </title>
<script type=”text/javascript”>
function Set_Cookie( name, value, expires, path, domain, secure )
{
// set time, it’s in milliseconds
var today = new Date();
today.setTime( today.getTime() );
/*
if the expires variable is set, make the correct
expires time, the current script below will set
it for x number of days, to make it for hours,
delete * 24, for minutes, delete * 60 * 24
*/
if ( expires )
{
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new Date( today.getTime() + (expires) );
document.cookie = name + “=” +escape( value ) +
( ( expires ) ? “;expires=” + expires_date.toGMTString() : “” ) +
( ( path ) ? “;path=” + path : “” ) +
( ( domain ) ? “;domain=” + domain : “” ) +
( ( secure ) ? “;secure” : “” );
}
</script>
</head>
<body bgcolor=”white” text=”black”>
<center><h1>it is a test</h1></center>
<a href=”#” target=”_blank” onclick=”Set_Cookie( ‘newindex’, ‘y’, 30, ‘/’, ”, ” );window.location.href=’http://www.helosa.org/’;”>我要访问新首页</a>
</body>
</html>

2,nginx 配置:

location =/ {

root html ;
index index.html ;
if ( $cookie_newindex = “y” )
{
rewrite ^/*$ /index_new.html break;
}

}

其中 /index.html 是旧首页,/index_new.html 是新首页。
如此一来,网友访问 http://www.helosa.org/ 时, location / 就会根据cookie rewrite 到相应的首页。但是要注意的是,
http://www.helosa.org/index.html
http://www.helosa.org/index_new.html
访问的是正确的页面,因为判断 cookie 只在 / 做。

haproxy 打印 log 的问题

haproxy 可以把 log 打印到 syslog 去,但是,如果单纯地在 haproxy 的配置上写了这句:

log 127.0.0.1   local0

是不够的,即使你在 syslog 的配置里也写上了这句:

local0.*    /var/log/haproxy/local0.log

也还是不够的,haproxy 也不会把log 打印到相应的文件里。

需要修改 /etc/default/syslogd ,把

SYSLOGD=”"   修改为   SYSLOGD=”-r”

然后重启一下 syslogd

/etc/init.d/sysklogd restart

我的系统是 debian ,centos 没去测试,syslog 的配置上印象中有点不同的。

原因可以参考这两段东西:

man 8 syslogd :

-r     This  option will enable the facility to receive message from the network using an internet domain socket with the syslog service (see ser-
vices(5)).  The default is to not receive any messages from the network.

———————————–

less configuration.txt:

log <address> <facility> [max level [min level]]

<address> can be one of:

- An IPv4 address optionally followed by a colon and a UDP port. If
no port is specified, 514 is used by default (the standard syslog
port).

- A filesystem path to a UNIX domain socket, keeping in mind
considerations for chroot (be sure the path is accessible inside
the chroot) and uid/gid (be sure the path is appropriately
writeable).

———————————————

haproxy 可以把log 打印去两个地方,一个是 监听着 514 udp 端口的 syslog ,一个是 unix socket 。而 syslog 的 -r 参数,就是让 syslog 监听514 port 的。

又或者让 haproxy 连接去 syslog 的 unix socket 也行,

syslogd -a /etc/haproxy/syslog.sock  让 syslogd 监听在unix socket ,这时,haproxy 可以这样配置

log /etc/haproxy/syslog.sock   local0

此 socket 必须在 haproxy 的 chroot 环境中。

==========================
update:

centos 下,修改 /etc/sysconfig/syslog ,把

SYSLOGD_OPTIONS=”-m 0″

改为

SYSLOGD_OPTIONS=”-m 0 -r”