我在网易云信是如何做运维的?
網易云信運維工程師的主要職責,包括但不限于軟硬件部署、網絡管理、應用代碼維護、安全漏洞修復、容量規劃、故障處理、性能優化等。
網易的運維工程師們很相信一個神圣的定律——墨菲定律:事情如果有變壞的可能,不管這種可能性有多小,它總會發生(Anything that can go wrong will go wrong)。根據墨菲定律的推論,任何一個環節都不是100%靠譜的。而對于云信這樣的及時通訊云平臺來說,核心功能保證99.99%的可靠性,也就是說,一年不可用時長要小于52分鐘。因此容災是必不可少的,需要把容災做到方方面面。
首先,硬件資源都是冗余的,主要包括以下幾點:
服務器:雙電源,雙網卡bonding,系統盤raid10
機柜:雙電路接入,電源容量充足
交換機:接入交換機堆疊并且單個交換機網卡bonding
網絡:核心路由器/核心交換機冗余
IDC:到各ISP的光纖要大于等于兩條
運維人員:應用運維、系統運維、DBA所有角色一主一備。
其次,整個應用架構的容災,主要包含以下幾個層次:
接入層:云信使用了ospf+nginx做為了前端接入集群的負載均衡,所有nginx機器配置統一,upstream配置里添加了到后端服務器(大于1個)的健康檢查
應用層:各集群服務器無單點,并且保證服務器分布在不同機柜,不同交換機
中間件:hbase本身就是分布式系統,其他中間件云信也做了高可用改造
數據庫:做為架構中最核心的一環,數據庫的容災設計也是最完善的。數據庫支持主從同步,主庫掛了之后,可以1分鐘內自動切到從庫,并且能夠保證數據一致性
?
最后,IDC機房掛了怎么辦?運維人員如何對業務運行了如指掌?
這個時候,就需要一個強大、好用的監控系統了,監控是穩定性建設的基石;網易IM云使用網易自研的哨兵監控系統,意指向哨兵一樣迅速發現并相應異常狀態。我們使用哨兵做了以下幾個維度的監控:
首先,在監控完整性方面,自上而下做了業務監控、應用監控、基礎監控,相關監控項類型如下:
如某業務指標的監控趨勢圖
?
其次,在監控有效性方面,通過哨兵監控系統,報警有效性達到90%以上
監控數據采集、數據上報有效:數據采集失敗、數據不能上報監控agent的監控采集器每天以報表形式發送到運維負責人,運維負責人進行修改
報警發送方式(短信、郵件等)、報警接收人有效:每天統計短信、郵件及其他渠道的報警發送量,有異常變化(突增或者為0)以報表通知到運維負責人修改
報警1分鐘內到達:對自身發送器進行監控,消息堆積時及時處理解決
最后是哨兵的報警收斂功能。哨兵通過增加報警重試次數,集群報警合并等手段進行報警收斂,有效的避免了服務器數量級達到一定程度后,過多的報警會讓人麻痹,進而忽略掉了真正有效的報警。
然而,雖然做了以上的工作來預防故障、快速發現故障,但故障的發生還是在所難免的,一個合適的故障處理流程能夠有效的縮短故障處理時長。現在來看看云信的故障處理流程:
為了避免在遇到故障時,故障處理人員手忙腳亂,相關人員配合不到位,加長故障時長,會定期進行故障演練;驗證業務容災能力,監控報警是否可達,人員應急處理能力。
?
一個產品隨著業務的日益復雜,應用系統會變的錯綜復雜。所以產品的運維標準化是必須的。有人會問,1個人運維10臺服務器和運維1000臺服務器,哪個更難一些?如果監控方式、部署方式無任何規律,1個人要支撐10臺服務器就已經疲于應付;相反,如果所有的服務,都是同樣的監控方式、部署方式,那么1個人運維1000臺服務器,也是輕松愉快的。所以當IM云的服務器數量達到一定規模時,為了提高運維效率,解決運維管理混亂的難題,我們制定了線上運維規范,包括但不限于以下幾個方面:
應用部署規范:一臺機器只部署一個應用;規范文件與目錄結構,我們所有應用代碼都在不同服務器的同一目錄下,降低由于文件數量眾多帶來的運維風險,保證生產服務環境的整潔
日志運維規范:對日志輸出目錄、命名、格式、分割和歸檔進行了規范性約束。應用相關的日志統一存放在當前應用目錄結構下面的logs目錄。能夠方便而有效地進行應用服務的多維度監控、應用日志分析,以及提升故障發現率。
代碼發布規范:為減少代碼上線引發的事故,提高代碼上線效率。代碼有固定的發布窗口,發布前必須進行發布審核,并且有完善且可執行的回滾方案
監控和報警規范:云信所有應用包含基礎監控和應用監控;以及云信自身的業務指標監控。報警內容清晰明確,報警接收人有效且保證在兩人以上
賬號和權限規范:系統管理員使用root權限;代碼發布使用公共賬號權限;普通開發人員使用個人賬號權限,個人賬號權限不能在服務器上執行除家目錄之外的寫操作
無專職運維團隊的企業,如何提高開發運維效率?
為了減少運維管理的成本,一定要做應用部署的隔離,有運維團隊的公司會選擇傳統的虛擬化技術(kvm,lxc)對物理機進行初始化,現在業界比較流行的是物理機上運行Docker容器對服務進行隔離;也可以選擇直接使用云計算公司提供的服務器資源。服務器的賬號權限配置,軟件環境配置等配置管理可以使用puppet來管理;代碼部署方面可以使用gitlab+pipeline替代方案;監控系統業界比較常用的是開源的zabbix;持續集成通常使用jenkins;自動化運維工具比較流行的是使用ansible;提高應用的故障容錯能力可使用Netflix Hystrix。
以上部分工具,網易目前也同樣在使用,而且很好用;關于工具的使用方式,google有比較成熟的文檔,大家可以按需調研學習。
最后必須說一句:一個可運維、方便運維的產品,開發同學的投入功不可沒。
網易云信∣真正穩定的IM云服務
http://netease.im ?長按識別,關注精彩
總結
以上是生活随笔為你收集整理的我在网易云信是如何做运维的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【干货分享】如何应对线上数据库的误操作
- 下一篇: 宝宝树携手网易云信打造母婴咨询沟通新体验