最常用的F5与citrixnetscaler。比如12306前端的web好像用的就是F5的BIGIP。如果公司资金足够的话,相对使用开源软件来说理方便。优点:维护方便,性能稳定缺点:费用太高
Windows2003的服务器都自带有NLB来实现。实现机制类似于lvs,无法做到以上nginx七层协议。使用windows实现是通过广播方式将请求发向同一网段的所有ip。如果通过NLB实现,最好将同一组NLB的服务器划分在同一个vlan下。以防止广播到其它的ip上,增加交换机的流量。优点:免费(只要有windows就自带了),配置方便。不用增加单独服务器。缺点:数据广播方式实现,需要配置vlan解决。
相对上面三种方式实现的互载均衡都有各自优点。如果小型windows网站服务器,采用windows下的nlb实现还是不错的选择。不用增加单独的服务器。大型以上网站建议还是采用硬件(F5big-ip)或开源下的lvs和nginx来实现。个人还是比较便向于nginx来实现,方便动态的对web的服务器进行调整。
静态网站相对来说存储静态网页内容(html,js,css,jpg,png)和用户上传文件及图片。
相对静态网站来说建议将css,jpg,png及用户上传文件放在和主网站不同的域名上。不是指二级域名,是一级域名。如主网站用www.website.com,而css,jpg,png及用户上传文件使用file.imageswebsite.com域名。这样好处主要是可以减少主域名的cookies发送到不需要使用cookies的文件服务器上。可以起到加快用户访问和减少服务器流量作用。比如:将用户的登入信息cookies写入到website.com域名下,每当浏览器请求website.com域名下(包括二级域名)的任何网址都会将cookies信息发送请求的网址信息头上。将不需要访问用户cookies的文件放在不同的域名下,将不会发送cookies信息。大家有兴趣可以用firebug进行监控查看。
如果资金允许,可使用商业的CDN服务。只需将域名指向CDN服务商指定的服务器即可对静态网站使用CDN加速。国内常见的CDN网宿、蓝讯、帝盟等。
如果你在全国各机房都有服务器也可以自己搭建CDN服务。使用硬件(F5big-ip),根据用户请求的ip,将用户指到最近的idc机房服务器上。然后在各idc机房服务器上使用squid做反向代理从源服务器读取静态网站,对网站内容和用户上传图片的缓存。从而实现内容的加速。
动态网站相对静态网站来说,和用户的交互性多。开发动态网站的技术相对来说也是多种多样(asp.net,php,jsp等)。
由于我们动态网站是多台部署,当用户上传文件时我们不能像单台服务器那样存在本地服务器上(其它服务器无法读取)。而是需要将用户文件做一个集中的存放地方。
所有web服务器,将用户的上传文件保存在数据库中。统一从数据库中读取和写入。最不推荐方式。相对来说数据库的资源是最昂贵的,用来存用户文件是最浪费了。另外,当用户数据越来越大时,对dba来说是一个最痛苦的问题。不方便做缓存及文件分发同步。
一般我们的应用程的配置文件都是放在当前程序目录下。由于我们web应用程序是分开部署,如果一个配置节点内容修改。就需要同步到其它的服务器上。另外一般程序都在初始化读取配置内容。如果在程序运行中修改了配置只有重新启动程序进行更新。这就出现了一个配置同步的问题。
类似动态网站内容更新一样,使用rsync或都同步软件对配置文件进行同步。当UAT环境配置修改后,手工或定时将文件同步。应用程序定时从配置文件中更新配置。
自己开发配置服务程序,提供接口给各个应用程序读取配置方式。配置服务程序和各应用通过tcp方式实时实现配置内容读取。
静态网站压缩可以通过反向代理squid进行配置。常用浏览器都支持gzip网页格式的压缩。动态网站的话,各平台的web服务器都有提供网页压缩的配置选项。基本上大家上google搜一搜都解决了。
在web服务器上设置静态网页文件的Last-Modified和ETag。如果服务器上文件没有更新,则不发送新的内容到客户端。
建立数据库时,有一个数据库预分配空间。建议初始分大一些,这样好处避免了在插入数据时达到数据库分配的空间。数据库自动分配数据库空间影响数据库插入的性能。另外,数据库的自动增长建议按具体大小增长,比如2G根据你自己预计的大小。防止过快达到数据库上限导至系统频繁为库分配空间。
根据业务应用来进行划分数据库。如我们上面的电子商务网站我们可以分为member,shop二个库。Member存储用于会员信息,shop库存储商品,订单,支付信息。
这里所说的服务器监控只是针对web服务器的运行状态的监控。比如网络流量,cpu,内存,硬盘负载。服务器监控常见通过SNMP协议进行,在linux和windows下都通用。针对服务器监控我这推荐使用cacti软件进行。服务器上都配置有双网卡,一个内网,一个外网。在内网卡上增加snmp协议,然后在cacti中增加需要监控的服务器。给cacti个外网ip就可以通过web界面进行查看服务器的状态了。Cacti软件的介绍和配置大家可以上网搜搜,这里就不做介绍了。Cacti还可以监控服务器上运行进程,如果进程停止运行可以发出报警邮件。