{eval=Array;=+count(Array);}
學(xué)習比較簡單,這也是很有學(xué)習前途的。
Linux在現(xiàn)在市場上是非?;鸬?,有百分之八十五的公司都在使用Linux系統(tǒng),前景非常不錯,而且Linux算是IT行業(yè)之中的入門技術(shù),對于零基礎(chǔ)小白或者轉(zhuǎn)型者都是非常友好的,學(xué)習起來相對于比較簡單,薪資待遇非常不錯,發(fā)展方向也是非常廣闊的。
Linux因其高效率、易于裁剪、應(yīng)用廣等優(yōu)勢,成為了當今中高端服務(wù)器的主要操作系統(tǒng),并且處于一個不可替代的地位。Linux可安裝在各種計算機硬件設(shè)備中,比如手機、平板電腦、路由器、視頻游戲控制臺、臺式計算機、大型機和超級計算機。隨著Linux在中國市場迅猛發(fā)展,國內(nèi)Linux人才缺口逐漸凸顯。Linux人才招聘也成了當前最熱門的招聘之一。
首先linux是一個非常非常大的概念。想全部吃透是不可能的。理想的說,搞懂linux,就可以做所有工作。個人更傾向于說想做什么樣工作,需要學(xué)linux的哪部分。
按個人經(jīng)驗介紹下常見的linux有哪些領(lǐng)域,并對應(yīng)到什么工作。
1)linux應(yīng)用。這部分嚴格來說不能算是linux,只是跑在linux上的應(yīng)用,比如web,網(wǎng)絡(luò),IT等,職業(yè)包括系統(tǒng)研發(fā),后臺開發(fā),服務(wù)器性能優(yōu)化,運維等;
2)linux定制。這部分涉及l(fā)inux版本的用戶包較多,內(nèi)核會有一些涉及,主要各種商業(yè)linux的訂制,服務(wù)等。比如redhat之類,不少是外國公司,國內(nèi)大多招現(xiàn)場支持等。
3)linux內(nèi)核開發(fā)。這部分主要是linux內(nèi)核驅(qū)動的開發(fā)。幾乎全部是編程工作。主要是芯片公司,以及使用芯片的產(chǎn)品開發(fā)公司。前者如intel,marvell,后者如中興ucloud。
4)android衍生品。因為android包括慢慢火爆的tizen都用的linux內(nèi)核,所以理由同3。所以手機芯片公司和手機開發(fā)公司也是linux開發(fā)者的雇主之一。比如高通,TI等;
一、Linux運維的主要工作內(nèi)容
Linux運維作為眾多工作中需求人數(shù)最多,薪資待遇最高的崗位,本文重點介紹Linux運維的職業(yè),本文內(nèi)容由專門研究Linux運維學(xué)習和職業(yè)發(fā)展的機構(gòu)馬哥教育和愛好者們聯(lián)合撰寫。
互聯(lián)網(wǎng)Linux運維工作,以服務(wù)為中心,以穩(wěn)定、安全、高效為三個基本點,確保公司的互聯(lián)網(wǎng)業(yè)務(wù)能夠7×24小時為用戶提供高質(zhì)量的服務(wù)。運維的職責覆蓋了產(chǎn)品從設(shè)計到發(fā)布、運行維護、變更升級及至下線的生命周期。
產(chǎn)品的整個生命周期里運維的職責重要而廣泛,但運維工程師們的職責不僅限于這部分工作,還需要總結(jié)工作中遇到的問題,抽取出相關(guān)的技術(shù)方向、研發(fā)相關(guān)的工具和平臺以支持/優(yōu)化業(yè)務(wù)的發(fā)展并提高運維的效率,相關(guān)技術(shù)工作主要包括:
服務(wù)監(jiān)控技術(shù):包括監(jiān)控平臺的研發(fā)、應(yīng)用,服務(wù)監(jiān)控準確性、實時性、全面性的保障
服務(wù)故障管理:包括服務(wù)的故障預(yù)案設(shè)計,預(yù)案的自動化執(zhí)行,故障的總結(jié)并反饋到產(chǎn)品/系統(tǒng)的設(shè)計層面進行優(yōu)化以提高產(chǎn)品的穩(wěn)定性
服務(wù)容量管理:測量服務(wù)的容量,規(guī)劃服務(wù)的機房建設(shè),擴容、遷移等工作
服務(wù)性能優(yōu)化:從各個方向,包括網(wǎng)絡(luò)優(yōu)化、操作系統(tǒng)優(yōu)化、應(yīng)用優(yōu)化、客戶端優(yōu)化等,提高服務(wù)的性能和響應(yīng)速度,改善用戶體驗
服務(wù)全局流量調(diào)度:接入服務(wù)的流量,根據(jù)容量和服務(wù)狀態(tài)在各個機房間分配流量
服務(wù)任務(wù)調(diào)度:服務(wù)的各種定時/非定時任務(wù)的調(diào)度觸發(fā)及狀態(tài)監(jiān)控
服務(wù)安全保障:包括服務(wù)的訪問安全、防攻擊、權(quán)限控制等
數(shù)據(jù)傳輸技術(shù):包括p2p等各類傳輸技術(shù)的研發(fā)應(yīng)用,也遠距離大數(shù)據(jù)傳輸?shù)葐栴}的解決
服務(wù)自動發(fā)布部署:部署平臺/工具的研發(fā),及平臺/工具的使用,做到安全、高效的發(fā)布服務(wù)
服務(wù)集群管理:包括服務(wù)的服務(wù)器管理、大規(guī)模集群管理等
服務(wù)成本優(yōu)化:盡可能降低服務(wù)運行使用的資源,降低服務(wù)運行成本
數(shù)據(jù)庫管理(DBA):通過設(shè)計、開發(fā)和管理高性能數(shù)據(jù)庫集群,使數(shù)據(jù)庫服務(wù)更穩(wěn)定、更高效、更易于管理。
平臺化的開發(fā):類docker等平臺的開發(fā)管理,及服務(wù)接入技術(shù)
分布式存儲平臺的開發(fā)優(yōu)化與接入
等等,凡是關(guān)系到服務(wù)質(zhì)量、效率、成本、安全等方面的工作,及涉及到的技術(shù)、組件、工具、平臺都在運維的技術(shù)范疇里。做好每一個技術(shù)方向、完成相應(yīng)的組件、工具、平臺研發(fā)都能對履行運維職責起到積極的作用,對業(yè)務(wù)的發(fā)展發(fā)揮關(guān)鍵影響。
二、Linux運維工作分類
運維的工作方向比較多,隨著業(yè)務(wù)規(guī)模的不斷發(fā)展,越成熟的互聯(lián)網(wǎng)公司,運維崗位會劃分得越細。當前很多大型的互聯(lián)網(wǎng)公司,在初創(chuàng)時期只有系統(tǒng)運維,隨著 模、服務(wù)質(zhì)量的 要求,也逐漸進行了工作細分。一般情況下運維團隊的工作分類。
2.1-應(yīng)用運維(SRE):應(yīng)用運維負責線上服務(wù)的變更、服務(wù)狀態(tài)監(jiān)控、服務(wù)容災(zāi)和數(shù)據(jù)備份等工作,對服務(wù)進行例行排查、故障應(yīng)急處理等工作,工作職責如下:設(shè)計評審、服務(wù)管理、資源管理、例行檢查、預(yù)案管理、數(shù)據(jù)備份。
2.2-系統(tǒng)運維(SYS):負責IDC、網(wǎng)絡(luò)、CDN和基礎(chǔ)服務(wù)的建設(shè)(LVS、NTP、DNS);負責資產(chǎn)管理,服務(wù)器選型、交付和維修,工作職責如下:IDC數(shù)據(jù)中心建設(shè)、網(wǎng)絡(luò)建設(shè)、LVS負載均衡和SNAT建設(shè)、CDN規(guī)劃和建設(shè)、服務(wù)器選型、交付和維護、內(nèi)核選型和OS相關(guān)維護工作、資產(chǎn)管理、基礎(chǔ)服務(wù)建設(shè)。
2.3-數(shù)據(jù)庫運維(DBA):數(shù)據(jù)庫運維負責數(shù)據(jù)存儲方案設(shè)計、數(shù)據(jù)庫表設(shè)計、索引設(shè)計和SQL優(yōu)化,對數(shù)據(jù)庫進行變更、監(jiān)控、備份、高可用設(shè)計等工作,詳細的工作內(nèi)容如下:設(shè)計評審、容量規(guī)劃、數(shù)據(jù)備份與災(zāi)備、數(shù)據(jù)庫監(jiān)控、數(shù)據(jù)庫安全、數(shù)據(jù)庫高可用和性能優(yōu)化、自動化系統(tǒng)建設(shè)、運維研發(fā)、運維平臺、監(jiān)控系統(tǒng)、自動化部署系統(tǒng)。
2.4-運維安全(SEC):運維安全負責網(wǎng)絡(luò)、系統(tǒng)和業(yè)務(wù)等方面的安全加固工作,進行常規(guī)的安全掃描、滲透測試,進行安全工具和系統(tǒng)研發(fā)以及安全事件應(yīng)急處理,工作內(nèi)容如下:安全制度建立、安全培訓(xùn)、風險評估、安全建設(shè)、安全合規(guī)、應(yīng)急響應(yīng)。
三、Linux運維日常使用軟件和技能
運維工程師使用的運維平臺和工具包括:
Web服務(wù)器:apache、tomcat、nginx、lighttpd
監(jiān)控:nagios、ganglia、cacti、zabbix
自動部署:ansible、sshpt、salt
配置管理:puppet、cfengine
負載均衡:lvs、haproxy、nginx
傳輸工具:scribe、flume
備份工具:rsync、wget
數(shù)據(jù)庫:mysql、oracle、sqlserver
分布式平臺:hdfs、mapreduce、spark、storm、hive
分布式數(shù)據(jù)庫:hbase、cassandra、redis、MongoDB
容器:lxc、docker
虛擬化:openstack、xen、kvm
安全:kerberos、selinux、acl、iptables
問題追查:netstat、top、tcpdump、last
運維以技術(shù)為基礎(chǔ),通過技術(shù)保障產(chǎn)品提供更高質(zhì)量的服務(wù)。運維工作的職責及在業(yè)務(wù)中的位置決定了運維工程師需要具備更加廣博的知識和深入的技術(shù)能力:
扎實的計算機基礎(chǔ)知識,包括計算機系統(tǒng)架構(gòu),操作系統(tǒng),網(wǎng)絡(luò)技術(shù)等;
通用應(yīng)用方面需要了解操作系統(tǒng)、網(wǎng)絡(luò)、安全,存儲,CDN,DB等,知道其相關(guān)原理;
編程能力,小到運維工具的開發(fā)大到大型運維系統(tǒng)/平臺的開發(fā)都需要有良好的編程能力;
數(shù)據(jù)分析能力:能夠整理、分析系統(tǒng)運行的各項數(shù)據(jù),從中發(fā)現(xiàn)問題及找到解決方向;
豐富的系統(tǒng)知識,包括系統(tǒng)工具、典型系統(tǒng)架構(gòu)、常見的平臺選型等;
綜合利用工具和平臺的能力;
早期的運維團隊在人員較少的情況下,主要是進行數(shù)據(jù)中心建設(shè)、基礎(chǔ)網(wǎng)絡(luò)建設(shè)、服務(wù)器采購和服務(wù)器安裝交付工作。幾乎很少涉及線上服務(wù)的變更、監(jiān)控、管理等工作。這個時候的運維團隊更多的屬于基礎(chǔ)建設(shè)的角色,提供一個簡單、可用的網(wǎng)絡(luò)環(huán)境和系統(tǒng)環(huán)境即可。
隨著業(yè)務(wù)產(chǎn)品的逐漸成熟,對于服務(wù)質(zhì)量方面就有了更高的要求。這個時候的運維團隊還會承擔一些服務(wù)器監(jiān)控的工作,同時會負責LVS、Nginx等與業(yè)務(wù)邏輯無關(guān)的4/7層運維工作。這個時候服務(wù)變更更多的是逐臺的手工操作,或者有一些簡單批量腳本的出現(xiàn)。監(jiān)控的焦點更多的在服務(wù)器狀態(tài)和資源使用情況上,對服務(wù)應(yīng)用狀態(tài)的監(jiān)控幾乎很少,監(jiān)控更多的使用各種開源系統(tǒng)如Nagios、Cacti等。
由于業(yè)務(wù)規(guī)模和復(fù)雜度的持續(xù)增加,運維團隊會逐漸劃分為應(yīng)用運維和系統(tǒng)運維兩大塊。應(yīng)用運維開始接手線上業(yè)務(wù),逐步開展服務(wù)監(jiān)控梳理、數(shù)據(jù)備份以及服務(wù)變更的工作。隨著對服務(wù)的深入,應(yīng)用運維工程師有能力開始對服務(wù)進行一些簡單的優(yōu)化。同時,為了應(yīng)對每天大量的服務(wù)變更,我們也開始編寫各類運維工具,針對某些特定的服務(wù)能夠很方便的批量變更。隨著業(yè)務(wù)規(guī)模的增大,基礎(chǔ)設(shè)施由于容量規(guī)劃不足或抵御風險能力較弱導(dǎo)致的故障也越來越多,迫使運維人員開始將更多的精力投入到多數(shù)據(jù)中心容災(zāi)、預(yù)案管理的方向上。
業(yè)務(wù)規(guī)模達到一定程度后,開源的監(jiān)控系統(tǒng)在性能和功能方面,已經(jīng)無法滿足業(yè)務(wù)需求;大量的服務(wù)變更、復(fù)雜的服務(wù)關(guān)系,以前靠人工記錄、工具變更的方式不管在效率還是準確性方面也都無法滿足業(yè)務(wù)需求;在安全方面也出現(xiàn)了各種大大小小的事件,迫使我們投入更多的精力在安全防御上。逐漸的,運維團隊形成之前提到的5個大的工作分類,每個分類都需要有專精的人才。這個時候系統(tǒng)運維更專注于基礎(chǔ)設(shè)施的建設(shè)和運維,提供穩(wěn)定、高效的網(wǎng)絡(luò)環(huán)境,交付服務(wù)器等資源給應(yīng)用運維工程師。應(yīng)用運維更專注于服務(wù)運行狀態(tài)和效率。數(shù)據(jù)庫運維屬于應(yīng)用運維工作的細化,更專注于數(shù)據(jù)庫領(lǐng)域的自動化、性能優(yōu)化和安全防御。運維研發(fā)和運維安全提供各類平臺、工具,進一步提升運維工程師的工作效率,使業(yè)務(wù)服務(wù)運行得更加穩(wěn)定、高效和安全。
我們將運維發(fā)展過程劃分為4個階段。
手工管理階段:業(yè)務(wù)流量不大,服務(wù)器數(shù)量相對較少,系統(tǒng)復(fù)雜度不高。對于日常的業(yè)務(wù)管理操作,大家更多的是逐臺登錄服務(wù)器進行手工操作,屬于各自為戰(zhàn),每個人都有自己的操作方式,缺少必要的操作標準、流程機制,比如業(yè)務(wù)目錄環(huán)境都是各式各樣的。
工具批量操作階段:隨著服務(wù)器規(guī)模、系統(tǒng)復(fù)雜度的增加,全人工的操作方式已經(jīng)不能滿足業(yè)務(wù)的快速發(fā)展需要。因此,運維人員逐漸開始使用批量化的操作工具,針對不同操作類型出現(xiàn)了不同的腳本程序。但各團隊都有自己的工具,每次操作需求發(fā)生變化時都需要調(diào)整工具。這主要是因為對于環(huán)境、操作的規(guī)范不夠,導(dǎo)致可程序化處理能力較弱。此時,雖然效率提升了一部分,但很快又遇到了瓶頸。操作的質(zhì)量并沒有太多的提升,甚至可能因為批量執(zhí)行而導(dǎo)致更大規(guī)模的問題出現(xiàn)。我們開始建立大量的流程規(guī)范,比如復(fù)查機制,先上線一臺服務(wù)器觀察10分鐘后再繼續(xù)后面的操作,一次升級完成后至少要觀察20分鐘等。這些主要還是靠人來監(jiān)督和執(zhí)行,但在實際過程中執(zhí)行往往不到位,反而降低了工作效率。
平臺管理階段:在這個階段,對于運維效率和誤操作率有了更高的要求,我們決定開始建設(shè)運維平臺,通過平臺承載標準、流程,進而解放人力和提高質(zhì)量。這個時候?qū)Ψ?wù)的變更動作進行了抽象,形成了操作方法、服務(wù)目錄環(huán)境、服務(wù)運行方式等統(tǒng)一的標準,如程序的啟停接口必須包括啟動、停止、重載等。通過平臺來約束操作流程,如上面提到的上線一臺服務(wù)器觀察10分鐘。在平臺中強制設(shè)定暫停檢查點,在第一臺服務(wù)器操作完成后,需要運維人員填寫相應(yīng)的檢查項,然后才可以繼續(xù)執(zhí)行后續(xù)的部署動作。
系統(tǒng)自調(diào)度階段:更大規(guī)模的服務(wù)數(shù)量、更復(fù)雜的服務(wù)關(guān)聯(lián)關(guān)系、各個運維平臺的林立,原有的將批量操作轉(zhuǎn)化成平臺操作的方式已經(jīng)不再適合,需要對服務(wù)變更進行更高一層的抽象。將每一臺服務(wù)器抽象成一個容器,由調(diào)度系統(tǒng)根據(jù)資源使用情況,將服務(wù)調(diào)度、部署到合適的服務(wù)器上,自動化完成與周邊各個運維系統(tǒng)的聯(lián)動,比如監(jiān)控系統(tǒng)、日志系統(tǒng)、備份系統(tǒng)等。通過自調(diào)度系統(tǒng),根據(jù)服務(wù)運行情況動態(tài)伸縮容量,能夠自動化處理常見的服務(wù)故障。運維人員的工作也會前置到產(chǎn)品設(shè)計階段,協(xié)助研發(fā)人員改造服務(wù)使其可以接入到自調(diào)度系統(tǒng)中。
在整個運維的發(fā)展過程中,希望所有的工作都自動化起來,減少人的重復(fù)工作,降低知識傳遞的成本,使我們的運維交付更高效、更安全,使產(chǎn)品運行更穩(wěn)定。對于故障的處理,也希望由事后處理變成提前發(fā)現(xiàn),由人工處理變成系統(tǒng)自動容災(zāi)。
五、2019年Linux運維必須抓住的前沿技能
這是技術(shù)世界正在發(fā)生的深刻變革的冰山一角,那么問題來了? 作為傳統(tǒng)的運維該如何轉(zhuǎn)型呢?
這里給出一點小的建議: 大致需要學(xué)習下這四個部分:
自動化運維(Ansible,Puppet,Saltstack等)
Devops(Docker,K8s,Jenkins,Jira等),
云服務(wù)技術(shù)(虛擬化、OpenStack、AWS及ucloud云各種產(chǎn)品服務(wù)架構(gòu)等)
python
Linux剛開始入門不太好學(xué),等你入了門后面就輕松不少了。
剛開始學(xué)Linux你要記憶很多基本的命令,并且因為剛開始學(xué)不太熟悉,敲得時候會經(jīng)常敲錯,有時候鍵盤按不對還容易無法退出諸如文本編輯器之類的東西,是比較考驗?zāi)托牡摹?/p>
所以剛開始學(xué)習一定要腳踏實地,不要急躁,慢慢來,建議先以讀書的方式了解Linux的基本知識(Linux是什么、文件結(jié)構(gòu)、與Windows的不同、Linux常見分支、Linux的歷史等)以后再上機一個一個對著敲,會更快一些。
學(xué)的差不多了可以本地裝個Linux虛擬機實操一下,部署個NGINX、搭建個web網(wǎng)站試試,多練多總結(jié)才能收獲更多。
命令記不住就多看多記,沒有捷徑,只有多多練習和試錯你才能掌握的更扎實。
Linux研究到很深了,已經(jīng)成為大佬了,那你就可以做驅(qū)動開發(fā)、內(nèi)核編寫,甚至可以和國外的一些大佬加入Linux操作系統(tǒng)組件的開發(fā)大軍中,那簡直是厲害到家了。當然Linux的方向還有很多,軟件開發(fā)、硬件開發(fā)、嵌入式、大數(shù)據(jù)、人工智能、網(wǎng)絡(luò)、安防等等都會有Linux的身影,前途很廣闊,就看你的興趣和你選擇的方向了。
我是軟件開發(fā)人員,linux好不好學(xué),我們可以考慮兩種情況,一種是無界面的純命令行模式的linux,一種是有用戶界面的類似于window模式。第一種使用命令行操作,需要熟悉各種命令,第二種相對簡單,可以鼠標操作。但不管哪一種,建議都可學(xué)會并熟記常用命令。
學(xué)習linux是一種樂趣
要說這兩個系統(tǒng)的區(qū)別,可能會有以下幾點,
1、免費與收費
windows需要收費,linux是免費的。
2、安全性及穩(wěn)定性
linux相對windows來說安全性更高系統(tǒng)運行也更穩(wěn)定。
3、開源
開源就是指對外部開放軟件源代碼。linux開源,而Windows并不開源。
4、受眾面,Linux在企業(yè)中作為服務(wù)器使用還是挺多的,但個人使用的較少,Windows不管是個人還是企業(yè)都有大量的用戶。
5、軟件與支持
Windows下可以運行絕大部分軟件、硬件廠商近乎100%的支持。linux下可直接運行的軟件數(shù)量和win下比起來就要少的很多,同時linux正期待更多硬件廠商的支持。
至于這兩個系統(tǒng)好不好學(xué)習,要看你是從事那一方面,如果只是簡單使用,當然Windows還是要方便一些,雖然Linux也出了可視化的操作界面,但windows的使用習慣,是長期養(yǎng)成的。
當然如果你的學(xué)習是為了后續(xù)從事開發(fā)或其他方面,坦白講沒有那個是一定好學(xué)的,畢竟這兩個系統(tǒng)的內(nèi)核還是有區(qū)別的,windows操作系統(tǒng)內(nèi)核是NT,而linux 是 shell。
在學(xué)習之前你可以從網(wǎng)上先找一些資料參考,根據(jù)自己的實際情況在做決定學(xué)習那個系統(tǒng)。
學(xué)習Linux之后你可以從事很多職業(yè),來看一下都有哪些職業(yè):1、Linux嵌入式開發(fā)。這個就是通過移植Linux到硬件平臺上,然后寫一些應(yīng)用程序. 這個相對來說簡單不少,也好入門。2、Linux運維。Linux運維工作很火,一般大公司運維還要懂內(nèi)核以及C編程之類的,但是小公司完全就是打雜的。也用不到多少開發(fā)的知識,如果說開發(fā)是DPS,運維更像是輔助加血什么的,這個可以報個班考個RHCE來入行,工資起點應(yīng)該是最低的吧。3、Linux服務(wù)器開發(fā)。如果是用C/C++之類的話,要求也很高。因為互聯(lián)網(wǎng)行業(yè)才人流動性相對大,所以工資可觀,特別是對優(yōu)化延遲什么的了解很深入的,發(fā)展前景是最好的。這個招聘量較少,但相對內(nèi)核來說多些,專業(yè)知識要求比較全面,并且深入研究還有分布式,并行算法,集群之類的方向.想要發(fā)展的好幾乎CS的基礎(chǔ)科目都要有非常深入的理解。4、Linux內(nèi)核開發(fā)。這里基本都是比較有難度的.像ucloud,小米這種的硬件公司一般有這個職位,工資也是很高的,知識相對單一,但是操作系統(tǒng)底層的硬件更新也比較快. 操作系統(tǒng)理論也很靈活,深入不容易.主要研究的方向可能和職位也比較相關(guān)。5、云運維。實際上也是運維的一種.對硬件的安裝什么的較3來說應(yīng)該比較少.對原理性的東西也要求比較高,我記得前些天還在培訓(xùn)機構(gòu)上看到有紅帽云認證的.可以去考一個.小公司對云還是有需求的.工資應(yīng)該比3高點,具體我也不清楚。6、云平臺開發(fā)?,F(xiàn)在大的云平臺基本都是基于Linux的KVM的.這個也是軟硬兼修的,并且還要求掌握虛擬化技術(shù).公司也少,國內(nèi)主要有百度,ucloud,ucloud,ucloud一些大公司在搞,門檻高,需要的知識也比較多,大公司,自然工資很高。
windows可視化窗口,操作簡單方便,容易學(xué)會。linux字符界面,指令操作,需要一定基礎(chǔ)。linux一般開發(fā)程序、發(fā)布程序、做服務(wù)器使用。
0
回答0
回答0
回答0
回答0
回答3
回答0
回答0
回答0
回答0
回答