高級(jí)運(yùn)維工程師需要掌握的技能
高級(jí)
主要工作
億級(jí)網(wǎng)站架構(gòu)設(shè)計(jì)
性能優(yōu)化
容器化落地
大規(guī)模自動(dòng)化運(yùn)維
平臺(tái)化工作
1、Web靜態(tài)緩存
用戶老喊著訪問網(wǎng)站慢,看看服務(wù)器資源還很富裕??!網(wǎng)站訪問慢也許不是服務(wù)器資源飽和導(dǎo)致的,影響因素很
多,例如網(wǎng)絡(luò)、轉(zhuǎn)發(fā)層數(shù)等。 對(duì)于網(wǎng)絡(luò),存在南北通信問題,之間訪問會(huì)慢,這個(gè)可以使用CDN解決,同時(shí)緩存
靜態(tài)頁面,盡可能將請(qǐng)求攔截在最上層響應(yīng),減少后端請(qǐng)求和響應(yīng)時(shí)間。 如果不用CDN,也可以使用Squid、
Varnish、Nginx這樣的緩存服務(wù)實(shí)現(xiàn)靜態(tài)頁面緩存,放到流量入口處。
2、集群
單臺(tái)服務(wù)器終究資源有限,抵抗高訪問量肯定是無法支撐的,解決此問題最關(guān)鍵的技術(shù)就是采用負(fù)載均衡器,水平
擴(kuò)展多臺(tái)Web服務(wù)器,同時(shí)對(duì)外提供服務(wù),這樣就成倍擴(kuò)展性能了。負(fù)載均衡器主流開源技術(shù)有LVS、HAProxy和
Nginx。一定要熟悉一兩個(gè)! Web服務(wù)器性能瓶頸解決了,數(shù)據(jù)庫更為關(guān)鍵,還是采用集群,就拿MySQL來說,
可以一主多從架構(gòu),在此基礎(chǔ)上讀寫分離,主負(fù)責(zé)寫,多從負(fù)責(zé)讀,從庫可水平擴(kuò)展,前面再來個(gè)四層負(fù)載均衡
器,承載千萬級(jí)PV,妥妥的! 高可用軟件也得會(huì),避免單點(diǎn)的利器,主流的有Keepalived、Heartbeat等。
隨著業(yè)務(wù)擴(kuò)展,網(wǎng)站圖片越來越多!NFS共享存儲(chǔ)支撐不過了,處理很慢!上分布式文件系統(tǒng),并行處理任務(wù),無
單點(diǎn),高可靠,高性能等特性,主流的有FastDFS、MFS、HDFS、Ceph、GFS等。初期的話我建議學(xué)習(xí)下
FastDFS,能滿足中小規(guī)模需求。
3、容器化
硬件服務(wù)器資源利用率很低,甚是浪費(fèi)!可以把空閑多的服務(wù)器虛擬化,弄成很多個(gè)的虛擬機(jī),每個(gè)虛擬機(jī)就是一
個(gè)完整的操作系統(tǒng)。可以很大程度提高資源利用率。主流私有云平臺(tái)實(shí)現(xiàn):KVM+OpenStack 虛擬機(jī)作為基礎(chǔ)平臺(tái)
還可以,但應(yīng)用業(yè)務(wù)彈性伸縮也太重量了吧!啟動(dòng)好幾分鐘,文件又這么大,快速擴(kuò)展太費(fèi)勁了! 好說,上容器,
容器主要特點(diǎn)就是快速部署和環(huán)境隔離。一個(gè)服務(wù)封裝到鏡像中,分分鐘鐘可創(chuàng)建幾百個(gè)容器。 主流的容器技術(shù)非
Docker莫屬了。 當(dāng)然,生產(chǎn)環(huán)境單機(jī)Docker大多數(shù)情況下是無法滿足業(yè)務(wù)需求的,可以基于Kubernetes構(gòu)建容器
平臺(tái),集群化管理容器,形成一個(gè)大的資源池,為基礎(chǔ)架構(gòu)提供有力的支撐。
4、自動(dòng)化運(yùn)維
反反復(fù)復(fù)重復(fù)的工作,不但提高不了效率,價(jià)值也得不到體現(xiàn)。 一切運(yùn)維工作標(biāo)準(zhǔn)化,例如環(huán)境版本、目錄結(jié)構(gòu)、
操作系統(tǒng)等統(tǒng)一。在標(biāo)準(zhǔn)化基礎(chǔ)上才能更方面的自動(dòng)化,點(diǎn)點(diǎn)鼠標(biāo)或者敲幾個(gè)命令即可完成一項(xiàng)復(fù)雜的工作任務(wù),
爽哉爽哉! 因此,所有的操作盡可能自動(dòng)化,減少人為失誤,提高工作效率。 主流服務(wù)器集中管理工具:
Ansible、Saltstack 持續(xù)集成工具:Jenkins、Gitlab
5、Python開發(fā)進(jìn)階
可以再深入學(xué)習(xí)下Python開發(fā),掌握面向?qū)ο缶幊獭?最好也掌學(xué)習(xí)一個(gè)Web框架開發(fā)網(wǎng)站,例如Django、Flask,
主要是開發(fā)運(yùn)維管理系統(tǒng),將一些復(fù)雜的流程寫到平臺(tái)中,再集成集中管理工具,可打造一個(gè)屬于運(yùn)維自己的管理
平臺(tái)。
7、性能優(yōu)化
只會(huì)部署是遠(yuǎn)遠(yuǎn)不夠的,性能優(yōu)化能最大化提升服務(wù)承載量。 這塊也是比較難的,也是高薪的關(guān)鍵點(diǎn)之一,為了錢
也得下點(diǎn)功夫?qū)W習(xí)??! 可以從硬件層、操作系統(tǒng)層、軟件層和架構(gòu)層維度展開思考。
小結(jié)
武器類型武器名稱
文本處理grep、sed、awk
數(shù)據(jù)傳輸Rsync、Scp、Inodify/Sersync
進(jìn)程管理Supervisor
性能分析top、free、df、iftop、iostat、vmstat、dstat、sar、sysdig
網(wǎng)絡(luò)服務(wù)vsftp、nfs、samba、bind、dhcp、postfix
Web服務(wù)Apache、Nginx、Tomcat、JBoss、Resin
數(shù)據(jù)庫MySQL、MariaDB、PostgreSQL,Oracle
NoSQL Redis、MongoDB
消息中間件RabbitMQ、ActiveMQ
版本管理SVN、Git
靜態(tài)緩存Squid、Varnish、Nginx
負(fù)載均衡LVS、HAProxy、Nginx
高可用軟件Keepalived、Heartbeat、DRBD、corosync+pacemaker
集中管理工具Ansible、Saltstack、Chef、Puppet
虛擬化KVM、Xen、Openstack、Cloudstack
容器化Docker、Kubernetes、Rancher、Openshift
自動(dòng)裝機(jī)Kickstart、Cobbler
抓包分析Tcpdump、Wireshark
持續(xù)集成Jenkins、Gitlab
MySQL代理Altas、Cobar、Mycat
壓測(cè)ab、fio、sysbench、mysqlslap、Jemter
日志系統(tǒng)ELK Stack、Graylog
監(jiān)控Zabbix、Prometheus、Open-falcon
分布式文件系統(tǒng)Ceph、GlusterFS、FastDFS