存档

2010年7月 的存档

PHP中关于正则表达式匹配任意字符(包括换行符)的写法

2010年7月27日 wenhui 1 条评论

今天在Java中想使用正则表达式来获取一段文本中的任意字符。于是很随意得就写出如下匹配规则:

(.*)

结果运行之后才发现,无法获得换行之后的文本。于是查了一下手册,才发现正则表达式中,“.”(点符号)匹配的是除了换行符“\n”以外的所有字符。同时,手册上还有一句话:要匹配包括 ‘\n’ 在内的任何字符,请使用像 ‘[.\n]‘ 的模式。于是我将正则表达式的匹配规则修改如下:

([.\n]*),当然,如果是在java程序中直接写到话,需要改为([.\\n]*)

结果再次运行程序,发现什么内容也取不到了。我百思不得其解,又将其修改为如下规则:

([.|\n]*) 以及 ([\n.]*)

结果还是不行,什么内容都取不到。看来点符号和换行符卯上劲了~

然后上网一查,虽然没有查出上述规则到底是什么地方出问题了,但是查出了一个解决办法,经过一试,果然可以匹配包括换行符在内的任意字符,以下为正确的正则表达式匹配规则:

([\s\S]*)

同时,也可以用 “([\d\D]*)”、“([\w\W]*)” 来表示。

