「必看」Linux 運維工程師打怪升級篇

作運維就像遊戲打怪升級,升級後知識體系和運維體系也相對變化挺大,學習了不少新的知識點。運維工程師是從一個呆逼進化爲苦逼再成長爲牛逼的過程,前提在於你要能忍能幹能拼,還要具備敏銳的嗅覺感知前方潮流變化。如:今年大數據,人工智能比較火。。。(相對錶示就是 python 比較火)java

拓撲詳見:python

 

中級篇mysql

從我後面面試經歷和麪試別人的經歷。有些人認爲,其實運維就是部署某個軟件,設置些基礎功能,就算會運維了。linux

舉個例子:安裝LAMP,LNMP,就感受部署方法我都掌握了。其實網上大多數都有一鍵安裝腳本啥的根本沒有啥技術含量,在面試官眼裏,這些都不是你的亮點。基本到了公司通常環境架構都是部署好的,不多須要你去變更環境架構。就算你安裝好ios

LNMP 架構你熟悉裏面的原理嗎,熟悉 Nginx 優化嗎,熟悉 MySQL 優化嗎?web

再舉個例子:我面試遇到的問題,面試官問你既然熟悉 LNMP 架構,那麼 Nginx 反向代理的做用。面試

你應該不是說出懂這個軟件和配置,你儘量的說怎麼優化,怎麼深刻提升網站性能。sql

一、使用反向代理能夠理解爲7層應用層的負載均衡,使用負載均衡以後能夠很是便捷的橫向擴展服務器集羣,實現集羣總體併發能力、抗壓能力的提升。shell

二、一般反向代理服務器會帶有本地 Cache 功能,經過靜態資源的 Cache,有效的減小後端服務器所承載的壓力,從而提升性能。後端

下面說說運維在工做中須要掌握的核心技術

注意,這是在工做中掌握的,在學習中很難掌握。

 

一、第一條最主要的排錯

● 分析部分程序不能運行或沒有按預想結果運行的緣由,對程序運行跟蹤,查看系統調用的過程。

● 較深刻的系統瓶頸點分析。

查看剩餘內存:

free -m#-/+ buffers/cache: 6458 1649#6458M爲真實使用內存 1649M爲真實剩餘內存(剩餘內存+緩存+緩衝器)#linux會利用全部的剩餘內存做爲緩存,因此要保證linux運行速度,就須要保證內存的緩存大小

系統信息:

uname -a # 查看Linux內核版本信息cat /proc/version # 查看內核版本cat /etc/issue # 查看系統版本lsb_release -a # 查看系統版本 需安裝 centos-releaselocale -a # 列出全部語系locale # 當前環境變量中全部編碼hwclock # 查看時間who # 當前在線用戶w # 當前在線用戶whoami # 查看當前用戶名logname # 查看初始登錄用戶名uptime # 查看服務器啓動時間sar -n DEV 1 10 # 查看網卡網速流量dmesg # 顯示開機信息lsmod # 查看內核模塊

硬件信息:

more /proc/cpuinfo # 查看cpu信息lscpu # 查看cpu信息cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c # 查看cpu型號和邏輯核心數getconf LONG_BIT # cpu運行的位數cat /proc/cpuinfo | grep 'physical id' |sort| uniq -c # 物理cpu個數cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l # 結果大於0支持64位cat /proc/cpuinfo|grep flags # 查看cpu是否支持虛擬化 pae支持半虛擬化 IntelVT 支持全虛擬化more /proc/meminfo # 查看內存信息dmidecode # 查看全面硬件信息dmidecode | grep "Product Name" # 查看服務器型號dmidecode | grep -P -A5 "Memory\s+Device" | grep Size | grep -v Range # 查看內存插槽cat /proc/mdstat # 查看軟raid信息cat /proc/scsi/scsi # 查看Dell硬raid信息(IBM、HP須要官方檢測工具)lspci # 查看硬件信息lspci|grep RAID # 查看是否支持raidlspci -vvv |grep Ethernet # 查看網卡型號lspci -vvv |grep Kernel|grep driver # 查看驅動模塊modinfo tg2 # 查看驅動版本(驅動模塊)ethtool -i em1 # 查看網卡驅動版本ethtool em1

● 使用分析系統分析web日誌。(如逆火軟件,)

● 分析系統性能瓶頸點(IO/memory/cpu,經常使用工具,top命令中shift組合鍵的特殊用Sar/vmstat/iostat/ipcs)

日誌管理經常使用命令:

history # 歷時命令默認1000條HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " # 讓history命令顯示具體時間history -c # 清除記錄命令cat $HOME/.bash_history # 歷史命令記錄文件lastb -a # 列出登陸系統失敗的用戶相關信息 清空二進制日誌記錄文件 echo > /var/log/btmplast # 查看登錄過的用戶信息 清空二進制日誌記錄文件 echo > /var/log/wtmp 默認打開亂碼who /var/log/wtmp # 查看登錄過的用戶信息lastlog # 用戶最後登陸的時間tail -f /var/log/messages # 系統日誌tail -f /var/log/secure # ssh日誌

二、優化

優化能夠說是運維最吃香的技能,基本會優化的運維廣泛工資很高,並且優化是要承擔風險的,並非網上搜個文章改一下配置文件或者參數就叫優化了,這樣很容易形成宕機。

優化是根據實際的現場環境硬件各個參數進行部分優化,提升軟件性能和網站性能。這個我只能講半知半解,當時優化mysql和tomcat參數也是根據網上文章和官網文檔查找參數在虛擬機上測試而後查看性能。

成本優化,性能優化。這裏我給出 tomcat 優化 jvm 參數(作過相應測試才放到現場環境的):(記住無監控不調優)

-標準參數,全部jvm都應該支持

-X 非標,每一個jvm實現都不一樣

-XX 不穩定參數,下一版本可能會取消

serial collector 單線程 序列化

parallel collector 多線程

啓動 jvisualvm.exe 監控 dump 內存溢出

-Xms:初始堆大小

-Xmx:最大堆大小

-Xss:線程棧大小

-XX:NewSize=n:設置年輕代大小

-XX:NewRatio=n:設置年輕代和年老代的比值,如3, 標示年輕代:年老代比值1:3,年輕代佔整個年輕代年老代和的1/4

-XX:SurvivorRatio=n:年輕代中的eden區與2個Survivor區的比值。

-XX:MaxPermSize=n:設置持久代大小

收集器設置

-XX:+UseSerialGC:設置串行收集器

-XX:+UseParallelGC:設置並行收集器

-XX:+UseConcMarkSweepGC:設置併發收集器

回收統計信息

-XX:+PrintGC

-XX:+PrintGCDetails

-Xloggc:filename

 

tocmat 優化 確認有幾個 jvm 虛擬機

set JAVA_OPTS=

-Xms4g

-Xmx4g

-Xss512k

-XX:+AggressiveOpts 進攻型的優化選項,全部優化項都加上

-XX:+UseBiasedLocking 優化鎖,基本都要選上,偏執鎖

-XX:permSize=64m 原始區大小,最大300m 類多就設置大一點

-XX:MaxPermSize=300m

-XX:+DisableExplicitGC //System.gc() 不顯示調用gc

-XX:+UseConcMarkSweepGC 使用cms縮短相應時間,併發收集,低停頓

-XX:+UseParNewGC 並行收集新生代的垃圾

-XX:+CMSParallelRemarkEnabled 在使用UseParNewGC的狀況下,儘可能減小mark的時間

-XX:+UseCMSCompactAtFullCollection 使用併發收集器時,開啓對年老代的壓縮,使碎片減小

-XX:LargePageSizelnBytes=128m 內存分頁大小對性能的提高

-XX:+UseFastAccessorMethods get/set方法轉成本地代碼

-Djava awt headless=true 修復linux下tomcat處理圖標時可能產生的bug

 

tomcat 前任何參數沒參加大概每秒605 調優後大概每秒435 接近3倍的結果

 

三、開發技能

優選 shell 和 python,如今 shell 沒法知足你的需求或者效率很低,那麼選擇自動化 python 是最好的選擇。如今廣泛招聘需求要求,會寫 shell 或者 python,perl 腳本,我的選擇仍是選 python。

python 這門語言上手比較快,容易理解。

python

在服務器管理工具上很是豐富,配置管理(saltstack) 批量執行( fabric, saltstack) 監控(Zenoss,nagios 插件) 虛擬化管理( python-libvirt) 進程管理 (supervisor) 雲計算(openstack)...... 還有大部分系統 C 庫都有 python 綁定。

對於流程肯定的事情,最終必定是歸入系統管理的體系,寫成程序,成爲系統的一部分。而不是沒法複用遊離與總體的各類腳本。

隨着雲計算時代的來臨,中小型公司,不須要運維了。大型公司,沒有工程開發能力的運維,是沒有競爭力的。

最重要的學好 python 能夠漲工資,能夠漲工資,能夠漲工資。(重要的事情說三遍。)

目前本人也是在學 python,正在把之前 shell 腳本的實例轉換成 python 腳本。

四、意識篇

1) 安全意識:

運維人員的權限很大,因此必定要保證賬號/私鑰的安全。

● 最好使用加密工具存儲。好比truecrypt,lpassword

● 基於本地存儲。切勿用網盤,也不建議用lastpass等

● ssh私鑰添加密碼

2) 磨刀意識:

關於任何操做配置,最好先搞明白操做或配置的原理,而後再去操做。應一句話叫作「磨刀不誤砍柴功」,並且對於相似的操做能夠觸類旁通。

3) 計劃意識:

複雜的變動操做好比多臺主機以及牽涉到san存儲,最好先做 操做計劃,寫計劃文檔,詳細緻每條命令,而後請高手幫忙審覈。 這樣能最大程度使整個操做過程安全。若是是重要的客戶業務系統,操做最好有回退方案,而一旦變動失敗,客戶能夠在短期內將業務回退。

4) 記錄分享意識:

遇到本身認爲較特殊的案例時,記得要寫 案例過程及分析的文檔。也方便本身之後翻看,或者和其餘兄弟分享,做知識的傳播以便於你們之後都能少走彎路。

5) 監控意識:

運維來講,監控是很是重要的,監控是發現系統各類異常的眼睛,因此運維應該和監控緊密配合。

6) 業務意識:

儘可能瞭解維護的各主機上業務類型,以及各主機業務之間的關聯性。由於任何維護工做都是爲主機能提供業務服務的,當某業務中斷,能最快的知道與此業務相關的主機羣,從而縮小故障排查範圍,最快定位故障。

附上運維思路拓撲圖:

 

 

三、開發技能

優選 shell 和 python,如今 shell 沒法知足你的需求或者效率很低,那麼選擇自動化 python 是最好的選擇。如今廣泛招聘需求要求,會寫 shell 或者 python,perl 腳本,我的選擇仍是選 python。

python 這門語言上手比較快,容易理解。

python

在服務器管理工具上很是豐富,配置管理(saltstack) 批量執行( fabric, saltstack) 監控(Zenoss,nagios 插件) 虛擬化管理( python-libvirt) 進程管理 (supervisor) 雲計算(openstack)...... 還有大部分系統 C 庫都有 python 綁定。

對於流程肯定的事情,最終必定是歸入系統管理的體系,寫成程序,成爲系統的一部分。而不是沒法複用遊離與總體的各類腳本。

隨着雲計算時代的來臨,中小型公司,不須要運維了。大型公司,沒有工程開發能力的運維,是沒有競爭力的。

最重要的學好 python 能夠漲工資,能夠漲工資,能夠漲工資。(重要的事情說三遍。)

目前本人也是在學 python,正在把之前 shell 腳本的實例轉換成 python 腳本。

四、意識篇

1) 安全意識:

運維人員的權限很大,因此必定要保證賬號/私鑰的安全。

● 最好使用加密工具存儲。好比truecrypt,lpassword

● 基於本地存儲。切勿用網盤,也不建議用lastpass等

● ssh私鑰添加密碼

2) 磨刀意識:

關於任何操做配置,最好先搞明白操做或配置的原理,而後再去操做。應一句話叫作「磨刀不誤砍柴功」,並且對於相似的操做能夠觸類旁通。

3) 計劃意識:

複雜的變動操做好比多臺主機以及牽涉到san存儲,最好先做 操做計劃,寫計劃文檔,詳細緻每條命令,而後請高手幫忙審覈。 這樣能最大程度使整個操做過程安全。若是是重要的客戶業務系統,操做最好有回退方案,而一旦變動失敗,客戶能夠在短期內將業務回退。

4) 記錄分享意識:

遇到本身認爲較特殊的案例時,記得要寫 案例過程及分析的文檔。也方便本身之後翻看,或者和其餘兄弟分享,做知識的傳播以便於你們之後都能少走彎路。

5) 監控意識:

運維來講,監控是很是重要的,監控是發現系統各類異常的眼睛,因此運維應該和監控緊密配合。

6) 業務意識:

儘可能瞭解維護的各主機上業務類型,以及各主機業務之間的關聯性。由於任何維護工做都是爲主機能提供業務服務的,當某業務中斷,能最快的知道與此業務相關的主機羣,從而縮小故障排查範圍,最快定位故障。

附上運維思路拓撲圖:

 

 

意識是很重要,並非你技術很牛,學的技術不少很熟,就不表明你不須要運維意識,其實領導很看重運維意識的,例若有沒有作好備份,權限分配問題,平臺測試狀況,故障響應時間等,這些都是意識,而不是你學了不少技術自認大牛了,平臺發現故障你又沒什麼大不子,覺得很簡單的問題喜歡處理就處理,不須要向其它部門反饋等,領導不是看你的技術如何,而是看你的運維意識如何,你沒運維意識,技術再牛也沒用,只會讓其它部門的人跟你不協調。

 

轉載於:https://mbd.baidu.com/newspage/data/landingshare?pageType=1&isBdboxFrom=1&context=%20%7B%22nid%22%3A%22news_10707237857143559312%22%2C%22sourceFrom%22%3A%22bjh%22%7D

相關文章
相關標籤/搜索