
文章目錄
- Linux運維
-
-
- 什麼是Linux運維
- 運維的職責
- 工作中運維應用的場景是什麼樣的?
-
- 1. Devops傳遞環常識
- 2. 産品釋出前
- 3. 産品釋出過程中
- 4. 産品運作維護
- 5. 産品性能/成本優化
- 6. 産品下線
- 運維工程師使用的運維平台和工具
-
- 運維工程師要掌握的技能
-
Linux運維
什麼是Linux運維
- 運維是指大型組織已經建立好的網絡軟硬體的維護,就是要保證業務的上線與運作的正常
- 在他運轉的過程中,對他進行維護,它集合了網絡、系統、資料庫、開發、安全、監控、應用架構、存儲于一身的技術
- 運維分類
- 運維開發:是給應用運維開發運維工具的運維平台的
- 應用運維:是給業務上線、維護和做故障排除的,用開發運維開發出來的工具給業務上線、維護、做故障排查
- 系統運維:是給應用運維提供業務上的基礎設施,比如:系統、網絡、監控、硬體等等
- 資料庫運維:負責資料存儲方案設計、資料庫表設計、索引設計和SQL優化
- 安全運維:進行正常的安全掃描、滲透測試、進行安全工具和系統研發以及安全事件應急處理
運維的職責
- 保證服務的穩定運作;
- 考慮服務的可擴充性;
- 從系統的穩定性和可運維性的角度,提出開發需求;
- 定位系統的問題,甚至可以直接修正bug;
- 對突然出現的問題做到快速響應和處理;
工作中運維應用的場景是什麼樣的?
1. Devops傳遞環常識
- 我們把開發傳遞劃分為:計劃→編碼→建構→測試→版本→部署→運維→監控的一個閉環
- DevOps的目标是通過建立并不斷完善持續傳遞的流水線
- 運維的職責覆寫了産品從設計到釋出、運作維護、變更更新至下線的生命周期
2. 産品釋出前
- 産品的業務熟悉;
- 産品架構設計的合理性評估,包括是否存在單點,是否可容錯,是否有強耦合等,
- 資源評估,包括所需的伺服器資源、網絡資源以及資源的分布等,同時把相關産品對資源預算申請的合理性,控制服務成本;
- 資源就位,将申請的伺服器及基礎環境/域名準備就位。
3. 産品釋出過程中
- 産品釋出階段運維工程師負責釋出的具體工作,将具體的軟體和系統/硬體資源整合形成産品并對外提供服務。
- 對于已線上服務的更新也屬于釋出範疇,這個時候的産品釋出一般要保障線上釋出,在不中斷對外服務的情況下完成産品的更新。
- 對于大型複雜的變更也存在中止服務部署完成後再重新提供服務的情況,但這種情況需要運維工程師通過盡可能的技術手段來避免。
4. 産品運作維護
- 監控:
- 對服務運作的狀态進行實時的監控,随時發現服務的運作異常和資源消耗情況;
- 輸出重要的日常服務運作報表以評估服務/業務整體運作狀況,發現服務隐患;
- 故障處理:
- 對服務出現的任何異常進行及時處理,盡可能避免問題的擴大化甚至中止服務。
- 這之前運維工程師需要針對各類服務異常,如機房/網絡故障、程式bug等問題制定處理的預案,問題出現時可以自動或手動執行預案達到止損的目的。
- 容量管理:
- 包括服務規模擴張後的資源評估、擴容、機房遷移、流量排程等規劃和具體實施。
5. 産品性能/成本優化
- 産品對外提供服務最重要的一點是使用者體驗,使用者體驗中非常重要的是産品的可用性和響應速度。
- 而如何用最合理的資源(如機器、帶寬等)支援産品提供高可用和高速度的使用者體驗,這也是運維工程師的重要職責。
6. 産品下線
發展良好的網際網路産品将始終線上對外提供服務,但網際網路産品快速疊代,也存在相當多孵化的産品最後被淘汰的情況
- 這些産品都需要做下線處理,這個過程運維工程師主要做好資源回收的工作,将機器/網絡等資源回收後納入資源池中供其它服務使用
運維工程師使用的運維平台和工具
- Web伺服器:apache、tomcat、nginx
- 負載均衡:keepalive、lvs、haproxy、nginx
- 監控:prometheus、zabbix、openfalcon、nagios、cacti
- 自動部署:ansible、saltstack、sshpt
- 配置管理:puppet
- 備份工具:rsync、wget
- 分布式資料庫:hbase、redis、MongoDB
- 容器:docker、k8s、docker-compose、swarm
- 安全:kerberos、selinux、acl、iptables
- 虛拟化:openstack、xen、kvm
- 問題追查:netstat、top、tcpdump、last
運維工程師要掌握的技能
- 紮實的計算機基礎知識,包括計算機系統架構,作業系統,網絡技術等;
- 通用應用方面需要了解作業系統、網絡、安全,存儲,CDN,DB等,知道其相關原理;
- 程式設計能力,小到運維工具的開發大到大型運維系統/平台的開發都需要有良好的程式設計能力;
- 資料分析能力:能夠整理、分析系統運作的各項資料,從中發現問題及找到解決方向;
- 豐富的系統知識,包括系統工具、典型系統架構、常見的平台選型等;