公司大概有
5000+
以上的服务器节点,包括各种应用,
我和同事共同维护大约
2500+
的服务器,主要包括一些视频
cdn
,直播视频
cdn,webcdn
p2p
服务器。
 
以下是自己在运维工作中的一点经验和看法,希望对大家有所帮助
 
1.      
服务器型号的区分,为以后的统一化和标准化作硬件上的准备,很多人忽视这一点,其实如果这一点做得好会使后面的运维工作轻松很多,根据应用我们主要把服务器分为
3
中,
cpu
密集型,主要用于大量计算应用,比如
p2p;
内存密集型,用于
cache
类应用,比如
squid,varnish
缓存服务器;磁盘密集型,用于大存储类应用,比如视频存储服务器,
hadoop
日志存储集群。
2.      
系统的的自动安装,主要有
kickstart
cobbler
3.      
统一的
yum
源和定制化的
rpm
包,
并集成至
yum
源站,为后续的环境初始化做软件上的准备
4.      
构建专属于自己的内网
DNS
5.      
标准化的统一的命名方式(标准化基础),便于使用
puppet
管理,并且减少操作的错误,如果每个机器的
hostname
都为
localhost
,那将是一个多么可怕的事。。。在我们的生产环境中主要使用下面这种命名方式
机房
-
主业务
-
应用程序
-IP
后两位
-
公司域名,这样一眼就可以看出是哪台服务器,应用于什么业务,报警也可以直接定位。
 
6.
自动化的配置管理和环境部署工具:
puppet,puppet
的模块编写要尽量减少模块直接的耦合度,并使用
class
继承的方式来减少运维的工作量,定制化的
facter
变量会使软件的配置环境更加灵活,由于
puppet
暂时不支持群集,所以在实际应用中需要部署多套,根据经验,
1500
台左右的
server
puppet
会出现性能问题。
 
7.      
强大有效的监控系统,在生产环境中我们使用了
zabbix proxy+zabbix master
的群集结构,
zabbix
可以实现有效的系统和应用级别的监控,应用监控同时也使用了
ppmon
来实现多点监控。
选择
zabbix
有一个最大的好处,就是监控数据是存放在数据库中的,这样就可以利用数据库中的数据做很多操作,比如可以分析一段时间内服务器的各个性能指标,查看服务器的资源利用率,可以对数据进行聚合操作,从而分析全网的指标,比如总的流量,总的
http code
分布情况。
 
8.      
日志收集服务器群集
qos
分析系统,构建
有效的日志收集系统可以有效地对用户的访问数据进行整合和分析,可以快速的分析
qos
,对应重要的节点我们采用本地分析并导入
mongodb,
最后导入
zabbix
的方式,非重要节点则直接将日志打包压缩,通过
ftp
上传至
hadoop
数据仓库集群中。
9.      
构建冗余的结构,消除单点,在生成环境中对于一些重要节点都采用
keepalived-ha
的方案来提高冗余度。对于
resin,php
等应用服务器则在前端使用
nginx
做反向代理,同时
nginx
使用
keepalived-ha
 
10.  
自动化的代码分发系统,主要是
controltier + svn
的使用,可以方便快速地部署代码。
 
以上是自己的一点经验,欢迎大家来拍砖。
 
转载地址: