公司大概有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的使用,能夠方便快速地部署代碼。