我终于堕落了,开始搞前端技术
06-29
今天活进度不错,闲下来再扯几句,接上篇: 初创公司的运维应该怎么做(lamp架构)
事情总得发展,一不小心就会发展到两台以上的服务器。
这时候,如何部署就是问题了,既要节约硬件带宽资源,省钱,又要充分发挥我们硬件的特性。
1、数据库,总得做个热备吧,主从复制,两个服务器就足够,当然更多的话,你可以多个从数据库。这时候主服务器挂了,备份的数据库可以立马变成主数据库进行工作,而主数据库又变成从的,这样达到无缝的切换。数据库多了,写压力集中在主数据库,而从数据库就可以分担读的压力。一般系统读压力大大高于写压力(特殊的系统除外),这样我们把其他服务器的CPU还能合理利用上。
2、如果但是数据库分到其他服务器上,CPU看似是充分利用了,带宽也得去利用。mysql同步走内网流量,自己用switch相连,而其他服务器同样可以分担http的负载。这时候,我们要考虑如何把原来独立服务器的http流量分布到其他新服务器上。直接做个nfs,把附件图片等分布到新服务器上是个最简单最懒的方式,也是短期最有效的,因为我们可以更换一个变量名就把url指向另外的服务器。
3、分频道也是办法之一,我们把一个大网站拆成几个小网站,分散到几个服务器,包括代码、数据、数据库,不过这种方法对小网站是费力不讨好,分开了,还整合不?分频道之外,还可以分功能,可以把email单独拿出来,也可以把一些消耗资源的功能单独拿出来。
4、最合理的,还是要综合考虑当前的服务,压力所在。把CPU、存储,带宽资源需求的模块都列出来,然后平均分布,再寻找平均分配资源的部署方式,这样是最优化的,但也对开发人员提出了更高的要求。程序代码的模块化、可零活配置、可迁移、可扩展是进行优化的前提。所以,在网站建设初期,最好考虑如何去扩展站点。
---------------------
貌似运维跟程序又掺合到一起了,当然,好的项目是需要各部门合作的,团队力量总是大的,所谓:瘦死的骆驼比狗大。
这里说的初创公司,也包括一些小型的网络公司,运维是很头疼的事情。
初创公司,包括一些现金有问题的公司,资金紧张,买不起大量的设备,用不起高级的运维人员,财政捉襟见肘。
这种公司一个很重要的问题,就是要充分利用现有的资源,把每一分钱的效益都充分榨出来。
从技术上讲,大部分瓶颈都发生在带宽上,而大部分的灾难都发生在数据丢失上,底下,从以下两个问题来描述如何去搭建高效安全的小企业级应用系统。
单台服务器方案:
这样的公司实在是穷疯了,只有一台服务器,一个百兆共享。
配置:linux nginx mysql php 这是标配。单台服务器就别考虑负载均衡之类的东西了,只要保证http服务够快,充分去利用idc的带宽,跑高跑满是前期要做的。
如果只是网站,没有下载之类的,nginx是最佳的选择(做虚拟主机安全性太差)。这个时候,优化好mysql,搭配nginx优秀的性能,一般瓶颈优先出现在带宽上。
不建议把带宽跑得很满,因为idc一般都会在交换上限制流量,所以,不要等到相应很迟缓的时候再考虑增加带宽,如果带宽实在闲着没用,开个ftp,给员工做文档备份,装个邮件服务器,解决了内部沟通的问题。
数据安全,是一定要做的。mysql前期可以每天全备份,找个本地的机器每天下载备份,虽然浪费点人工,但不失为最安全的备份。如果本地都能搞丢……就拿块硬盘自己拍自己。
网站程序建议用svn版本控制发布,这样,就有了源码、svn库、本地开发三个以上的备份。而网站的附件,在程序编写前就得考虑增量备份的方式,合理设计存储结构,每天增量备份(因为附件多的话,每天全备压力会大)。而每天的增量,设计一个全备,一旦出现数据问题,有前边的全备,当日的增量,这样会把损风险和失降低到最低。
—————————————-
临时撰写,想哪里写哪里。希望有经验的一起交流。
最近,一友找我去优化apache,了解后,是vsuch.com网站的问题。
vsuch网站使用lamp+windows混合平台(汗),追究历史,原来网站用.net编写,后用php重构了整个网站。
整改前 Mysql运行在linux机器上,php运行在windows平台上,中间局域网方式连接。
网站日访问量不小,alexa排名6800,windows平台明显抗不住,经常莫名其妙的问题。(题外话:我最早维护的服务器也是windows,apache在上边很不稳定)
了解后,我感觉一台服务器就足矣,放弃了apache的方案,安装了nginx+php,数据库依然沿用原来的。
整改后,linux负载稍稍升高,mysql负载不变,http的负载在nginx下并没有表现出多高。顺利完成了迁移。
后公司又开通了cdn服务(有钱),速度有了很明显的提升。
-----------------------------------------
根据其公司目前的技术结构,我提出了很多优化和整改的想法,希望每个创业网站都能走好。
-----------------------------------------
穷人,就得想穷人的办法,带宽被坑,严重缩水,为了分享大量资源,最终决定使用bt发布一些大资源。
网上找了很多BitTorrent架设btserver的教程,不是版本不对,就是安装复杂,所以,我找了个比较老的版本,一次装上调通。
我使用了BitTorrent-3.9.1,官方下载地址为 http://download.bittorrent.com/dl/archive/BitTorrent-3.9.1.tar.gz
防止墙,我传到本地 bittorrent-3.9.1.tar.gz
首先你服务器要预装python,centos4.7预装python2.3,我预留,但服务器环境python使用了2.5版,2.3不能删,yum对版本依赖性比较强,还得预留。
解压 BitTorrent-3.9.1.tar.gz 后进入文件夹,按照说明进行安装:
即可安装。当然中间会遇到各种问题,大部分是关于python版本或者依赖的,错误可以跟帖发一下,一起解决。
好了,首先启动服务器:
其中port参数是服务的端口(一定记得调一下防火墙),dfile是日志
然后打开 http://ip:6969/ 如果显示
BitTorrent download info
* tracker version: 3.9.1
* server time: 2009-06-09 05:12 UTC
则证明服务启动成功。
下面创建一个种子文件
这样,就针对 /root/soft/xmlrpc-epi-0.54.tar.gz 文件创建了一个种子文件,使用的track地址是 http://bt.sunboyu.cn:6969
生成的种子位置,是这样:如果针对一个文件,则在文件同一文件夹下,如果针对文件夹,则在文件夹同级目录。
然后发布一个种子(很多人可能对种子这个概念不了解,可以查看资料,关于bt协议的)
发布种子有很多参数要限制,可以看命令具体参数,比如占用的端口跟限速等。
我测试了一下,linux发布的文件,就可以下载了。这只是服务器建立的阶段,要管理,还得写好多管理脚本,否则文件多的话,手工可受不了。
另外还有好多的开源web监控、管理、发布的系统,大家可以下来搭建尝试。欢迎交流。
相关资料 http://zh.wikipedia.org/wiki/BitTorrent