了解最新公司動態及行業資訊
在學習運維之前,我們首先要了解什么是運維,運維的發展前景,運維的職責是什么,以及我們在公司中的位置。
一、什么是運維:1、簡介
運維(Operation and maintenance)一般是指對大型組織已經建立好的網絡軟硬件的維護,其中傳統的運維是指信息技術運維(IT運維)。
2、IT運維管理
指單位 IT 部門采用相關的方法、手段、技術、制度、流程和文檔 等,對IT 運行環境(如軟硬件環境、網絡環境等)、IT 業務系統和 IT 運維人員進行的綜合管理。
3、運維擴展
隨著信息化進程的推進,運維管理將覆蓋對整個組織運行,進行支持的管理信息系統涵蓋的所有內容,除了傳統的IT運維,還拓展了業務運維和日常管理運維。
其參與的對象也從IT部門和人員,拓展到組織的管理層和各部門,及其相關的業務骨干。運維的最終結果是對軟件運行中各種性能的維護。
4、總結
`運維`通俗的理解即為`運行和維護`,來保證系統和網站的正常運行,維護它們的安全。保證`7×24小時`的正常運行,數據的穩定、不丟失,并持續進行系統及網站的優化。
二、運維工程師按工作方式分為幾類:1、運維工程師/運維開發工程師:
負責具體的產品線運維工作,同時也需要掌握一定開發的能力,深入業務,最了解業務的痛點和問題,同時研發/優化針對產品業務需求的平臺、工具和手段,能夠接觸到各類優秀的系統架構并有能力做出優劣對比,同時對業務的掌控決定了相應運維工程師在業務發展中的作用。長遠發展是成為大型系統的架構師。
2、運維平臺開發工程師:
專門研發運維相關通用平臺和技術,需要有一定的產品線運維經驗或從產品線中拿到運維需求。對研發能力有較高的要求,對系統的設計有較嚴格的標準,并且能夠理解用戶需求,做出適合服務運維和滿足運維工程師使用體驗的運維產品,長遠的發展是成為各個技術縱向領域的技術專家。
3、數據庫開發工程師/數據庫工程師:
數據庫方向是運維技術中較為特殊的一個方向,由于業務的重要性通常需要專設崗位,業界在該方向也有深厚的研究和積累。主要方向有數據庫內核、云數據庫等,長遠發展是數據庫領域的技術專家,數據庫架構師。
4、k8s運維工程師
隨著容器化時代的到來,新興的一個方向。是在普通運維上的通過容器編排來實現各個業務的部署。這需要對集群規劃部署有著深刻的了解,有著嚴格的標準,你可能需要掌握公司所有使用到的代碼,比如代碼是如何進行編譯的、如何正確發布、如何修改代碼配置文件等。長遠發展可成為k8s架構師、k8s領域技術專家
5,運營總監:
運維同學做事情的過程中通常需要協調多個RD和QA同學,對協調和推進能力要求比較高,對一些技術深度還不錯,協調和推進能力比較高的同學非常適合轉型管理職位,長遠的發展和技術部門的管理職位一樣目標是CTO、CEO。
各個方向的工程師發展到一定階段后,沒有明確的界限,需要同時具備很強的運維、架構、編程、算法等方面的能力,這是一個要求很高的專業。
三、運維職責1、保證企業業務和服務365×7×24小時不間斷
運維角度的常見問題及解決方案
1、用戶無法登錄玩游戲或瀏覽網頁怎么辦?
運維需要保證服務器和運行的服務全年不宕機,這就需要做好監控和告警!
2、業務在哪里運營?
網站服務器一般是apache,nginx,tomcat等。但是真正跑通流程還需要Mysql數據庫來存儲用戶密碼及其它。很多程序都要php的解析,所以LNMP、LAMP(即linux系統、nginx、apache、mysql、php)環境部署是必須掌握的技能。
3、如何知道業務是否有問題?
這就需要監控告警軟件來郵件、短信、電話、微信等來通知你,常用的有zabbix、prometheus等。報警發郵件,也得一個郵件程序呀,sendmail或postfix。
4、在家接到舉報,但是服務器是外網IP,請問如何解決?
服務器集群運行都是在內網環境運行的。在公司搭建openvpn或pptp或openswan,在家里通過VPN撥入內網?;蛘咴诠玖襞_電腦作為外網公司內網的跳板機,24小時解決問題。
2、提升用戶體驗,高性能1、越來越多的用戶來訪問我們的網站,Web服務器受不了怎么辦?
那就需要多臺web服務器來負擔,但多臺服務器之間怎么進行負載均衡呢,這就需要用到nginx反向代理或LVS+keepalived或haproxy+heartbeat了。
2、用戶注冊發表的文章和評論太多,數據庫受不了怎么辦?
數據庫壓力分為讀和寫,如果寫抗不住,需要進行分表分庫到多個服務器上。如果是讀壓力不夠了,可以使用mysql-proxy讀寫分離,來分擔讀的壓力。更簡單方便的方法,把數據庫里的內容放到內存上,這就用上memcache或redis了。
3、N多個用戶上傳下載文件it運維,C盤受不了怎么辦?
把多塊磁盤做成raid,或者使用分布式存儲文件系統如MFS,GlusterFS來提高磁盤的讀寫能力。
4、網站圖片很多,總有用戶反應網站加載太慢,怎么辦?
這時可以把網站上的圖片通過squid或varnish緩存到網站前端,盡可能的增加訪問速度,當然,最好是購買商業的CDN加速。
5、各大運營商之間的帶寬好像很小。如何解決跨運營商訪問速度慢的問題?
這時可以使用bind自建一個DNS服務器,把網站的DNS記錄指向自建DNS服務器上,配置好解析規則,以后聯通IP解析到聯通網站上,電信IP解析到電信網站上,體驗就會好很多啦。
3、確保數據安全可靠1、有時需要自動更改數據庫內容?
所以要會基本的Mysql數據庫增刪查改命令。
2、如果數據庫服務器硬件出現故障怎么辦?
需要有個備庫以備不時之需,所以需要Mysql主從復制,搭建數據庫集群。
3、如何恢復數據庫?
所以需要backup定期全備Mysql數據,以便還原使用。如果要還原到指定時間點,還要學會Mysql增量備份與恢復。
4、用戶上傳的圖片或者文件服務器壞了怎么辦?
定時備份可能還不夠,需要使用sersync(rsync+inotfy)來實時備份。以便任一時刻主服務器壞掉,也能保障所有圖片有備份可以用來恢復。
5、提防黑客,降低服務器安全性?
ssh輕易不能讓外人訪問,那么就設置只允許公司的IP或跳板機IP訪問,這些都通過iptables來控制。搭建堡壘機對賬號進行管理和權限分配。
4、保證人工部署1、公司新買100臺服務器,但公司只有1個聯通U盤或硬盤,什么時候能拿到桌面系統?
kickstart、cobbler網絡遠程自動安裝系統。
2、每次裝機都需要優化很多內容,哪些文件描述符,端口,軟件安裝,如何批量發布新代碼到線上服務器?
趕緊學會shell,將解放非常多的工作量。一鍵優化!
使用saltstack或puppet或ansible吧,絕對爽歪歪。
3、系統安裝好后需要輸入密碼才能登錄,這么多?
使用expect吧,自動讀取提示來輸入密碼,并執行命
4、集群規模逐漸擴大,資源分配困難,虛擬化后果日益暴露it運維,管理困難,集群彈性伸縮工作量巨大。
搭建kubernetes集群,既能節省資源,又方便管理。一些自動化問題有良好的解決方案。
5、公司業務更新快,業務種類多。要么正在更新中,要么計劃每晚更新。
搭建jenkins,將更新需要的步驟都寫到jenkins里面。通過jenkins實現持續集成持續部署。
最終目標
喝著茶,玩著手機,看著機器拼命跑!
5、虛擬環境部署和測試1、新產品發現有bug或者運行困難怎么辦?
每個公司基本都會有個獨立的機房,部署和公司服務器相同的虛擬環境,然后先在虛擬環境進行虛擬環境壓力測試,長時間運行測試等。以排除不能讓產品運行的bug!可以理解為一些有體驗服的游戲,體驗服一般比正式服提前幾個版本,以便讓體驗服的用戶發現新產品的bug。
2、公司只有一臺虛擬機進行測試
一臺服務器測試環境:docker
6、開發權及其他人員權限管理
服務器80%的問題來自人為!
公司不可能一個運維,運維人員需要權限,開發人員也要在服務器上進行代碼修改。這就需要對文件和命令的限權!防止出現誤操作,導致服務器宕機!
四、運維人員工作內容1、備份
有備無患,總是沒錯的!??!從數據庫的備份、程序的備份到系統的備份,通過備份的方式,來防止數據的丟失。以免數據的故障或其他原因,讓數據都消失了,造成一場不小的“`災難`”。
每一天的操作可以寫個操作記錄,方便以后查看!
2、監控、警報
對日常的系統進行監視和管理,避免出現不必要的問題。通常情況下,運維工程師需要根據客戶系統的特點,監視各項指標。如系統資源(CPU,內存,磁盤,網絡使用情況等),應用程序的響應時間即服務響應時間,日志文件及各種中間件(Apache,MySQL,Redis等等)。 全方位的監視指標,會縮短發生問題時的排查時間。
告警與監視是相連接的,在監視時候發現了問題,將問題告知于客戶,現在最常見的方式就是,打電話、發短信、發郵件釘釘,現在也在逐漸發展自動化的告警系統。
3、新品發布與舊品更新
當公司有新項目要上線或者版本更新時,需要我們書寫上線文檔,以及對上線隨時會出現的問題做好應對方案。小問題線上改,大問題停止上線,平滑回滾到舊版本。優先保證服務運行。上線成功后做好實時監控和回測,進行項目二次驗收!
4、提高服務器性能
就是對服務器系統的優化,針對現有的環境的基礎上,通過技術層面或硬件設備上進行改善,對總體的系統做一個提升,提高性能及服務的響應時間。從技術層面上進行優化可以提升20%左右的性能,通過添加硬件設備得到的是100%以上的性能提升!
5、編寫腳本,解放雙手
編寫一些腳本,做一些定時任務,讓機器完成一些可以自動完成的事件,可以節約大量時間,減少錯誤操作幾率,減少損失!
6、改進集群結構
運維架構完善,部署一些用起來更方便更可靠或性能更好的開源工具以及制定運維流程規范。
7、其他工作
調制路由器、交換機。電腦裝系統,部署新環境,保證虛擬環境和真實環境環境統一!
五、運維的發展前景和方向(企業真正迫切的用人需求)1、IDC機房托管運維(薪資:7k~12k)
要求
硬件基礎和網絡方面要有比較深的基礎
懂得服務器基本的操作命令
對系統運維工作內容有一定了解
2、系統運維工程師(薪資:9k~18k)
要求
精通服務器基礎操作命令
精通服務集群的搭建:熟悉Nginx、Redis、Git、MySQL、PostgreSQL、MongoDB等工具的安裝和配置管理;
精通C/C++/java/python等一種或多種編程語言
精通vmwave,kvm,docker,k8s等虛擬化技術
熟悉zabbix等運維監控的安裝、配置;
熟悉運維日志分析工作ELK
3、運維開發/手動運維()(13k~20)
要求
熟練Linux操作系統、服務器知識,具備熟練地安裝、調試與維護技能;
具備常見中間件的安裝、調試、優化的經驗;較強的故障定位和問題解決能力;
熟悉常用虛擬化技術(kvm/Vmware),并有相關實踐經驗;
熟悉redis、Lnmp/Lamp、MQ、JenkinsCICD/GitlabCICD、Elasticsearch、Kafka等中間件技術;
精通grafana,prometheus,zabbix等常見運維工具;
具有一定的研發能力,偏python、PHP、shell等需要編寫自動化腳本;
多并發以及大用戶量下多性能拂去其系統部署和方案的制定及實施;
熟悉puppet、ansible、saltstack、 zabbix、nagios、cacti 等產品的部署和故障處理;
熟悉運維日志分析工作ELK
4、DBA 數據庫管理員 DBA= (15k~25k)
要求
1、熟悉linux(redhat,centos),unix操作系統
2、精通Linux/Windows環境、兩種以上的流行的數據庫如Oracle,Mysql,SQLServer等設計、維護、調優及備份恢復經驗;充分理解數據庫設計,熟悉一定的數據架構設計,數據庫分庫分表規則;
3、精通主流數據庫遷移過程的數據補齊方案;
4、熟悉關系型數據庫設計流程及規范,精通SQL&PL/SQL的編程,并能熟練使用相關監控、分析、開發和管理工具;
5、具備ORACLE 高可用/復寫技術(RAC,DataGuard,GoldenGate),MySQL主從式架構配置管理和備份恢復策略經驗等;
6、有云數據庫的使用經驗優先。
5、運維架構師(云測深研究薪資:20k~50k)
要求
1、熟悉TCP/IP,http,dns協議的工作原理
2、 熟悉Linux操作系統的自動化部署、維護、故障排查
3、 熟悉Linux系統下各種服務配置及工作原理,例如MySQL 、Nginx/Tengine、Tomcat、redis、Memcached、LVS、keepalived等
4、熟悉Tomcat、Java應用的配置維護及優化
5、精通docker容器技術和Kubernetes
6、熟悉Zabbix監控,并且可根據需求自定義監控項,優化誤報率;
7、熟悉elk,jenkins 具有持續ci/cd經驗優先;
8、熟悉Salt-Stack、Ansible批量化服務器管理工具,具有批量服務器管理能力
9、熟練掌握Shell、python、golang至少一種;
10、 熟悉混合云架構規劃和業務運維場景
11、 熟悉常見應用配置及優化,如Lvs/Nginx/Haproxy/MySQL/DNS/Redis/MongoDB/kafka/Es/ZK等;
7、k8s運維工程師(工資15k~25k)
要求
1、精通K8S容器編排基本概念和原理;
2、熟悉K8S容器編排Calico、Flannel等網絡組件的工作原理;
3、熟悉K8S容器編排的基本組件,包含但不限于prometheus、grafana、efk、traefik、jenkins、helm等;
4、熟悉Golang或Python語言之一,有實際項目或工具開發經驗;
5、了解istio、native、tekton,對智能運維有自我認知和理解;
6、了解ceph分布式存儲系統,有實際運維經驗優先。
7、從事過應用大規模容器化并具有應用編排經驗。
ps:之前的都是在老板直招和拉狗急招上找到的。如果你好奇,你可以自己去一探究竟。工資可能因地區而異?;ヂ摼W運維行業是一個不看資質的地方。他看的是你的工作能力。你的能力越高,你就會越多。你得到的越多!