qsed-abuse01@hzqbbc.com
发新话题
打印

ExtMail 0.24-pre4最新技术 -- FCGI remote server模式简介

ExtMail 0.24-pre4最新技术 -- FCGI remote server模式简介

hi 各位:

  现在给大家介绍一项为extmail开发的最新技术:FCGI remote server模式。该技术将彻底改变
目前常见直读Maildir的webmail工作模式,不再需要为烦琐的权限问题而头疼,同时也为日后支持
负载均衡及分布打下了基础。

什么是FCGI remote server模式?

自早期extmail开发到现在,就陆续有朋友建议extmail支持mod_perl,而我却坚持使用FCGI技术,
根究其原因,是因为mod_perl 不便于将程序与web服务器分离到不同的机器,同时不好实现负载
均衡,但mod_perl也有进程管理容易得多等好处。

通过TCP 或unix socket,FCGI天然地支持fcgi程序与web server分离,这也是FCGI吸引人的地方
目前开发出来的FCGI remote server模式大体上是将extmail通过dispatch.fcgi 作为一个守护
进程运行,监听一个端口(例如8888),而web server则将extmail的请求通过TCP socket
转给dispatch.fcgi,由dispatch.fcgi处理,处理结束后dispatch.fcgi将处理的结果(也就是
我们平常看到的html页面)输出到前端的web server并送到客户端浏览器。见下图:

dispatch.fcgi  <===============> web server <============> browser
(fcgi服务器)                        TCP                                     TCP

如何才能支持FCGI + remote server模式?

前提有2个:

1)Web server 编译了fastcgi的支持
目前apache及lighttpd等流行的web 服务器都能支持fcgi

2)支持remote 模式的fcgi程序(extmail)
使用extmail 0.24-pre4或更高版本,附带的dispatch.fcgi已经支持这个模式

FCGI remote server模式有何好处?

由上面原理图可以知道,我们能可轻易地将dispatch.fcgi及extmail的软件+存储(maildir)部署
到一个机器上,例如叫storage1 ,而将web服务器安装到另一个机器,例如叫web1,物理上将2个
部分分离。这样作的好处很显然:

1)webmail和webserver分离,各自重启动不影响另一方

2)权限分离,不再需要改User/Group或SuEXEC等技术

3)可支持负载均衡,如部署多个extmail机器则可提高容量

4)可自行开发进程管理器,管理extmail的进程数


目前的dispatch.fcgi 只使用了简单的进程管理机制,启动时按命令行参数预先创建若干个子进程
(prefork)提供服务,用户可以根据机器的最大负荷,调整启动的进程数。而原来的FCGI运行模式
由apache或lighttpd启动fcgi程序,进程管理不够灵活。

如何配置FCGI remote server模式?

请参考extmail 0.24-pre4 的README.fcgi
欢迎使用下列开源软件: 高性能邮件系统- ExtMail Spam Locker反垃圾邮件系统

TOP

已阅,等pre4发布的时候安装测试一下。哈哈

TOP

激动人心

TOP

哈,又学到新东西了。
期待中...
这是最好的年代,这是最坏的年代

TOP

如果一台机器做webserver,多台机器配置extmail,如何配置?
<Ifmodule mod_fastcgi.c>
FastCgiExternalServer /usr/bin/dispatch.fcgi -host 127.0.0.1:8888
</Ifmodule>

这也只是配置一台dispatch.fcgi 服务器,如果配置多台,是不是直接添加如下?webserver会自动负载均衡?
<Ifmodule mod_fastcgi.c>
FastCgiExternalServer /usr/bin/dispatch.fcgi -host 127.0.0.1:8888
FastCgiExternalServer /usr/bin/dispatch.fcgi -host 192.168.1.16:8888
.........
</Ifmodule>

TOP

引用:
下面是引用stevenlee于2006-07-19 18:40发表的:
如果一台机器做webserver,多台机器配置extmail,如何配置?
<Ifmodule mod_fastcgi.c>
FastCgiExternalServer /usr/bin/dispatch.fcgi -host 127.0.0.1:8888
</Ifmodule>

.......
Apache 好象不会自动均衡的,lighttpd可以很容易支持fastcgi的分布,另外上面FastCGIexternalServer 必须定义不同的path, 即可第一个是/usr/bin/dispatch.fcgi,第二个就不能叫一样的名字了,应该叫/usr/bin/dispatch2.fcgi 等(当然不规定是dispatch2.xxx)。

不过没真正这么配置过,所以不能断定楼上的配置是否一定有错。请参考mod_fastcgi的手册。
欢迎使用下列开源软件: 高性能邮件系统- ExtMail Spam Locker反垃圾邮件系统

TOP

发新话题