本文可以自由转载,转载时请保留全文并注明出处:
转载自仲子说 [ http://www.wangzhongyuan.com/ ]
原文链接:http://www.wangzhongyuan.com/archives/640.html

Nginx的Rewrite配置

2010年7月23日 wenhui 没有评论

来源:http://www.ccvita.com/319.html

Nginx的Rewrite
经过网上查阅和测试,发现Nginx的Rewrite规则和Apache的Rewite规则差别不是很大,几乎可以直接使用。比如在Apache中这样写规则
rewrite ^/([0-9]{5}).html$ /viewthread.php?tid=$1 last;
而在Nginx中写成这样写是无法启动的,解决的办法是加上两个双引号:
rewrite “^/([0-9]{5}).html$” /viewthread.php?tid=$1 last;
同时将RewriteRule为Rewrite,基本就实现了Nginx的Rewrite规则到Apache的Rewite规则的转换。

Rewrite的Flags
last – 基本上都用这个Flag。
break – 中止Rewirte,不在继续匹配
redirect – 返回临时重定向的HTTP状态302
permanent – 返回永久重定向的HTTP状态301

官方文档请点击这里,另外如果对于302,301这些状态有疑问的,可以参考《301 Redirect 永久重定向的实现》:http://www.ccvita.com/85.html
如果需要对Nginx配置防盗链的话,可以参考《Nginx的防盗链配置》:http://www.ccvita.com/312.html

Discuz!在Nginx下的Rewrite
需要说明的是,下网上以前一直流传的Rewrite都是有误的。
下面的Rewrite中百分号前面多了个转移字符“\”,这在Apache中是需要的,而在Nginx中则是不需要的。
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page\%3D$3&page=$2 last;
正确的应该是
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
这个错误在基本上目前所有使用Nginx作为服务器,并且开启了Rewrite的网站上存在。包括Discuz!官方,目前已经给cnteacher反馈了。

完整正确的Discuz!在Nginx下的Rewrite如下:
rewrite ^/archiver/((fid|tid)-[\w\-]+\.html)$ /archiver/index.php?$1 last;
rewrite ^/forum-([0-9]+)-([0-9]+)\.html$ /forumdisplay.php?fid=$1&page=$2 last;
rewrite ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /viewthread.php?tid=$1&extra=page%3D$3&page=$2 last;
rewrite ^/space-(username|uid)-(.+)\.html$ /space.php?$1=$2 last;
rewrite ^/tag-(.+)\.html$ /tag.php?name=$1 last;
break;

相关文档
Nginx下Discuz!的Rewrite》:http://www.ccvita.com/348.html
Nginx下WordPress的Rewrite》:http://www.ccvita.com/336.html
Nginx的Rewrite配置》:http://www.ccvita.com/319.html
Nginx的防盗链配置》:http://www.ccvita.com/312.html

分类: nginx, 挨踢 标签:

SNS网站呈现出了冰火两重天的状态[转]

2010年7月20日 wenhui 没有评论

来源:经济参考报

  7月20日报道:利用偷菜等游戏吸引用户的招数已经渐渐失效,如何创新来增强用户的黏性成为SNS网站亟待考虑的问题。

  又一家SNS网站(社交网站)关门大吉:7月15日,蚂蚁网发布公告,由于公司现金流断裂,公司和网站已无法继续运营,将停止全部服务。

  消息一出,业界一片哗然,这已是本月内倒下的第二家SNS网站。早在本月初,创立三年的社交网站360圈(360quan.com)就宣布因资金链断裂将关闭运营。

  有观点称,目前的SNS网站因为盈利模式不清晰,齐齐呈现疲态。SNS网站难道已经走向穷途末路?一时间,唱衰SNS网站的声音不断。

  但与此同时,人们对于社交网站的热情依然不减,搜索巨头正伺机进入SNS领域,SNS网站呈现出了冰火两重天的状态。

  对此,有业界观察人士解读说,目前国内的SNS行业已经到了大洗牌时代,国内SNS行业的新格局即将到来……

  繁花落尽的SNS网站

  用“繁花落尽”来形容国内的SNS行业的现状,一点都不过分。

  从2007年开始,在国内兴起了一股SNS网站兴建热潮,以开心网、校内网为代表的SNS网站一夜走红,人们开始青睐于上各种各样的社交网站来扩展并维护社交圈,抢车位、偷菜、钓鱼、买卖奴隶等社交小游戏更是吸引了众多消费者尤其是办公室白领们的眼球。国内社交网站出现了爆发式增长。最后就连一些知名的门户网站,也加入了SNS混战。

  但好景不长,随着用户新鲜感的逐步丧失,在热潮过后是众多SNS网站的惨淡收场。

  2007年春节前夕,社交网站Uuzone宣告因为资金投入的断链而中断经营,成为国内首批失败的SNS网站之一。随后,是今年宣布倒下的360圈和蚂蚁网,据悉,其他的小型SNS网站如一起网、占座、亿友、亿聚等如今也是举步维艰。

  即使是SNS网站的巨头开心网和人人网也开始呈现出疲态,今年4月份艾瑞咨询发布的数据显示,今年国内SNS网站的用户注册规模虽然仍在上升,但距离2009年的峰值已经有很大距离,开心网和人人网的月度浏览时间都出现了下滑态势。

  在用户数量上,不久前,开心网对外宣布注册用户超过8000万。但在去年11月份,开心网的注册用户就已有7000万,从去年12月初至今年5月,平均每月仅增加160多万,月增速下明显下滑。

  Alexa的数据也显示,开心网最近半年的流量呈现下滑趋势,最近3个月用户量、页面访问量分别下降25%和40%.人人网的流量也从今年2月末就呈现出了下降趋势。

  社交网站中的网页游戏对用户的吸引力也在逐渐变小,据CNNIC《2009年中国网民社交网络应用研究报告》的数据显示,在用户放弃继续使用的原因中,觉得“游戏玩腻了”的用户占到14.8%.

  有业内专家表示,如今的SNS网站正遭遇困境,新用户增长缓慢、老用户流失加速的瓶颈如果不能得到有效跨越,用户的集体出逃将可能最终谋杀SNS的前途。

  盈利模式之惑

  社交网站360圈和蚂蚁网曾经也是风光无限。360圈在其建立以后两年内获得koolanoo集团三轮投资共计3300万美元,蚂蚁网也曾经获得红鼎创投的天使投资。但最终这两个网站都惨淡收场。据闻,就连蚂蚁网的CEO麦田都已经跳槽,转而加盟百度SNS事业部。

  北京软银赛富投资公司的一位互联网行业分析师对本报记者表示“这很正常”,在他看来,“国内的SNS网站大都抄袭国外的Facebook和MySpace,产品同质化现象严重。更重要的是国内的SNS网站一直没有成熟的商业模式,找不到合适的盈利模式,巨大的流量无法变现,最终投资的钱烧完了自然会倒闭。”

  这种说法得到一些业内人的赞同,中国传媒大学新媒体研究院院长赵子忠教授也认为,这些网站倒下的最主要原因在于没找到好的商业模式“收益出不来,于是投资也就断了,只能随着撤资而结束。”

  有业内观察者表示,SNS对投资者和广告商最大的吸引力无外乎它的巨大用户流量,但目前的SNS网站普遍对用户的黏性不够,以至于使得大量的用户流量无法变现。

  事实上,看似红火的SNS网站,其盈利状况并不如想象中的风光。有调查显示:即便是分成比例最高的人人网,开发商也只能拿到60%.目前国内80%以上的社交游戏月收入也就数千元,分成之后,SNS平台拿不到多少。

  目前SNS厂商的核心赢利模式主要聚焦在页面广告、植入广告、品牌主页/空间、虚拟物品、公关活动等方面,2009年CNNIC公布的数据显示,SNS社交网站的营收上,约80%的收入来自网络广告,15%来自于会员及各种增值服务收费,而5%来自于其他收入。有专家表示,与各大门户网站相比,社交网站在广告上并无优势,过于依赖广告盈利并不是最佳的途径。

  即使是全球的SNS大腕Facebook也不被看好。据了解,目前Facebook的收益主要来源于广告、开放性平台以及虚拟货币Credit的买卖和交易,其宣称在2009年的营收达到近8亿美元。但美国金融评论网站Breakingviews却称,尽管Facebook的营收增长势头不错,但该公司还未实现盈利。

  来自政府的监管压力也成为小型SNS网站难以为继的原因之一。今年6月22日,文化部出台了《网络游戏管理暂行办法》,规定从2010年8月1日起,SNS游戏运营商应当具备不低于1000万元的注册资金等条件。对此,有SNS网页游戏开发商认为,“1000万元的资金门槛太高了,这会将一些小开发企业拒之门外。”

  此外,微博的火爆也给SNS带来巨大的冲击,这也间接地影响了社区用户的活跃度。

  SNS大洗牌时代到来?

  一边是国内部分SNS网站集体呈现疲态,另一边却是国内诸多互联网大腕和投资人对于社交网站的青睐。

  今年4月13日,腾讯发布公告,表示将向DST(俄罗斯DigitalSkyTechnologiesLimited)投资约3亿美元。后者是Facebook股东之一,同时亦是Facebook社交游戏开发商Zynga投资者之一。

  紧接着,今年7月初,腾讯旗下新的SNS社区———朋友社区首页曝光,日前腾讯掌门人马化腾甚至在公开场合明确表示,腾讯未来发展的战略重点在于SNS.就此,腾讯提出泛关系链营销战略,力求实现腾讯网、QQ即时通讯、SNS、QQLive、手机腾讯网五大平台,以及“QQIM+Qzone+QQShow”三大产品的联动。值得一提的是,因为有海量的用户作支撑,腾讯的这一举措已被业内很多人士看好。

  除此之外,众多搜索网站也对SNS虎视眈眈。谷歌即将进军SNS领域的消息也不断传来;据闻,国内搜索巨头百度也将成立SNS事业部,目前正在广泛的招兵买马;此外,Facebook将于今年进军中国内地市场的消息也甚嚣尘上。

  一冷一热,国内的SNS领域呈现出明显的“冰火两重天”的态势。

  这种情况并不难理解,一冷一热的背后是巨大市场潜力的驱动。易观数据显示,预计到2011年,国内SNS注册用户数规模将达到5.1亿。2009年我国SNS市场收入为3.87亿元,同比增长47.7%;预计到2011年,SNS市场规模将达到9.79亿元。巨大的市场自然吸引众多巨头接踵而至。

  “有网站被淘汰,还有些网站会留下来并且会生存的更好,SNS网站大洗牌时代已经到来!”北京软银赛富投资公司的一位分析师断言。

  就此,国内SNS的战争又全面升级,SNS网站纷纷开始突围。5月中旬,开心网对外宣布将正式推出第三方应用平台,并开始探索与第三方开发团队分成的合作模式,多元化模式将成为开心网今后的方向。而51.com则为了坚持走平台小应用的精品化路线,果断地砍掉了开放平台上100多款效果不好、合作方运营能力差的小应用,并开始涉足微博业务。有一些SNS网站重磅推出团购网或微博作为突围战略,还有网站准备转战海外……

  但究竟哪家的策略最后能胜出,目前还没有定论。在这新一轮的SNS大战中,谁能够笑到最后,业界都在拭目以待。

分类: TMT, 资本 标签:

Nginx打开目录浏览功能(autoindex)

2010年7月19日 wenhui 没有评论

来源:http://blog.licess.org/nginx-autoindex/

Nginx默认是不允许列出整个目录的。如需此功能,
打开nginx.conf文件,在location server 或 http段中加入
autoindex on;
另外两个参数最好也加上去:

autoindex_exact_size off;
默认为on,显示出文件的确切大小,单位是bytes。
改为off后,显示出文件的大概大小,单位是kB或者MB或者GB

autoindex_localtime on;
默认为off,显示的文件时间为GMT时间。
改为on后,显示的文件时间为文件的服务器时间

location /images {
root /var/www/nginx-default/ibugaocn;
autoindex on;
}

详细参照:http://wiki.nginx.org/NginxChsHttpAutoindexModule

如果想希望目录列表支持header,footer则可以安装三方插件:

http://wiki.nginx.org/NginxNgxFancyIndex

分类: nginx, 挨踢 标签: ,

LVS均衡算法介绍

2010年7月19日 wenhui 没有评论

目前LVS主要有三种请求转发方式和八种调度算法。根据请求转发方式的不同,所构架集群的网络拓扑、安装方式、性能表现也各不相同。用LVS主要可以架构三种形式的集群,分别是LVS/NAT、LVS/TUN和LVS/DR,可以根据需要选择其中一种。在选定转发方式的情况下,采用哪种调度算法将决定整个负载均衡的性能表现,不同的算法适用于不同的应用场合,有时可能需要针对特殊场合,自行设计调度算法。LVS的算法是逐渐丰富起来的,最初LVS只提供4 种调度算法,后来发展到以下八种:

1.轮叫调度(Round Robin)
调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

2.加权轮叫(Weighted Round Robin)
调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

3.最少链接(Least Connections)
调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。

4.加权最少链接(Weighted Least Connections)
在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。

5.基于局部性的最少链接(Locality-Based Least Connections)
“基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。

6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
“带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标 IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。

7.目标地址散列(Destination Hashing)
“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

8.源地址散列(Source Hashing)
“源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
了解这些算法原理能够在特定的应用场合选择最适合的调度算法,从而尽可能地保持Real Server的最佳利用性。当然也可以自行开发算法,不过这已超出本文范围,请参考有关算法原理的资料。

分类: 负载均衡 标签: ,

2.6内核上一步一步配置LVS(Linux Virtual Server)[转]

2010年7月19日 wenhui 没有评论

来源:http://blog.csdn.net/manio/archive/2007/02/04/1502297.aspx
Linux Virtual Server(LVS)的配置方法,网上虽然是能搜到很多,但无外外乎是那几个版本。这些版本大都只是写了如何这样配置,而没有为什么这样配置,还有很多基础性的东西是默认读者已知了,就没有讲明白。
最近成功在学校机房配置了一台调度器(Director)、两台服务器(Real Server)的集群服务器,用一台客户机来访问。我的配置有比较高的可实现性,所有计算机都在同一个局域网内,不用配置网关。如果这样的LVS配置成功了,之后配置更有有实用性的集群也不难了。

本文参考了LVS中文站点上的《LVS在Fedora Core5上的配置指南(以Linux、FreeBSD、Solaris系统为RealServer)》(http://zh.linuxvirtualserver.org/node/272),原文是一篇HOW TO性质的文章,并没有对一些原理进行阐述。本文在此基础上对一些细节的部分进行了说明(甚至是很基础的地方,这些地方对于理解整个LVS系统有着重要的作用),并进行了一些改动,使得更具可实现性(所有机器都在同一网段),文中亦会说明要如何将其改为可真正派上用场的集群服务。
我假设你在此之前已经读过了LVS的基本介绍,知道其用途和基本原理。如果你还没有看过,请看一下LVS的官方站点(http://www.linuxvirtualserver.org,http://zh.linuxvirtualserver.org)。本文所述采用的是通过直接路由实现虚拟服务器(VS/DR)的方法,这里先引述官方站点对此的介绍,并标出重点、加上注释。

跟VS/TUN方法相同,VS/DR利用大多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。该方法与IBM的NetDispatcher产品中使用的方法类似,但IBM的NetDispatcher是非常昂贵的商品化产品,我们也不知道它内部所使用的机制,其中有些是IBM的专利。
VS/DR的体系结构如图3.6所示:调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过交换机或者高速的HUB相连。VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。(请看注释1)


图3.6:VS/DR的体系结构
VS/DR的工作流程如图3.7所示:它的连接调度和管理与VS/NAT和VS/TUN中的一样,它的报文转发方法又有不同,将报文直接路由给目标服务器。在VS/DR中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。(请看注释2)因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。

图3.7:VS/DR的工作流程
在VS/DR中,请求报文的目标地址为VIP,响应报文的源地址也为VIP,所以响应报文不需要作任何修改,可以直接返回给客户,客户认为得到正常的服务,而不会知道是哪一台服务器处理的。
VS/DR负载调度器也只处于从客户到服务器的半连接中,按照半连接的TCP有限状态机进行状态迁移。

注释1:VIP地址为调度器和服务器(RealServer)把共享,那会不会引起IP冲突?答案是:不会。正因为后面所说的,“调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的”。在调度器上,VIP与其局域网内IP对外都是可见的;在服务器上,对外可见的是其在局域网上的IP(调度器调度的时候使用的IP),而在服务器上,VIP的性质就像是平常我们所熟知的127.0.0.1的性质一样,它是一个loopback device,他只在网络层之上可见(包括网络层),这样的loopback device用来模拟网络适配器的行为。就算没有装网卡,127.0.0.1与VIP的这样IP都是可用的。
那为什么要在服务器上还放上一个VIP呢?
因为当只修改了MAC地址的链路层帧发到服务器的链路层时(详情请见注释2),要想再向上提交到应用层去让HTTP等服务器程序处理,必须再经过网络层、传输层等,而要通过这些层是要经过目标IP的检测的。
就像你要去参加一个婚礼,到门口,接待人员问你要参加谁的婚礼,人家这里明明举行的是李湘跟王老五的婚礼,你说你要参加谢霆锋跟张柏芝的婚礼,接待人员一定是不让你进去的。
那我就是又要说我要参加谢霆锋跟张柏芝的婚礼,以要进入李湘跟王老五的婚礼现场,怎么办?那就在李湘跟王老五的婚礼现场里安排一个自己人,你到时候对他说:“我要参加谢霆锋跟张柏芝的婚礼”,他会意地笑一声,就会帮你在李湘跟王老五的婚礼现场安排座位,让你在里面享受各种服务。
服务器里的VIP就有这个自己人的性质,他对外不可见,当请求包到达网络层以上的部分里,就可以看到VIP,从而一路上去,到达应用层,享用HTTP等服务。
原理如图(IPVS有没有到网络层?)

注释2:在这里可能有人会产生疑问,修改MAC地址就能让请求包发往Real Server上吗,不用改目标IP地址?答案是:是的。因为交换机是一个链路层的设备,链路层的传送单位是帧,他可不管网络层的包里放的是什么IP地址(网络层的ipv4包已经被封装在帧里)。当Direcotr把存有客户机的请求包的那帧的MAC地址改成某台Real Server的之后,就发出去,到交换机之后,交换机查找MAC地址与端口的对应表(端口MAC地址对应拥有些MAC地址的计算机),将这一帧发往与帧上MAC地址对应的端口,之后就发到计算机的链路层,如果MAC地址与网卡上的匹配,再向上层发送,直至应用层。

现在俺们来一步一步地在局域网内配置LVS。

四台计算机按如上方式插在交换机上,分别按如下的方式配置四台计算机。

Client

代码:

ifconfig eth0 192.168.11.1 netmask 255.255.255.0 broadcast 192.168.11.255

当重启时,上面的配置将会失效。如果要长期保留这个配置,请更改/etc/sysconfig/network-scripts/ifcfg-eth0文件。具体步骤请参考DIRECTOR的配置。

Director
首先安装IPVSADM,就是LVS的管理工具。REDHAT的用户可以到rpm.pbone.net上搜索ipvsadm,找到和自己系统对应的安装包,在安装文件夹里执行如下命令:
代码:
rpm ivh *.rpm
*.rpm代表rpm安装包的文件名。
当IPVSADM安装完成后,就可以配置DIRECTOR了,使用如下命令:

代码:
ipvsadm –C
ipvsadm -A -t 192.168.11.200:80 -s wlc
ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.21 -g
ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.22 -g
ipvsadm -Ln

每一行的命令信息可以查看IPVSADM的MAN。如果是要配置流媒体的服务器的话,应该打开UDP的包转发。
下面配置网卡:
首先新建配置文件/etc/sysconfig/network-scripts/ifcfg-eth0:0如下:

代码:
DEVICE=e th 0 : 0
ONBOOT=y e s
BOOTPROTO= s t a t i c
IPADDR= 1 9 2 . 1 6 8 . 11 . 2 0 0
NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5
BROADCAST= 1 9 2 . 1 6 8 . 11 . 255

上面配置的是DIRECTOR的虚拟IP。

配置文件/etc/sysconfig/network-scripts/ifcfg-eth0如下:

代码:
DEVICE=e th 0
ONBOOT=y e s
BOOTPROTO= s t a t i c
IPADDR= 1 9 2 . 1 6 8 . 11 .10
NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5
BROADCAST= 1 9 2 . 1 6 8 . 11 . 255

上面配置的是DIRECTOR的真实IP。

再执行下面的命令以使上面对网络的配置生效
代码:

/etc/rc.d/init.d/network restart

RS1(RealServer1)的配置
Linux Realserver 配置的关键之一在于关闭 arp,这要配置/etc/sysctl.conf如下

代码:

#f o r i p v s
n e t . ip v 4 . c o n f . l o . a r p i g n o r e = 1
n e t . ip v 4 . c o n f . l o . a rp announ c e = 2
n e t . ip v 4 . c o n f . a l l . a r p i g n o r e = 1
n e t . ip v 4 . c o n f . a l l . a rp announ c e = 2
n e t . ip v 4 . c o n f . d e f a u l t . r p f i l t e r = 1
#end o f i p v s

在/etc/sysconfig/network-scripts/ifcfg-eth0 中配置 ip 地址和网关。

代码:
DEVICE=e th 0
ONBOOT=y e s
BOOTPROTO= s t a t i c
IPADDR= 1 9 2 . 1 6 8 . 11 . 21
NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 0
BROADCAST= 1 9 2 . 1 6 8 . 11. 2 5 5

新建VIP 的网卡配置文件为/etc/sysconfig/network-scripts/ifcfg-lo:0。

代码:
DEVICE=l o : 0
ONBOOT=y e s
IPADDR= 1 9 2 . 1 6 8 . 11 . 2 0 0
NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5

再执行下面的命令以使上面对网络的配置生效
代码:
/etc/rc.d/init.d/network restart

RS2(RealServer2)的配置
Linux Realserver 配置的关键之一在于关闭 arp,这要配置/etc/sysctl.conf如下

代码:

#f o r i p v s
n e t . ip v 4 . c o n f . l o . a r p i g n o r e = 1
n e t . ip v 4 . c o n f . l o . a rp announ c e = 2
n e t . ip v 4 . c o n f . a l l . a r p i g n o r e = 1
n e t . ip v 4 . c o n f . a l l . a rp announ c e = 2
n e t . ip v 4 . c o n f . d e f a u l t . r p f i l t e r = 1
#end o f i p v s

在/etc/sysconfig/network-scripts/ifcfg-eth0 中配置 ip 地址和网关。

代码:
DEVICE=e th 0
ONBOOT=y e s
BOOTPROTO= s t a t i c
IPADDR= 1 9 2 . 1 6 8 . 11 . 22
NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 0
BROADCAST= 1 9 2 . 1 6 8 . 11. 2 5 5

新建VIP 的网卡配置文件为/etc/sysconfig/network-scripts/ifcfg-lo:0。

代码:
DEVICE=l o : 0
ONBOOT=y e s
IPADDR= 1 9 2 . 1 6 8 . 11 . 2 0 0
NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5

再执行下面的命令以使上面对网络的配置生效

代码:
/etc/rc.d/init.d/network restart

至此,一个LVS就配置好了,我们只要分别在Director,RS1,RS2的/var/www/html/文件夹下分别放入三个内容不同的名为index.htm的文件,然后在Client的浏览器中输入http://192.168.11.200,回车,不停的刷新,就会发现,有时看到的是放在RS1上的index.htm,有时看到的是RS2上的index.htm,而不会看到director上的index.html。因为发现198.168.11.200的80端口的http请求报文都被转发到到rs1或rs2上。
大功告成!

分类: 负载均衡 标签:

ipvsadm命令参考[转]

2010年7月19日 wenhui 没有评论

来源:http://zh.linuxvirtualserver.org/node/5

对ipvsadm 的命令参考,并根据自己使用的经验,进行了一个简单的翻译,希望
对ipvsadm 的使用者有一定的帮助。

为了更好的让大家理解这份命令手册,将手册里面用到的几个术语先简单的介绍一下:

1,virtual-service-address:是指虚拟服务器的ip 地址
2,real-service-address:是指真实服务器的ip 地址
3,scheduler:调度方法

(lna@networksbase.com 翻译 ipvsadm v1.21 2004 年4 月)
ipvsadm 的用法和格式如下:

ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p
[timeout]] [-M netmask]
ipvsadm -D -t|u|f virtual-service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port
[-g|i|m] [-w weight]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm –set tcp tcpfin udp
ipvsadm –start-daemon state [--mcast-interface interface]
ipvsadm –stop-daemon
ipvsadm -h

命令选项解释:

有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都可
以。
-A –add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也
就是增加一台新的虚拟服务器。
-E –edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D –delete-service 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C –clear 清除内核虚拟服务器表中的所有记录。
-R –restore 恢复虚拟服务器规则
-S –save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a –add-server 在内核虚拟服务器表的一条记录里添加一条新的真实服务器
记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e –edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录
-d –delete-server 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l –list 显示内核虚拟服务器表
-Z –zero 虚拟服务表计数器清零(清空当前的连接数量等)
–set tcp tcpfin udp 设置连接超时值
–start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说
明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived 的
VRRP 功能。
–stop-daemon 停止同步守护进程
-h –help 显示帮助信息

其他的选项:

-t –tcp-service service-address 说明虚拟服务器提供的是tcp 的服务
[vip:port] or [real-server-ip:port]
-u –udp-service service-address 说明虚拟服务器提供的是udp 的服务
[vip:port] or [real-server-ip:port]
-f –fwmark-service fwmark 说明是经过iptables 标记过的服务类型。
-s –scheduler scheduler 使用的调度算法,有这样几个选项
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,
默认的调度算法是: wlc.
-p –persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客
户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
-M –netmask netmask persistent granularity mask
-r –real-server server-address 真实的服务器[Real-Server:port]
-g –gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i –ipip 指定LVS 的工作模式为隧道模式
-m –masquerading 指定LVS 的工作模式为NAT 模式
-w –weight weight 真实服务器的权值
–mcast-interface interface 指定组播的同步接口
-c –connection 显示LVS 目前的连接 如:ipvsadm -L -c
–timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L –timeout
–daemon 显示同步守护进程状态
–stats 显示统计信息
–rate 显示速率信息
–sort 对虚拟服务器和真实服务器排序输出
–numeric -n 输出IP 地址和端口的数字形式

分类: 负载均衡 标签: ,

如何关闭LVS服务器?

2010年7月18日 wenhui 没有评论

ipvsadm -C
ipvsadm -Z

即可

分类: 挨踢, 负载均衡 标签:

Debian Linux下基于LVS配置负载均衡的web服务集群[转]

2010年7月18日 wenhui 没有评论

来源:http://hi.baidu.com/arrowapex/blog/item/8fc0e5119f14287cca80c458.html/cmtid/ea1d500834e9233de8248875

LVS(Linux Virtual Server)是Linux下一个很好的开源项目,用于搭建负载均衡的高效的服务集群,可参见http://www.linuxvirtualserver.org/

1.配置Load Balancer
对于linux2.6内核已经集成了对ipvs的支持,只要启用管理它就行,所以只要安装ipvsadm

#apt-get install ipvsadm

编写一个shell脚本:

#!/bin/bash
#define const
VIP=192.168.0.200
PORT=80
RS1=192.168.0.105
RS2=192.168.0.180
ifconfig eth0:0 $VIP broadcast 192.168.0.255 netmask 255.255.255.0
route add -host $VIP dev eth0:0
echo 1 >/proc/sys/net/ipv4/ip_forward
ipvsadm -C
ipvsadm -A -t $VIP:$PORT -s wlc
ipvsadm -a -t $VIP:$PORT -r $RS1 -g -w 3
ipvsadm -a -t $VIP:$PORT -r $RS2 -g -w 3

这主要是为了开机启动配置的LVS比较方便,当然也可以一个一个命令执行,在运行完这个脚本,还可以动态的添加或删除节点,格式类似于脚本最后几行

2.配置Real Server:
对于real server,运行什么样的OS都无所谓,可以是linux, solaris, freebsd, window,只要能配置VIP就行,我这里还是用了Debian,也写了一个启动脚本:

#!/bin/bash
#define
VIP=192.168.0.200
ifconfig lo:0 $VIP broadcast 192.168.0.255 netmask 255.255.255.255
echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce

分类: 挨踢, 负载均衡 标签: ,

www-authenticate认证过程浅析[转]

2010年7月16日 wenhui 没有评论

/*****************************************************************************

**

**    文档:www-authenticate认证过程简单研究

**

**    创建:http://hi.baidu.com/netee

**

**    日期:2009-10-07

**

**    版权:原创内容,转载请注明出处,并保留本声明信息

**

******************************************************************************/

一、www-authenticate简介

www-authenticate是早期的一种简单的,有效的用户身份认证技术。

很多网站验证都采用这种简单的验证方式来完成对客户端请求的数据的合法性进行验证。尤其在嵌入式领域中,此方法使用较多。

缺点:这种认证方式在传输过程中是明码传输的,采用的用户名密码加密方式为BASE-64,其解码过程非常简单,网络上很容易搜索到编解码的源码。采用这种认证方式对于普通用户是较安全的,但稍懂TCP/IP协议和HTTP传输协议和验证过程的,破解这种验证用户名和密码是非常简单的。所以其认证技术并不是很安全。

二、认证过程

其基本认证过程如下(以下事例假设服务端开启了www-authenticate认证功能):

1、首先客户端(一般情况为用户操作的WEB浏览器)会根据用户输入的信息向服务端发送HTTP请求,比如用户要访问www.baidu.com网站,浏览器根据此信息向该网站的服务器发送一个(可能是多个)WEB请求。

2、服务端收到请求后,首先会解析发送来的数据中是否包含有:

“Authorization: Basic YWRtaW46YWRtaW4=”这种格式的数据,如果没有这样的数据,则服务端会发送HTTP信息头“WWW-Authenticate: Basic realm=“.””到客户端,要求客户端发送合法的用户名和密码到服务端。(在发送此信息头的同时也附带验证失败时显示的页面提示信息.

3、当客户端(浏览器)收到带有类似“WWW-Authenticate: Basic realm=“.””的信息后,将会弹出一个对话框,要求用户输入验证信息.

4、用户输入用户名:admin 密码:admin后,浏览器将以下面这种格式将数据发送给服务器端:

“Authorization: Basic YWRtaW46YWRtaW4=”(以上均不包含双引号)Authorization: Basic为www-authenticate认证的标准HTTP信息头,YWRtaW46YWRtaW4=是经BASE-64加密后的用户名和密码,经解密后的格式为 admin:admin

5、 服务器收到带有用户验证信息的数据后,就会解析数据,将用户名和密码提取出来进行验证其有效性,如果用户名和密码全部合法,则将用户请求的页面数据发送给客户端,浏览器将收到的数据还原为网页内容。如果用户验证信息不合法,则返回错误信息。

三、使用www-authenticate认证的优缺点

优点:使用www-authenticate认证,在服务端做的事情较少,有一部分验证处理都是在客户端的浏览器完成的。像是否需要二次输入用户信息,弹出怎样的用户信息对话框,这些都是浏览器做的事,服务端并不需要再编写用户对话框之类的东西,也不需要判断客户端IP是否是同一个。

缺点:验证方式太简单,容易被破解。

标签: TAG: 用户登录框是怎么做的;路由器的用户登录框是怎么做的;通用的用户登录框;authenticate验证;Authorization验证

分类: 挨踢 标签: