Archive for October, 2007
用bind9架设自己的智能DNS
Posted on October 25, 2007 - Filed Under Uncategorized
中国的南北网络问题,是许多做网站的人的心病
除了使用双通或者多通机房以外,还可以通过多台镜像服务器的方法来提高用户的访问速度
但是,如果使用的双通机房并不是单IP的,或者使用多台镜像的做法,就会面临多个不同的服务器IP的问题
最早的时候,很多镜像服务器都是使用不同的域名的,比如说www1和www2,或者www和cnc
这样的做法,对用户相当不友好,而且不方便推广,比如说,你要告诉朋友一个网站,还要问他是什么线路才能给网址吗,或者可能你还不知道这个网站有一个专为网通的线路所设置的镜像
用统一的域名,然后根据用户的线路自动判断引导到不同的镜像服务器,正是智能DNS的功用(智能DNS其实是CDN的其中一部分,是最前端的部分)
现在还是有一些地方使用多域名,比如说下载网站的下载镜像服务器,因为智能DNS有一定的缺陷(并不一定选择到正确的线路,下面说),也提供给用户自由选择线路的权利
目前也有一些公司提供智能DNS解释服务,把你的域名NS指到他们服务器,然后输入网通和电信服务器的IP就ok了
也有一些公司提供比较完整的CDN服务,比如比较出名的就是chinacache,不少中型网站是使用他们的服务
最初的bind是不支持通过来源选择不同的ip的,因此只能通过iptables的辅助来实现智能DNS,方法也很简单,在DNS服务器上面启动两份bind,都不要用默认的端口,两份分别解析不同的线路,然后再用iptables将默认端口的DNS请求根据来源IP发送到不同的bind实例
这种方法缺点很明显,需要多个bind实例,如果需要更多的线路解释那就还要再开bind实例,另外iptables对来源的解释也会导致iptables太多规则
现在的bind支持了根据来源选择的功能,我不确定是不是bind9的新特性,不过bind9是重写过的,相比漏洞百出的bind8来说,稳定和安全很多,以下的配置以bind9为基础
我使用的是CentOS,由于bind服务没有其他服务(比如apache,squid)要求那么高,所以也没有必要自己编译一份,我是用过yum安装的,版本不是最新的稳定版
装好之后,可以用过/etc/init.d/named start成功启动服务
有一个文件named.conf出现在/etc下,就是bind的主config文件,我们只要改动他
(我只说明智能DNS实现部分,其他的bind设置自行修改,呵呵)
另外一个小技巧,可以通过/usr/sbin/named -g -u named来启动bind,可以立刻看到输出信息,方便调试
我们是通过bind9的view功能来分离判断的
首先,我们需要一份网通的IP列表,这是一份在网上流传的列表,呵呵
acl “CNC” {
58.16.0.0/16;
58.17.0.0/17;
58.17.128.0/17;
58.18.0.0/16;
58.19.0.0/16;
58.20.0.0/16;
58.21.0.0/16;
58.22.0.0/15;
58.240.0.0/15;
58.242.0.0/15;
[...]
trac续
Posted on October 9, 2007 - Filed Under Uncategorized
上一篇blog介绍了怎么在windows下安装并使用trac,但是只能说基本能用
在公司里面使用trac,我们还有一些额外的需求
比如,如何用windows service来运行,可以用web server的方式来跑吗,如何身份认证
其实,所有的这些问题,都可以用apache跑trac解决,而且效果也非常好。下面我就来说说我现在用的配置
首先说一下trac可以使用的运行方式,一共有4种
第一种就是tracd,就是上一篇文章所说的,使用相当便捷,可以作为调试使用,不推荐生产环境
第二种是cgi模式,cgi出名低效率了,直接跳过
第三种是mod_python,一开始我也是使用这种,配置也很方便,不过遇上一个专有问题了
在TracInstall中有描述
> if using mod_python together with xml-related things (like 0.11, or xml-rpc plugin), use python-2.5. expat is namespaced there and does not cause apache to crash any more(see here for details).
刚好我们需要使用xml-rpc,然后apache不停报错,虽然不影响使用,但是还是挺烦的
最后一种方法,就是我们目前在使用的方法,就是使用mod_wsgi
wsgi是最近python提出的一种类似cgi的模型,希望能统一web server app server的通讯,似乎很多人都很推崇,不过因为比较新生,所以似乎用的人也不是很多,刚好trac提供了支持。搜索到mod_wsgi for windows编译好的包,使用非常稳定,下面是我的apache配置
LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias /trac d:/trac/apache/trac.wsgi
[...]
Read More..>>