來自:馬哥Linux運維 的整合文章 原文出處:blog.chinaunix.net/uid-15866552-id-5749921.html 連結已失效
如何成為運維經理?成為運維經理需要什麼樣的能力?我想很多運維工程師都會有這樣的思考和問題。
不想成為將軍計程車兵,不是好士兵-拿破侖
如何成為運維經理?成為運維經理需要什麼樣的能力?我想很多運維工程師都會有這樣的思考和問題。
如何成為運維經理。一般來說,運維經理大概有兩種出身,一種是從底層最基礎的維護做起,透過出色的維護工作,讓公司領導對這個人非常認可,同時對Linux運維工作也比較重視,逐步走向Manager的崗位。第二種是業務管理出身或者有IT技術背景,具備了一定經驗直接進入IT管理層的人員。
那麼做為一個Linux運維經理,你需要哪些技能武器、管理哪些細節,具備什麼樣的能力?
運維技能武器庫
Bootstrapping: Kickstart、Cobbler、rpmbuild/xen、kvm、lxc、Openstack、 Cloudstack、Opennebula、Eucalyplus、RHEV
配置類工具: Capistrano、Chef、puppet、func、salstack、Ansible、rundeck
監控類工具: Cacti、Nagios(Icinga)、Zabbix、基於時間監控前端Grafana、Mtop、MRTG(網路流量監控圖形工具)、Monit
效能監控工具: dstat(多型別資源統計)、atop(htop/top)、nmon(類Unix系統效能監控)、slabtop(核心slab快取資訊)、sar(效能監控和瓶頸檢查)、sysdig(系統行程高階檢視)、tcpdump(網路抓包)、iftop(類似top的網路連線工具)、iperf(網路效能工具)、smem)(高階記憶體報表工具)、collectl(效能監控工具)
免費APM工具: mmtrix(見過的最全面的分析工具)、alibench
行程監控: mmonit、Supervisor
日誌系統: Logstash、Scribe
繪圖工具: RRDtool、Gnuplot
流控系統: Panabit、線上資料包分析工具Pcap Analyzer
安全檢查: chrootkit、rkhunter
PaaS: Cloudify、Cloudfoundry、Openshift、Deis (Docker、CoreOS、Atomic、ubuntu core/Snappy)
Troubleshooting:Sysdig 、Systemtap、Perf
持續整合: Go、Jenkins、Gitlab
磁碟壓測: fio、iozone、IOMeter(win)
Memcache Mcrouter(scaling memcached)
Redis Dynomite、Twemproxy、codis/SSDB/Aerospike
MySQL 監控: mytop、orzdba、Percona-toolkit、Maatkit、innotop、myawr、SQL級監控mysqlpcap、拓撲視覺化工具
MySQL基準測試: mysqlsla、sql-bench、Super Smack、Percona’s TPCC-MYSQL Tool、sysbench
MySQL Proxy: SOHU-DBProxy、Altas、cobar、58同城Oceanus
MySQL邏輯備份工具: mysqldump、mysqlhotcopy、mydumper、MySQLDumper 、mk-parallel-dump/mk-parallel-restore
MySQL物理備份工具: Xtrabackup、LVM Snapshot
MongoDB壓測:iibench&sysbench;
運維管理工作全貌
從買域名開始,要買多個域名,50個甚至100個。分為主域名和推廣域名(給推廣連結用的)。要從godaddy上買域名,因為這裡的域名穩定,不會出現被攻擊等事情。同時還要買域名保護,這樣網際網路使用者ping這個域名就解析不到真實的伺服器地址。
同時域名解析的操作不要在godaddy上進行,要把解析的操作放在cloudflare上或者dnspod上進行操作,也可以放到zndns上(這個dns可以做到一個域名解析多個IP地址,根據就近原則,把最快的IP地址解析給使用者。)也可以自己搭建dns伺服器,在godaddy上只想到自己搭建的dns伺服器就可以了。這樣,修改dns指向的時候會更快。
一定要買cdn服務。如果出現部分使用者訪問不了就使用cdn服務。可以從cloudflare上購買cdn服務,這樣域名解析到cdn上,然後cdn解析到肉盾擊還是那個,然後肉盾擊指向核心伺服器上。Cdn充當一個快取和轉發的作用,大流量攻擊的時候他可以防禦至少200G的攻擊。Cdn是全球快取的。
在國內租用幾臺伺服器做圖片快取伺服器即可,這樣提高訪問速度。其實nginx本身就是一個圖片快取伺服器。
圖片伺服器和其他伺服器要分開,肉盾擊可做圖片快取。
選擇機房太重要了,要服務質量好的,還要高防好的,還要可靠性高的,還要相應及時的,還要能隨時可以檢視伺服器狀態的,最重要還要服務態度好了。
機房要買香港九河(使用者核心伺服器),美國聖安娜機房(用於肉盾擊)(雖然慢,但是安全高防做的真好,大流量攻擊的時候,這裡的機房還是可以訪問,所以,雞蛋不要放在一個籃子裡頭,要各個等級都有才叫好的,國內機房快,但是高防效果差,美國機房慢但是高防效果好)
一個主頁,就是招商或成為打廣告的網站,可以租用雲主機,這樣被打死就被打死吧。裡面可以有一個連結,指向遊戲首頁,這個連結可以是帶埠號的,那就簡單了。
也可以是不帶埠號的,這時候就一定要用cdn伺服器,或者使用免備案機房,把肉盾擊放在免備案機房,因為國內搭建網站都是要備案的,博彩這個行業是被禁止的,為了避免域名或者IP地址被和諧了(gwf)所以要用免備案機房。
或者就把肉盾擊也放到香港或者臺灣或者韓國等等機房。這樣使用者可以不使用埠號,直接用域名就可以訪問咱們的網站。
要個網站要有監控系統,實時監控伺服器是否有攻擊,功過檢視日誌是否激增,還要把日誌放到日誌伺服器上(syslog服務),使用cacti服務可以把日誌放到cacti上。網速是一定要檢視的,網速激增則證明一定是有攻擊。
每天要看日誌,要用日誌分析軟體,看看訪問源是單一訪問源還是多個不同的訪問源.監控伺服器要有報警功能,一旦情況異常就要立刻報警,然後起床處理攻擊。
攻擊一般看情況而定,一般的攻擊都是直接攻擊域名。小量的攻擊可以透過nginx和iptables本身的防禦功能就防掉。大量的攻擊由於直接把網路頻寬佔用滿了,伺服器無法正常相應,只能依靠機房的高防了。
所以要買大量的高防,建議至少200G。如果攻擊源是單一IP或者幾個IP,那麼就讓機房把這幾個IP給遮蔽就可以了。遇到cc或者ddos攻擊,只能靠機房解決。一臺伺服器被打死後,需要立刻把域名指向另一臺伺服器,(或者直接把域名指向百度)。
大量的攻擊還要使用cdn,讓cdn直接指向核心伺服器就可以了,這樣能快一點,讓使用者還可以玩。總之大流量攻擊是不能完全防止的。
一個網站一定要有冗餘,比如現在是1000人同時訪問的併發量,一定要讓網站的負載達到2000人的併發量,要不然一搞活動,網站負載不了那麼多人就完了。
伺服器的配置,要用三網絡卡,一個用於使用者連線,對外的訪問(要好的網絡卡)。一個用於內網伺服器之間的訪問使用。一個用於ssh管理,這樣大量攻擊的時候咱們還可以操作伺服器。
每個網絡卡還要多個IP地址,這樣防止某個IP被遮蔽了。國內網路和國外網路經常會有IP不好用的情況。硬碟至少要映象(raid 1),cpu要兩路的,雙電源,總之不要有單點故障。至於肉盾擊的配置可以低一些,甚至臺式機的配置都可以,但是網路一定要好,尤其是和核心伺服器之間的網路一定要好。
資料庫要做主從複製,要有異地備份,nginx伺服器要做叢集,就是upstream。前臺(提供使用者訪問頁面)和後臺(員工管理介面)要用兩臺不同的機器,不要互相影響。其餘的服務可以使用一臺虛擬機器完成。
這樣可以省錢,郵箱直接買google的gmail企業郵箱就好了,非常好用,最好沒人一個。或者公司內部搭建自己的聊天軟體(最好還錢買聊天軟體)。
測試環境要三套,開發人員電腦上自己的環境,要區域網一套測試環境,網際網路一套測試環境,生產環境。區域網的測試環境一定要穩定,可以買一個機櫃等等的網路裝置放在一起,不要用普通電腦。區域網要有svn或git的程式碼管理工具。充分測試後在上傳到生產環境。
肉盾擊和核心伺服器之間一定要可以使用ping命令,這樣可以看看那個IP地址不能使用了,網路連通性都可以看出來。
至少兩個,如果有運維經理一個運維人員就夠了。這樣所有運維工作必須有操作檔案,兩個人互相協調工作,不需要倒班,但是24小時待命。網管一個就夠了。
普通的運維部門大概就這樣,如果是大的網路架構,會有自己的資料中心機房到時候在安排人手。
要有最佳化和安全配置,比如說nginx基於cpu的最佳化,每個程式基於cpu和記憶體的限制。
所有密碼要有3個月就修改一次,尤其是域名的賬號和郵箱密碼,域名是最重要也是最脆弱的環節。
區域網一定要穩定,可以買兩條網線,至少10M頻寬,還要買一個移動wifi,給員工手機上網。
如果是大型網路架構,那得有自己的核心機房,就不是租用機房了,每個崗位都是若干人組成的,包括運維工程師,資料庫管理工程師,網路工程師,安全工程師,儲存備份系統工程師,運維經歷負責協調各個部門間的工作。目前就是一個運維就能完成所有的工作。
運維的工具要統一,比如連線資料庫使用sqlyog工具,連線伺服器使用crt工具,密碼管理用keepass,上傳伺服器程式碼使用winscp工具,等等。這樣運維人員之間工作比較好協調。
另外運維一定要有大量時間學習,每天都要上網找新技術,好的資料,最好要懂英文,因為好的技術檔案都是英文寫的。這樣對運維工作很有幫助,而且運維技術實力會有很大的進步的,為迎接更大的需求做準備。
最後一定要有預案,就是伺服器一旦出現重大問題,就是解決不了了,這個時候就不要去解決這臺伺服器,使用預案,把啟用備用方案,儘快讓網站可用。
平時多做預案演習,還要多做備份的還原操作,因為有的備份不可用,這是常見現象。別到關鍵時刻備份不能用,整個網站就完了。
要有一整套的安全配置,包括使用者安全,應用安全,系統安全,檔案安全等。這樣防止伺服器被駭客侵入。
一定要做高併發測試,模擬同時線上使用者2000人,看伺服器的負載情況,要有伺服器高併發配置,網路方面是機房的事情,但是得選擇最合適的IP地址,最適合的機房,及出口頻寬。
高併發是伺服器架構的事情,不是單單一臺伺服器的事情。該花錢的地方一定要花,可以省錢的地方要知道怎麼省錢。
運維所有資訊兩個人共享,包括密碼和伺服器配置步驟,由運維經理帶領團隊,打造成一個互相學習,技術實力雄厚,標的一致的和諧團隊。讓每個人在團隊中都得到自己想要的。
運維經理的為人就很重要,要不然留不住人,大家心不往一起使勁。運維工作技術不是最重要的,因為這個職位現學現用也來得及,所以工作態度/為人和經驗是最重要的。
對伺服器建立日誌,所有伺服器的所有操作都要有記錄,並且寫清時間操作內容。對生產伺服器操作之前一定要做風險評估及解決方案。
應用上線後,運維工作才剛開始,具體工作可能包括:升級版本上線工作、服務監控、應用狀態統計、日常服務狀態巡檢、突發故障處理、服務日常變更調整、叢集管理、服務效能評估最佳化、資料庫管理最佳化、隨著應用PV增減進行應用架構的伸縮、安全、運維開發工作。
核心運維管理工具箱
重點介紹運維流程管理、運維釋出變更、運維監控告警三個方面的具體工具,可作為工作日記使用。
第一類:運維流程管理工具
1.釋出變更流程管理工具
做為系統介面與其他角色的工作銜接。並提供審批環節控制釋出變更的風險。流程管理工具並不負責具體的業務操作的執行,只是作為單據系統跟蹤流程和確保閉環。
2.告警和突發管理工具
體現業務受損的告警自動建單管理。人工確認之後升級為突發單。透過建單管理告警和突發確保流程的閉環,以及每次故障都能夠總結出經驗,並未度量業務的可用性提供KPI。
第二類:運維釋出變更工具
1.版本管理工具(資料庫)
所有的釋出應該以版本管理為起點。研發給的版本包先入版本管理工具,再從版本管理工具分發到現網釋出。杜絕 rsync 一臺伺服器釋出另外一臺的做法。
2.配置管理工具(資料庫)
版本加配置等於現網每臺機器的狀態。最粗粒度的配置管理是到 IP 級別,相當於對機器做資產管理,分組到不同的業務,模組和大區等業務概念上。細粒度一點會管理到行程以及行程的相關配置。
3.配置和版本下發工具
把指定的版本,結合配置好的配置下發到現網的機器上。不同的版本和配置方式需要完全不同的下發方式。以 ssh/fabric 為代表的下發方式是以指令碼為中心的。以 puppet/chef 為代表的下發方式是以配置為中心的。
4.現網狀態同步工具
為了規避現網狀態漂移,與管理工具內的記錄不一致。需要有一個工具定時上報現網的實際狀況。
5.服務排程工具
釋出變更經常需要一個序列的流程,先做A模組,再做B模組。很多機器的時候,需要把能併發的操作併發執行,不能併發的操作確保序列執行。同時很多釋出變更流程需要操作管理範圍外的服務,比如雲端的DNS伺服器記錄等。這就需要有一個服務排程工具統一排程配置和版本下發工具,流程單據工具,以及其他系統的API介面共同組裝成一個流程。
6.資源管理和隔離工具
以xen/kvm為代表的工具讓運維可以更靈活的切割資源。比如虛擬機器的快速起停,ip在idc內的漂移等。以 lxc/docker 為代表的工具讓運維可以進一步的切割資源到行程級別。資源隔離代理的細粒度的資源控制可以獲得更好的資源利用率,以及更容易進行可伸縮的資源配置。
7.釋出變更統一介面
包裝所有的下層工具,提供簡單的介面完成標準化的釋出變更操作。
第三類:運維監控告警工具
1.採集工具
一般是採集日誌檔案,也可以是定時輪詢 DB 或者其他系統的介面。流行的開源方案是 logstash。
2.收集工具
採集工具上報給收集工具。或者由開發直接修改程式碼上報指標給收集工具。流程的開源方案還是 logstash。
3.統計入庫工具
上報可能是每次呼叫就上報一次,統計工具負責統計出一分鐘內的次數。上報也可能是每5秒上報一次數值,統計工具負責統計出一分鐘內的最大值。統計工具的存在是為了上報的方便。流行的開源方案是 statsd,也有大公司基於 storm 來做二次開發的。
4.時間序列資料庫
所有定時指標會落地到資料庫裡。監控告警所需要的資料庫需要能夠支撐非常大的資料量,但是並沒有很嚴格的 ACID 要求。
5.運維事件資料庫
記錄所有的告警。包括從其他系統獲得告警,以及對現網的所有變更操作記錄。這些資料用於支撐告警的原因定位。
6.指標異常檢測工具
基於數學模型發現指標是否與過去的穩定樣式背離,而推測出現網狀態的變化。
7.撥測工具
定時 PING 或者 HTTP GET,模擬實際使用者發現服務是否中斷,產生告警。同時也產生指標上報給收集系統。撥測又分為本地撥測,和遠端撥測。本地撥測可以用於發現磁碟只讀等本機告警。遠端撥測可以模擬使用者的地理分佈,把網路的鏈路狀況也包含在撥測改寫的範圍內。
8.告警收斂工具
綜合所有來源的告警,進行頻率收斂,根源分析。統一彙總成報告催促人工修複。
9.告警自動修複工具
接受告警進行自動化的處理。幫運維完成固定的故障機下架退庫等操作。或者在業務本身沒有做高可用的情況下,做故障機替換,ip漂移等現網修複操作,一定程度地提高業務可用性。
10.告警通知工具
重要的告警需要升級為電話。需要有高可用的電話,簡訊,微信等通知介面。
11.監控告警統一介面
遮蔽下層各種工具,提供統一的agent安裝,指標採集設定,指標曲線展示,告警查詢的介面。一個地方知道現網的所有的問題。
優秀運維經理的能力
1、系統架構的設計和規劃能力。做為一個技術工程師,你關註更多的是具體的技術和問題分析、故障處理等細節,而做為一名運維經理,則需要你站在全域性的高度,把控各環節的應用來規劃和設計系統架構,以實現高效穩定的IT系統。
2、量化和問題管理的能力。熟悉ITIL以及相關運維工具,透過運維管理工具,跟蹤事件的流程,實現整個IT系統的統一與協調;透過運維管理工具,幫助運維人員監控和定位問題根源;透過知識庫的積累可以有效解決人員變更後的管理問題。可以說,IT系統不僅僅需要人的運維,為了發揮IT系統的最大作用,利用工具來量化、標準化管理更是有必要的。我們可以運用自動化的一些工具來採集輸出更為全面的監控預警資訊,化被動運維為主動運維;透過自動化的運維工具把多點的管理集中減少到一點都能更好的簡化運維工作量和提高運維的效率。標準的流程清晰明確了,這樣當問題出現時,就不會出現A部門找B部門反饋,B部門又找C部門處理,C可能說是D部門的問題,這樣導致很簡單的問題無法得到及時有效的處理,影響的不僅僅是業務本身,部門之間也會怨聲載道。
3、管理團隊和協調能力。大多數時候,運維人員都在進行著簡單重覆的工作,且很難得到終端使用者的肯定。曾有一個詞“窮忙族”形容運維工程師,工位上不見人影,一坐下電話不斷,是不是你該解決的問題都有人來找你。這樣的場景,大家應該都有體會。標準化流程的制定非常重要,不僅方便問題的梳理而且能讓對應的問題找到對應的人,這對運維是很重要的,同時有利於團隊的協作。作為運維經理還要關心團隊中的每一個成員,協調每名工程師的工作時間和CASE,合理安排工作任務。另外肯定每個工程師的付出,對他們優秀完成的工作給予積極肯定和表揚,這些都有助於凝聚人心和培養團隊的榮譽感。
4、資產管理與審計能力。準確瞭解公司現有的IT資產和裝置,對裝置進行清查,明確每一個裝置的損耗和維保資訊。當公司需要購置新機時,都會有明確的資料來支撐你的採購申請。當裝置出故障或發生變更時,透過前期的資料都可以做到實時掌握第一手準確資料。而且隨著公司的業務發展,分支機構和員工的增多,資產管理與審計都會變得更重要,對IT運維支援的意義就更大了。
5、組建運維梯隊,合理搭配運維資源的能力。人員管理問題,在運維當中是比較重要的。很多時候由於運維工作分配不合理,業績無法準確考核。若將運維人員分成一、二、三線支援,不同運維人員各司其職,就能使有限的運維力量得到合理利用,整體工作效率將明顯提升;同時也方便對各自的工作業績進行評估。再據此制定相應獎懲措施,或針對不同崗位提供不同服務技能培訓,亦能提高員工工作積極性。比如:將所有IT問題統一彙總到技術服務臺,對於絕大多數(80%以上)問題,服務臺可直接解決;服務臺解決不了的,再按照問題處理優先順序,統一分配不同級的運維力量,來確保不同問題的處理,同時運維人員也不會錯過需要及時處理的重大問題。
6、技術創新與積累能力。運維經理本身需要有過硬的技術能力,需要熟悉各種裝置、不同的作業系統、各環節應用、資料庫、儲存、備份與災難恢復、調優、安全等。但是在具體的問題和重大的問題處理上,需要聽取團隊的意見,這樣方案會因大家的補充和建議更加完善。多數時候在具體的細節處理上還會有技術創新,同時對大家都是一個學習和積累。對每個處理過的重大問題和典型問題編寫技術檔案,日積月累形成知識庫,不僅方便自己總結學習也方便技術的傳承和積累。
7、開會與分享能力。開會有時是個很好的溝通方式,也許很多時候你可能比較反感開會。那可能是因為它的 形式化、一言堂或跑題、不能解決實際問題。其實開會的作用在於:
歸一化:讓大家在專案、任務、工作的理解、反饋、描述、執行等層面達到一致性。減少內部溝通成本,提高團隊效率。
視覺化:追求專案的視覺化是專案管理的最高境界。逐層分解下來,就要求各級管理者對專案、任務的進度、風險、問題做到一目瞭然的管理。
專案管理:透過對團隊各維度進行管理、專案管控,人員工作安排,團隊學習提升,工作方向調整等等。
理念貫徹和方向:貫徹公司文化和團隊文化,統一大家的思路和樣式。傳達上面領導的指示和部署,同時明確下一步工作重點和方向。
具體問題解決:針對疑難點,進行指導或頭腦風暴,集思廣益群策群力。
最後,說一點如何成為優秀的運維經理。什麼是優秀的運維經理,是不是具備了以上七大能力就是優秀呢,很多人心中或許有不同的定義,我認為優秀的管理者所需要具備的一大品質,就是帶領自己的團隊不斷進取和擁有永不止步的精神。
看一看,這麼多能力你還差什麼?
●本文編號454,以後想閱讀這篇文章直接輸入454即可
●輸入m獲取到文章目錄
運維
更多推薦《18個技術類公眾微信》
涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。