我在網易雲信是如何做運維的

2022-01-10 15:37:28 字數 2906 閱讀 8480

先介紹下網易雲信運維工程師的主要職責,包括但不限於軟硬體部署、網路管理、應用**維護、安全漏洞修復、容量規劃、故障處理、效能優化等。

雲信的運維工程師們很相信乙個神聖的定律——墨菲定律:事情如果有變壞的可能,不管這種可能性有多小,它總會發生(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有比較成熟的文件,大家可以按需調研學習。

最後必須說一句:乙個可運維、方便運維的產品,開發同學的投入功不可沒。

我是如何做知識付費的

對這個領域可能你了解過,也可能沒有了解過,沒關係,通過本課程的講解,或許對你有一些幫助。可能也有人會問,知識付費真的可以做嗎,我又適不適合去做呢?我可以告訴你,任何乙個行業,都可以通過知識付費來做一遍,而且,許多人已經依靠做知識付費每年收入過百萬,所以,不要質疑能不能做,行動起來才是真正要做的。課程...

「我」是如何做測試專案管理的

帶專案差不多1個季度了,針對這一季度的工作做乙個總結,分析一下成長和遇到的問題,希望後面可以做的更好。以下內容有自己的總結,也有參考蔡為東老師的步步為贏 軟體測試管理全程實踐。專案內容 ios端專案 測試組主要工作職責 做好測試工作,以最少的人力 物力和cost產出符合需求 保障質量的產品。測試專案...

我是如何做固定頭部 thead 的

在前端開發中經常遇到需要頁面滾動時,固定某個區域顯示,常見 的需求,因為 有很多列,如果列名不固定在頂部顯示,滾動到底部時,可能就不知道某些列對應的是什麼了 那我們就聊一下如何在滾動時固定 thead 讓它始終顯示在列表的上方 如果我們用css來實現,網上常見的一種方案是給tobdy乙個固定高度,然...