apache+resin+pureftp的虚拟主机和负载均衡
时间:2006-03-13 来源:cnscn2008
1、前言
apache+resin来做想来大家都比较熟悉了,一般的配置都是很熟悉的了,我查看了一些论坛上的文章,这方便的文章比较多。在这里,我只要写写apache+resin实现独立的虚拟主机和resin自带的负载均衡。
2、系统和环境:
redhat9 and solaris9
httpd-2.50
resin-3.06
pure-ftpd-1.0.17a.tar.gz
3、安装软件:
3.1、安装apache:
# tar zxvf httpd-2.49.tar.gz
# cd httpd-2.49
# ./configure --prefix=/usr/local/apache2 --enable-so --with-mpm=worker
# make
# make install
3.2、安装resin:
# tar zxvf resin-3.06.tar.gz
# cd resin03.06
# ./configure --prefix=/usr/local/resin --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install
3.3、安装pureftp
# tar zxvf pure-ftpd-1.0.17a.tar.gz
# cd pure-ftpd-1.0.17a
# ./configure --prefix=/usr/local/pureftpd
--without-inetd --with-puredb
--with-cookie --with-throttling
--with-ratios --with-quotas
--with-ftpwho --with-largefile
--with-welcomemsg
# make
# make install
# mkdir /usr/local/pureftpd/etc
4、配置软件:
目的:用apache和resin做基于域名的虚拟主机,启用resin自身的负载均衡的引擎。resin的负载均衡引擎实际上是可以启动多个java响应进程,通过内部机制来进行负载均衡。
4.1、配置apache:
# vi /usr/local/apache2/conf/httpd.conf
---------------------------------------
DirctoryIndex index.html index.jsp
AddDefaultCharset Off
User nobody
Group nobody
NamevirtualHost 211.11.11.11
<VirtualHost 211.11.11.11:80>
ServerAdmin [email protected]
DocumentRoot /data/web/xcity
ServerName xcity.chinaunix.com
ErrorLog logs/xcity.chinaunix.com-error_log
CustomLog logs/xcity.chinaunix.com-access_log common
</VirtualHost>
<VirtualHost 211.11.11.11:80>
ServerAdmin [email protected]
DocumentRoot /data/web/sports
ServerName sports.chinaunix.com
ErrorLog logs/sports.chinaunix.com-error_log
CustomLog logs/sports.chinaunix.com-access_log common
</VirtualHost>
........
....
# mod_caucho Resin Configuration
#
LoadModule caucho_module /usr/local/apache2/modules/mod_caucho.so
ResinConfigServer 127.0.0.1
---------------------------------------
4.2、配置resin:
# vi /usr/local/resin/conf/resin.conf
----------------------------------------
<cluster>
<srun id="a" host="127.0.0.1" port="6801" index="1"/>
<srun id="b" host="127.0.0.1" port="6802" index="2"/>
<srun id="c" host="127.0.0.1" port="6803" index="3"/>
<srun id="d" host="127.0.0.1" port="6804" index="4"/>
</cluster>
---注解:
(这里面,我用了系统本身的127.0.0.1,绑定了4个端口做伏在均衡。还可以用不同的ip地址和同一端口,来作。例如:
<cluster>
<srun id="a" host="211.11.11.11" port="6802" index="1"/>
<srun id="b" host="211.11.11.12" port="6802" index="2"/>
<srun id="c" host="211.11.11.13" port="6802" index="3"/>
<srun id="d" host="211.11.11.14" port="6802" index="4"/>
</cluster>
还有些人,喜欢在apache中设置每一个java进程服务一个虚拟,这里我们不推荐,这样做,就会失去引擎本身的意义。)
<!-- configures the default host, matching any host name -->
<host id='xcity.chinaunix.com'>
<document-directory>/data/web/xcity</document-directory>
<!-- configures the root web-app -->
<web-app id='/'>
<!-- adds xsl to the search path -->
<class-loader>
<simple-loader path="$host-root/xsl"/>
</class-loader>
<servlet-mapping url-pattern="/servlet/*" servlet-name="invoker"/>
</web-app>
</host>
<host id='sports.chinaunix.com'>
<document-directory>/opt/web/sports</document-directory>
<!-- configures the root web-app -->
<web-app id='/'>
<!-- adds xsl to the search path -->
<class-loader>
<simple-loader path="$host-root/xsl"/>
</class-loader>
<servlet-mapping url-pattern="/servlet/*" servlet-name="invoker"/>
</web-app>
</host>
........
....
--------------------------------------------------
---注:这里面是基于域名的虚拟主机,如果是针对ip的虚拟主机,在<host id='*.*.*.*'>中,就应该是对应虚拟主机的ip了。也就是说,apache和resin关于虚拟主机的地方要保持一致。还有,在 resin中,对于每个虚拟主机所用的web-app目录,其实是相对于她的家目录下的/目录。
4.3、配置pureftp
1、添加用户:
# pure-pw useradd xcityr -f /usr/local/pureftp/etc/ftppasswd -u nobody -g nobody -d /data/web/xcity -m
# pure-pw useradd sports -f /usr/local/pureftp/etc/ftppasswd -u nobody -g nobody -d /data/web/sports -m
---注:xcity :ftp用户
-f ftppasswd:存放用户密码信息的文件
-u 用户uid 一般是系统的一个用户,就是你的ftp用户的家目录的用户
-g 用户组id
-d 锁定用户在家目录
-m 使pureftp.d.passwd写进pureftpd.pdb,使更改生效。
*修改用户:
# pure-pw usermod --help
*删除用户:
# pure-pw userdel <login> [-f <passwd file>] [-m]
*更改拥护密码:
# pure-pw passwd <login> [-f <passwd file>] [-m]
*查看用户详细内容:
# pure-pw show <login> [-f <passwd file>]
*生成db文件,使密码生效:
# pure-pw mkdb [<puredb database file> [-f <passwd file>]]
*列出所有用户:
# pure-pw list [-f <passwd file>]
5、启动脚本:
当系统在solaris下:
apache和resin的启动脚本:
# vi /etc/rc2.d/S99webapp
-------------------------------
/usr/local/resin/bin/httpd.sh -pid srun1.pid -server a start
/usr/local/resin/bin/httpd.sh -pid srun2.pid -server b start
/usr/local/resin/bin/httpd.sh -pid srun3.pid -server c start
/usr/local/resin/bin/httpd.sh -pid srun4.pid -server d start
/usr/local/apache2/bin/apachectl start
--------------------------------
pureftp启动脚本:
--------------------------------
#!/bin/sh
/usr/local/pureftpd/sbin/pure-ftpd -j -lpuredb:/usr/local/pureftpd/etc/pureftpd.pdb &
-----------------------------------
在linux下,直接放到响应的开机启动等级目录下就ok了。
6、总结
apache+resin应该是个很好的java应用平台了。实际使用中,还是有很多技巧。看了resin官方论坛的一些资料,说resin3.x以上的 版本,对image和html的支持,比apache响应更快。我对此测试过,感觉还是有所欠缺。所以说,在大型一点的发布平台上,还是要apache和 resin结合比较好。
对于resin的负载均衡使用上启动的进程数,我认为还是要根据自己的机器实际情况来考虑的。少了达不到效果,多了会机器系统也是一个负载。个人认为,4个可以作为一个默认的选择来考虑。
声明:
写文章的时候,参考很多网友资料,如有雷同,不一定纯属巧合。
以上过程,都是本人亲自测试和使用,但也难保证有书写遗漏,欢迎指出。
本着自由、共享的精神,网友可以任意转贴,转贴时请注明作者、出处。
【发表回复】【查看论坛原帖】【添加到收藏夹】【关闭】
--------------------------------------------------------------------------------
leirenyuan 回复于:2004-08-19 16:19:15
好东西
支持
--------------------------------------------------------------------------------
vipcui 回复于:2004-08-19 16:42:56
好文章,支持,我马上就要开展虚拟主机业务了。
--------------------------------------------------------------------------------
slg23 回复于:2004-08-19 17:31:25
window apache resin
--------------------------------------------------------------------------------
tianci3982730 回复于:2004-08-20 08:50:26
呵呵。。曾经用过不同机器不同ip的apache resin负载平衡
感觉不爽啊。几万人就会死掉
--------------------------------------------------------------------------------
peng 回复于:2004-08-20 09:05:24 [quote:b4e41cb224="tianci3982730"]呵呵。。曾经用过不同机器不同ip的apache resin负载平衡
感觉不爽啊。几万人就会死掉[/quote:b4e41cb224]
如果真是同时在线几万人,就应该考虑在apache前面加squid做cache了。
同时可以通过dns论寻来实现请求均衡。
--------------------------------------------------------------------------------
zjs-1 回复于:2004-08-20 09:05:49
好,实践一下!
--------------------------------------------------------------------------------
pansoncn 回复于:2004-08-21 23:13:23
好文章,学习!我也是这样的系统
--------------------------------------------------------------------------------
skylove 回复于:2004-08-22 09:18:34 [quote:d4ae42f122="peng"]
如果真是同时在线几万人,就应该考虑在apache前面加squid做cache了。
同时可以通过dns论寻来实现请求均衡。[/quote:d4ae42f122]
如果我的对象是论坛,那么用squid做cache的意义是不是就不大了??? 现在我这里流量大一些的,似乎都是论坛类的。。。
--------------------------------------------------------------------------------
handsun 回复于:2004-08-22 09:41:15
支持一下!
--------------------------------------------------------------------------------
mofaser 回复于:2004-08-22 11:12:39
不错,支持一下~!
--------------------------------------------------------------------------------
蓝色虫 回复于:2004-08-22 12:49:26
是好文章
--------------------------------------------------------------------------------
Fun-FreeBSD 回复于:2004-08-26 08:53:35
peng哥,再发个tomcat的吧,我都需要
--------------------------------------------------------------------------------
peng 回复于:2004-08-26 09:45:55 [quote:2478485176="skylove"]
如果我的对象是论坛,那么用squid做cache的意义是不是就不大了??? 现在我这里流量大一些的,似乎都是论坛类的。。。[/quote:2478485176]
论坛用cache的意义更大。对于论坛,一般都是用动态的网页技术(jsp or php),squid的工作原理是复制已有的动态网页为静态页面到自己的存贮条带中。这样的好处就是减轻jsp or php 这种应用服务器的压力,页面静态化(因为静态的页面访问最快),减轻对磁盘的IO压力(很多访问都是转移到cache服务器的条带中)。。
--------------------------------------------------------------------------------
livelybear 回复于:2004-08-26 09:48:14
:em02: :em02: :em02:
老PENG是大好银!
--------------------------------------------------------------------------------
peng 回复于:2004-08-26 10:00:23 [quote:aaa176234e="Fun-FreeBSD"]peng哥,再发个tomcat的吧,我都需要[/quote:aaa176234e]
晕,tomcat没有用过,我看过一些老外写的测试报告。tomcat的稳定性和压力测试,都不如resin。
唯一的优点是,他和apache是兄弟产品。为了公司产品的单一化,除了超大型的服务还用(dynimo和iplanet)俺已经把公司的java平台都变成了resin。
当然了,如果你需要更专业的(有钱的话),websphere、weblogic、iplanet(现在好像叫sun one了))。
--------------------------------------------------------------------------------
adrianmak 回复于:2004-09-02 14:22:04
請問以resin作负载均衡, 是否只對jsp, servlets生效?
對php 有沒有用?
--------------------------------------------------------------------------------
peng 回复于:2004-09-02 17:40:06 [quote:d1d8582fe8="adrianmak"]請問以resin作负载均衡, 是否只對jsp, servlets生效?
對php 有沒有用?[/quote:d1d8582fe8]
:em06: :em06:
resin和php有关系吗?
resin是java的应用平台啊。。
--------------------------------------------------------------------------------
jackylau 回复于:2004-09-02 19:47:57
peng这几天是不是没什么事呀?最近发了不少精华贴子呀!
--------------------------------------------------------------------------------
simonzhan 回复于:2004-09-02 23:25:53
不错的说,支持一下。
--------------------------------------------------------------------------------
firer2000 回复于:2004-09-03 08:56:28
出手不凡!!
--------------------------------------------------------------------------------
minasi 回复于:2004-09-03 10:24:20
各位楼主,有没有apache + weblogic的负载均衡呀?现在公司用dns轮寻,但好像经常有问题!
寻求好的解决方案,谢谢各位楼主指点!
--------------------------------------------------------------------------------
peng 回复于:2004-09-03 10:57:05 [quote:5972990d2d="minasi"]各位楼主,有没有apache + weblogic的负载均衡呀?现在公司用dns轮寻,但好像经常有问题!
寻求好的解决方案,谢谢各位楼主指点![/quote:5972990d2d]
dns论寻的好处是经济实惠,坏处就是如果一个server坏了,很难发现和找出。
好的解决办法是用负载均衡器,也就是那种4层交换机了。
常用的就是北电的和cisco,比如:f5,但是投入应该在40万左右。
还有的人用一台机器在前段做负载均衡,通过软件,但是效果不好。问题不在于机器的处理能力(因为现在的机器都很快了),而是机器的总线宽度。对于上10万 个连接,如果用sun15k还可以考虑,其他档次的不要想了。所以说,这种群集对于处理数据运算的合适的。但是它不能针对web访问方式,来负载 httpd请求。所以,我感觉软件的意义不大。
所以我认为,如果是web服务器,除了dns论寻,只能考虑硬件的伏在均衡器了。sina、263、tom、china在某些服务上,都是用的伏在均衡器。
昨天去了2911、联通的机房,看到做伏在均衡的都是用这种设备。
--------------------------------------------------------------------------------
peng 回复于:2004-09-03 11:21:01
其实楼上的说apache+weblogic有问题,具体是什么问题啊?有没有错误现象和日志。
对于java的应用服务器,其实问题很多是出在设计和构架的思路上。这个具体问题还要具体分析了。举个简单例子:
前端是apache来接收访问,对于jsp的请求,转发给weblogic,但是多少个apache server对应一个weblogic机器?这个要从机器的系统性能来分析了。如果是访问量很大,对于jsp的请求超出了weblogic的能力。那么增 大apache,其实是不能解决问题的,而是加大了weblogic的负担。
还有,如果涉及到数据库的问题,对于数据库的访问,也会托跨weblogic的。
以前我搭建过这种结构,通常是分析apache的80端口和weblogic的响应端口,看看负载究竟出在什么地方。是web,还是java,还是数据库,还是存储。
其实dns论寻本身没有什么可以调的。他是很简单的,问题一般都是底层的服务配置和构建原因引起的。
--------------------------------------------------------------------------------
minasi 回复于:2004-09-03 12:49:54
我们的数据库没有问题,有时连接数很大也还可以。但就是weblogic应用服务器曾死过。是这样,6台机器都变慢了,这是有一台死了,然后其它的又都正 常了,这时数据库一直都没问题!除了DNS轮寻,我们还有一个自己写的高度程序,但可能不太完善。请问peng,squid可以做高度吗?squid能检 测应用服务器的状态吗,可能按负载指派吗?
--------------------------------------------------------------------------------
peng 回复于:2004-09-03 13:14:04 [quote:21a559be14="minasi"]我们的数据库没有问题,有时连接数很大也还可以。但就是weblogic应用服务器曾死过。是这 样,6台机器都变慢了,这是有一台死了,然后其它的又都正常了,这时数据库一直都没问题!除了DNS轮寻,我们还有一个自己写的高.......... [/quote:21a559be14]
6台是什么,是webserver还是weblogic?
其实,用squid是一个非常不错的选择。
squid的好处是减轻apache和weblogic的负载,把动态页面静态化。同时还减轻io的负载。
其实你可以这样的,对外响应的服务器都是squid,给squid用80端口,然后apache用81端口来连接squid。
这样的结构就是,4个squid对外响应,他们下层是2个apache服务器。最下边是weblogic。好处是对于攻击,可以防范在外层。
还有一种结构就是,4个squid和2个apache同时对外响应服务。他们是平级的。然后他们的下层是weblogic。这样的结构对比第一种,可以加大对http的并行连接数量。
关于squid和apache的数量对比,可以参考两点:
1、web对站点的访问是读取的多,还是生成新页面的多。
2、最大访问量,一般的情况。squid的软件上线是3000条http请求。而apache要比squid多。一般的情况用apache2,软件限制不 是问题。看硬件的总线大小了。我的情况是用的sun e450,通过软件调优,最大http连接数在8000左右,再多,就是sun e450的极限了。
总的来说,squid是缓解了weblogic的压力,而不是apache的压力。squid缓解的是weblogic连接阵列(或硬盘)的IO。如果你 的压力在apache上,squid没有意义的。如果问题出在weblogic上或者磁盘阵列的IO读取上,建议用squid。
--------------------------------------------------------------------------------
minasi 回复于:2004-09-03 13:47:39
多谢peng的耐心指点,我这就去试试!
--------------------------------------------------------------------------------
peng 回复于:2004-09-03 15:10:19 [quote:9d4e3ef28d="minasi"]多谢peng的耐心指点,我这就去试试![/quote:9d4e3ef28d]
互相学习吧,最近忙,也没有时间深看,希望成功后经验共享。 :em02:
--------------------------------------------------------------------------------
adrianmak 回复于:2004-10-14 09:22:42
現在服務器是作php 論壇,而且流量蠻大,
同時在線人數隨時超過千人,所以想 resin 的負載均衡能否應用於只有http要求
本身不會有jsp/servlet 要求
--------------------------------------------------------------------------------
peng 回复于:2004-10-14 10:03:42 [quote:dfa951fa79="adrianmak"]現在服務器是作php 論壇,而且流量蠻大,
同時在線人數隨時超過千人,所以想 resin 的負載均衡能否應用於只有http要求
本身不會有jsp/servlet 要求[/quote:dfa951fa79]
resin是java的应用服务器,如果不是jsp的程序,是不行的。它不能解释php的语句!
负载大,分析具体的读/写比例,用squid做反相web代理,是个不错的选择。可以考虑多机负载分流。
apache+resin来做想来大家都比较熟悉了,一般的配置都是很熟悉的了,我查看了一些论坛上的文章,这方便的文章比较多。在这里,我只要写写apache+resin实现独立的虚拟主机和resin自带的负载均衡。
2、系统和环境:
redhat9 and solaris9
httpd-2.50
resin-3.06
pure-ftpd-1.0.17a.tar.gz
3、安装软件:
3.1、安装apache:
# tar zxvf httpd-2.49.tar.gz
# cd httpd-2.49
# ./configure --prefix=/usr/local/apache2 --enable-so --with-mpm=worker
# make
# make install
3.2、安装resin:
# tar zxvf resin-3.06.tar.gz
# cd resin03.06
# ./configure --prefix=/usr/local/resin --with-apxs=/usr/local/apache2/bin/apxs
# make
# make install
3.3、安装pureftp
# tar zxvf pure-ftpd-1.0.17a.tar.gz
# cd pure-ftpd-1.0.17a
# ./configure --prefix=/usr/local/pureftpd
--without-inetd --with-puredb
--with-cookie --with-throttling
--with-ratios --with-quotas
--with-ftpwho --with-largefile
--with-welcomemsg
# make
# make install
# mkdir /usr/local/pureftpd/etc
4、配置软件:
目的:用apache和resin做基于域名的虚拟主机,启用resin自身的负载均衡的引擎。resin的负载均衡引擎实际上是可以启动多个java响应进程,通过内部机制来进行负载均衡。
4.1、配置apache:
# vi /usr/local/apache2/conf/httpd.conf
---------------------------------------
DirctoryIndex index.html index.jsp
AddDefaultCharset Off
User nobody
Group nobody
NamevirtualHost 211.11.11.11
<VirtualHost 211.11.11.11:80>
ServerAdmin [email protected]
DocumentRoot /data/web/xcity
ServerName xcity.chinaunix.com
ErrorLog logs/xcity.chinaunix.com-error_log
CustomLog logs/xcity.chinaunix.com-access_log common
</VirtualHost>
<VirtualHost 211.11.11.11:80>
ServerAdmin [email protected]
DocumentRoot /data/web/sports
ServerName sports.chinaunix.com
ErrorLog logs/sports.chinaunix.com-error_log
CustomLog logs/sports.chinaunix.com-access_log common
</VirtualHost>
........
....
# mod_caucho Resin Configuration
#
LoadModule caucho_module /usr/local/apache2/modules/mod_caucho.so
ResinConfigServer 127.0.0.1
---------------------------------------
4.2、配置resin:
# vi /usr/local/resin/conf/resin.conf
----------------------------------------
<cluster>
<srun id="a" host="127.0.0.1" port="6801" index="1"/>
<srun id="b" host="127.0.0.1" port="6802" index="2"/>
<srun id="c" host="127.0.0.1" port="6803" index="3"/>
<srun id="d" host="127.0.0.1" port="6804" index="4"/>
</cluster>
---注解:
(这里面,我用了系统本身的127.0.0.1,绑定了4个端口做伏在均衡。还可以用不同的ip地址和同一端口,来作。例如:
<cluster>
<srun id="a" host="211.11.11.11" port="6802" index="1"/>
<srun id="b" host="211.11.11.12" port="6802" index="2"/>
<srun id="c" host="211.11.11.13" port="6802" index="3"/>
<srun id="d" host="211.11.11.14" port="6802" index="4"/>
</cluster>
还有些人,喜欢在apache中设置每一个java进程服务一个虚拟,这里我们不推荐,这样做,就会失去引擎本身的意义。)
<!-- configures the default host, matching any host name -->
<host id='xcity.chinaunix.com'>
<document-directory>/data/web/xcity</document-directory>
<!-- configures the root web-app -->
<web-app id='/'>
<!-- adds xsl to the search path -->
<class-loader>
<simple-loader path="$host-root/xsl"/>
</class-loader>
<servlet-mapping url-pattern="/servlet/*" servlet-name="invoker"/>
</web-app>
</host>
<host id='sports.chinaunix.com'>
<document-directory>/opt/web/sports</document-directory>
<!-- configures the root web-app -->
<web-app id='/'>
<!-- adds xsl to the search path -->
<class-loader>
<simple-loader path="$host-root/xsl"/>
</class-loader>
<servlet-mapping url-pattern="/servlet/*" servlet-name="invoker"/>
</web-app>
</host>
........
....
--------------------------------------------------
---注:这里面是基于域名的虚拟主机,如果是针对ip的虚拟主机,在<host id='*.*.*.*'>中,就应该是对应虚拟主机的ip了。也就是说,apache和resin关于虚拟主机的地方要保持一致。还有,在 resin中,对于每个虚拟主机所用的web-app目录,其实是相对于她的家目录下的/目录。
4.3、配置pureftp
1、添加用户:
# pure-pw useradd xcityr -f /usr/local/pureftp/etc/ftppasswd -u nobody -g nobody -d /data/web/xcity -m
# pure-pw useradd sports -f /usr/local/pureftp/etc/ftppasswd -u nobody -g nobody -d /data/web/sports -m
---注:xcity :ftp用户
-f ftppasswd:存放用户密码信息的文件
-u 用户uid 一般是系统的一个用户,就是你的ftp用户的家目录的用户
-g 用户组id
-d 锁定用户在家目录
-m 使pureftp.d.passwd写进pureftpd.pdb,使更改生效。
*修改用户:
# pure-pw usermod --help
*删除用户:
# pure-pw userdel <login> [-f <passwd file>] [-m]
*更改拥护密码:
# pure-pw passwd <login> [-f <passwd file>] [-m]
*查看用户详细内容:
# pure-pw show <login> [-f <passwd file>]
*生成db文件,使密码生效:
# pure-pw mkdb [<puredb database file> [-f <passwd file>]]
*列出所有用户:
# pure-pw list [-f <passwd file>]
5、启动脚本:
当系统在solaris下:
apache和resin的启动脚本:
# vi /etc/rc2.d/S99webapp
-------------------------------
/usr/local/resin/bin/httpd.sh -pid srun1.pid -server a start
/usr/local/resin/bin/httpd.sh -pid srun2.pid -server b start
/usr/local/resin/bin/httpd.sh -pid srun3.pid -server c start
/usr/local/resin/bin/httpd.sh -pid srun4.pid -server d start
/usr/local/apache2/bin/apachectl start
--------------------------------
pureftp启动脚本:
--------------------------------
#!/bin/sh
/usr/local/pureftpd/sbin/pure-ftpd -j -lpuredb:/usr/local/pureftpd/etc/pureftpd.pdb &
-----------------------------------
在linux下,直接放到响应的开机启动等级目录下就ok了。
6、总结
apache+resin应该是个很好的java应用平台了。实际使用中,还是有很多技巧。看了resin官方论坛的一些资料,说resin3.x以上的 版本,对image和html的支持,比apache响应更快。我对此测试过,感觉还是有所欠缺。所以说,在大型一点的发布平台上,还是要apache和 resin结合比较好。
对于resin的负载均衡使用上启动的进程数,我认为还是要根据自己的机器实际情况来考虑的。少了达不到效果,多了会机器系统也是一个负载。个人认为,4个可以作为一个默认的选择来考虑。
声明:
写文章的时候,参考很多网友资料,如有雷同,不一定纯属巧合。
以上过程,都是本人亲自测试和使用,但也难保证有书写遗漏,欢迎指出。
本着自由、共享的精神,网友可以任意转贴,转贴时请注明作者、出处。
【发表回复】【查看论坛原帖】【添加到收藏夹】【关闭】
--------------------------------------------------------------------------------
leirenyuan 回复于:2004-08-19 16:19:15
好东西
支持
--------------------------------------------------------------------------------
vipcui 回复于:2004-08-19 16:42:56
好文章,支持,我马上就要开展虚拟主机业务了。
--------------------------------------------------------------------------------
slg23 回复于:2004-08-19 17:31:25
window apache resin
--------------------------------------------------------------------------------
tianci3982730 回复于:2004-08-20 08:50:26
呵呵。。曾经用过不同机器不同ip的apache resin负载平衡
感觉不爽啊。几万人就会死掉
--------------------------------------------------------------------------------
peng 回复于:2004-08-20 09:05:24 [quote:b4e41cb224="tianci3982730"]呵呵。。曾经用过不同机器不同ip的apache resin负载平衡
感觉不爽啊。几万人就会死掉[/quote:b4e41cb224]
如果真是同时在线几万人,就应该考虑在apache前面加squid做cache了。
同时可以通过dns论寻来实现请求均衡。
--------------------------------------------------------------------------------
zjs-1 回复于:2004-08-20 09:05:49
好,实践一下!
--------------------------------------------------------------------------------
pansoncn 回复于:2004-08-21 23:13:23
好文章,学习!我也是这样的系统
--------------------------------------------------------------------------------
skylove 回复于:2004-08-22 09:18:34 [quote:d4ae42f122="peng"]
如果真是同时在线几万人,就应该考虑在apache前面加squid做cache了。
同时可以通过dns论寻来实现请求均衡。[/quote:d4ae42f122]
如果我的对象是论坛,那么用squid做cache的意义是不是就不大了??? 现在我这里流量大一些的,似乎都是论坛类的。。。
--------------------------------------------------------------------------------
handsun 回复于:2004-08-22 09:41:15
支持一下!
--------------------------------------------------------------------------------
mofaser 回复于:2004-08-22 11:12:39
不错,支持一下~!
--------------------------------------------------------------------------------
蓝色虫 回复于:2004-08-22 12:49:26
是好文章
--------------------------------------------------------------------------------
Fun-FreeBSD 回复于:2004-08-26 08:53:35
peng哥,再发个tomcat的吧,我都需要
--------------------------------------------------------------------------------
peng 回复于:2004-08-26 09:45:55 [quote:2478485176="skylove"]
如果我的对象是论坛,那么用squid做cache的意义是不是就不大了??? 现在我这里流量大一些的,似乎都是论坛类的。。。[/quote:2478485176]
论坛用cache的意义更大。对于论坛,一般都是用动态的网页技术(jsp or php),squid的工作原理是复制已有的动态网页为静态页面到自己的存贮条带中。这样的好处就是减轻jsp or php 这种应用服务器的压力,页面静态化(因为静态的页面访问最快),减轻对磁盘的IO压力(很多访问都是转移到cache服务器的条带中)。。
--------------------------------------------------------------------------------
livelybear 回复于:2004-08-26 09:48:14
:em02: :em02: :em02:
老PENG是大好银!
--------------------------------------------------------------------------------
peng 回复于:2004-08-26 10:00:23 [quote:aaa176234e="Fun-FreeBSD"]peng哥,再发个tomcat的吧,我都需要[/quote:aaa176234e]
晕,tomcat没有用过,我看过一些老外写的测试报告。tomcat的稳定性和压力测试,都不如resin。
唯一的优点是,他和apache是兄弟产品。为了公司产品的单一化,除了超大型的服务还用(dynimo和iplanet)俺已经把公司的java平台都变成了resin。
当然了,如果你需要更专业的(有钱的话),websphere、weblogic、iplanet(现在好像叫sun one了))。
--------------------------------------------------------------------------------
adrianmak 回复于:2004-09-02 14:22:04
請問以resin作负载均衡, 是否只對jsp, servlets生效?
對php 有沒有用?
--------------------------------------------------------------------------------
peng 回复于:2004-09-02 17:40:06 [quote:d1d8582fe8="adrianmak"]請問以resin作负载均衡, 是否只對jsp, servlets生效?
對php 有沒有用?[/quote:d1d8582fe8]
:em06: :em06:
resin和php有关系吗?
resin是java的应用平台啊。。
--------------------------------------------------------------------------------
jackylau 回复于:2004-09-02 19:47:57
peng这几天是不是没什么事呀?最近发了不少精华贴子呀!
--------------------------------------------------------------------------------
simonzhan 回复于:2004-09-02 23:25:53
不错的说,支持一下。
--------------------------------------------------------------------------------
firer2000 回复于:2004-09-03 08:56:28
出手不凡!!
--------------------------------------------------------------------------------
minasi 回复于:2004-09-03 10:24:20
各位楼主,有没有apache + weblogic的负载均衡呀?现在公司用dns轮寻,但好像经常有问题!
寻求好的解决方案,谢谢各位楼主指点!
--------------------------------------------------------------------------------
peng 回复于:2004-09-03 10:57:05 [quote:5972990d2d="minasi"]各位楼主,有没有apache + weblogic的负载均衡呀?现在公司用dns轮寻,但好像经常有问题!
寻求好的解决方案,谢谢各位楼主指点![/quote:5972990d2d]
dns论寻的好处是经济实惠,坏处就是如果一个server坏了,很难发现和找出。
好的解决办法是用负载均衡器,也就是那种4层交换机了。
常用的就是北电的和cisco,比如:f5,但是投入应该在40万左右。
还有的人用一台机器在前段做负载均衡,通过软件,但是效果不好。问题不在于机器的处理能力(因为现在的机器都很快了),而是机器的总线宽度。对于上10万 个连接,如果用sun15k还可以考虑,其他档次的不要想了。所以说,这种群集对于处理数据运算的合适的。但是它不能针对web访问方式,来负载 httpd请求。所以,我感觉软件的意义不大。
所以我认为,如果是web服务器,除了dns论寻,只能考虑硬件的伏在均衡器了。sina、263、tom、china在某些服务上,都是用的伏在均衡器。
昨天去了2911、联通的机房,看到做伏在均衡的都是用这种设备。
--------------------------------------------------------------------------------
peng 回复于:2004-09-03 11:21:01
其实楼上的说apache+weblogic有问题,具体是什么问题啊?有没有错误现象和日志。
对于java的应用服务器,其实问题很多是出在设计和构架的思路上。这个具体问题还要具体分析了。举个简单例子:
前端是apache来接收访问,对于jsp的请求,转发给weblogic,但是多少个apache server对应一个weblogic机器?这个要从机器的系统性能来分析了。如果是访问量很大,对于jsp的请求超出了weblogic的能力。那么增 大apache,其实是不能解决问题的,而是加大了weblogic的负担。
还有,如果涉及到数据库的问题,对于数据库的访问,也会托跨weblogic的。
以前我搭建过这种结构,通常是分析apache的80端口和weblogic的响应端口,看看负载究竟出在什么地方。是web,还是java,还是数据库,还是存储。
其实dns论寻本身没有什么可以调的。他是很简单的,问题一般都是底层的服务配置和构建原因引起的。
--------------------------------------------------------------------------------
minasi 回复于:2004-09-03 12:49:54
我们的数据库没有问题,有时连接数很大也还可以。但就是weblogic应用服务器曾死过。是这样,6台机器都变慢了,这是有一台死了,然后其它的又都正 常了,这时数据库一直都没问题!除了DNS轮寻,我们还有一个自己写的高度程序,但可能不太完善。请问peng,squid可以做高度吗?squid能检 测应用服务器的状态吗,可能按负载指派吗?
--------------------------------------------------------------------------------
peng 回复于:2004-09-03 13:14:04 [quote:21a559be14="minasi"]我们的数据库没有问题,有时连接数很大也还可以。但就是weblogic应用服务器曾死过。是这 样,6台机器都变慢了,这是有一台死了,然后其它的又都正常了,这时数据库一直都没问题!除了DNS轮寻,我们还有一个自己写的高.......... [/quote:21a559be14]
6台是什么,是webserver还是weblogic?
其实,用squid是一个非常不错的选择。
squid的好处是减轻apache和weblogic的负载,把动态页面静态化。同时还减轻io的负载。
其实你可以这样的,对外响应的服务器都是squid,给squid用80端口,然后apache用81端口来连接squid。
这样的结构就是,4个squid对外响应,他们下层是2个apache服务器。最下边是weblogic。好处是对于攻击,可以防范在外层。
还有一种结构就是,4个squid和2个apache同时对外响应服务。他们是平级的。然后他们的下层是weblogic。这样的结构对比第一种,可以加大对http的并行连接数量。
关于squid和apache的数量对比,可以参考两点:
1、web对站点的访问是读取的多,还是生成新页面的多。
2、最大访问量,一般的情况。squid的软件上线是3000条http请求。而apache要比squid多。一般的情况用apache2,软件限制不 是问题。看硬件的总线大小了。我的情况是用的sun e450,通过软件调优,最大http连接数在8000左右,再多,就是sun e450的极限了。
总的来说,squid是缓解了weblogic的压力,而不是apache的压力。squid缓解的是weblogic连接阵列(或硬盘)的IO。如果你 的压力在apache上,squid没有意义的。如果问题出在weblogic上或者磁盘阵列的IO读取上,建议用squid。
--------------------------------------------------------------------------------
minasi 回复于:2004-09-03 13:47:39
多谢peng的耐心指点,我这就去试试!
--------------------------------------------------------------------------------
peng 回复于:2004-09-03 15:10:19 [quote:9d4e3ef28d="minasi"]多谢peng的耐心指点,我这就去试试![/quote:9d4e3ef28d]
互相学习吧,最近忙,也没有时间深看,希望成功后经验共享。 :em02:
--------------------------------------------------------------------------------
adrianmak 回复于:2004-10-14 09:22:42
現在服務器是作php 論壇,而且流量蠻大,
同時在線人數隨時超過千人,所以想 resin 的負載均衡能否應用於只有http要求
本身不會有jsp/servlet 要求
--------------------------------------------------------------------------------
peng 回复于:2004-10-14 10:03:42 [quote:dfa951fa79="adrianmak"]現在服務器是作php 論壇,而且流量蠻大,
同時在線人數隨時超過千人,所以想 resin 的負載均衡能否應用於只有http要求
本身不會有jsp/servlet 要求[/quote:dfa951fa79]
resin是java的应用服务器,如果不是jsp的程序,是不行的。它不能解释php的语句!
负载大,分析具体的读/写比例,用squid做反相web代理,是个不错的选择。可以考虑多机负载分流。
相关阅读 更多 +
排行榜 更多 +