Linux服务器集群运维经验

公司大概有5000+以上的服务器节点,包括各类应用,我和同事共同维护大约2500+的服务器,主要包括一些视频cdn,直播视频cdn,webcdn和p2p服务器。php

如下是本身在运维工做中的一点经验和见解,但愿对你们有所帮助前端

1.       服务器型号的区分,为之后的统一化和标准化做硬件上的准备,不少人忽视这一点,其实若是这一点作得好会使后面的运维工做轻松不少,根据应用咱们主要把服务器分为3中,cpu密集型,主要用于大量计算应用,好比p2p;内存密集型,用于cache类应用,好比squid,varnish缓存服务器;磁盘密集型,用于大存储类应用,好比视频存储服务器,Hadoop日志存储集群。nginx

2.       系统的的自动安装,主要有kickstart和cobblerweb

3.       统一的yum源和定制化的rpm包, 并集成至yum源站,为后续的环境初始化作软件上的准备mongodb

4.       构建专属于本身的内网DNS数据库

5.       标准化的统一的命名方式(标准化基础),便于使用puppet管理,而且减小操做的错误,若是每一个机器的hostname都为localhost,那将是一个多么可怕的事。。。在咱们的生产环境中主要使用下面这种命名方式缓存

机房-主业务-应用程序-IP后两位-公司域名,这样一眼就能够看出是哪台服务器,应用于什么业务,报警也能够直接定位。服务器

6.自动化的配置管理和环境部署工具:puppet,puppet的模块编写要尽可能减小模块直接的耦合度,并使用class继承的方式来减小运维的工做量,定制化的facter变量会使软件的配置环境更加灵活,因为puppet暂时不支持群集,因此在实际应用中须要部署多套,根据经验,1500台左右的server时puppet会出现性能问题。运维

7.       强大有效的监控系统,在生产环境中咱们使用了zabbix proxy+zabbix master的群集结构,zabbix能够实现有效的系统和应用级别的监控,应用监控同时也使用了ppmon来实现多点监控。svn

选择zabbix有一个最大的好处,就是监控数据是存放在数据库中的,这样就能够利用数据库中的数据作不少操做,好比能够分析一段时间内服务器的各个性能指标,查看服务器的资源利用率,能够对数据进行聚合操做,从而分析全网的指标,好比总的流量,总的http code分布状况。

8.       日志收集服务器群集 和qos分析系统,构建 有效的日志收集系统能够有效地对用户的访问数据进行整合和分析,能够快速的分析qos,对应重要的节点咱们采用本地分析并导入mongodb,最后导入zabbix的方式,非重要节点则直接将日志打包压缩,经过ftp上传至Hadoop数据仓库集群中。

9.       构建冗余的结构,消除单点,在生成环境中对于一些重要节点都采用keepalived-ha的方案来提升冗余度。对于resin,php等应用服务器则在前端使用nginx作反向代理,同时nginx使用keepalived-ha

10.   自动化的代码分发系统源码天空,主要是controltier + svn的使用,能够方便快速地部署代码。

相关文章
相关标签/搜索