IT運維介紹
一、運維的概念以及運維發展前景
1、什麼是運維:
運維(Operation and maintenance)一般是指對大型組織已經建立好的bai網路軟硬體的維護,其中傳統的運維是指資訊科技運維(IT運維)。
所謂IT運維管理,是指單位 IT 部門採用相關的方法、手段、技術、制度、流程和文件 等,對IT 執行環境(如軟硬體環境、網路環境等)、IT 業務系統和 IT 運維人員進行的綜合管理。
隨著資訊化程序的推進,運維管理將覆蓋對整個組織執行,進行支援的管理資訊系統涵蓋的所有內容,除了傳統的IT運維,還拓展了業務運維和日常管理運維。
其參與的物件也從IT部門和人員,拓展到組織的管理層和各部門,及其相關的業務骨幹。運維的最終結果是對軟體執行中各種效能的維護。
運維通俗的理解即為執行和維護,來保證系統和網站的正常執行,維護它們的安全。保證7×24小時的正常執行,資料的穩定、不丟失,並持續進行系統及網站的優化。
2、運維工程師從工作方式上分為幾大類:
1,運維工程師/運維開發工程師:
負責具體的產品線運維工作,同時也需要掌握開發的能力,深入業務,最瞭解業務的痛點和問題,同時研發/優化針對產品業務需求的平臺、工具和手段,能夠接觸到各類優秀的系統架構並有能力做出優劣對比,同時對業務的掌控決定了相應運維工程師在業務發展中的作用。長遠發展是成為大型系統的架構師。
2,運維平臺研發工程師:
專門研發運維相關通用平臺和技術,需要有一定的產品線運維經驗或從產品線中拿到運維需求。對研發能力有較高的要求,對系統的設計有較嚴格的標準,並且能夠理解使用者需求,做出適合服務運維和滿足運維工程師使用體驗的運維產品,長遠的發展是成為各個技術縱向領域的技術專家。
3,資料庫研發工程師/資料庫工程師:
資料庫方向是運維技術中較為特殊的一個方向,由於業務的重要性通常需要專設崗位,業界在該方向也有深厚的研究和積累。主要方向有資料庫核心、雲資料庫等,長遠發展是資料庫領域的技術專家,資料庫架構師。
4,運維經理:
運維同學做事情的過程中通常需要協調多個RD和QA同學,對協調和推進能力要求比較高,對一些技術深度還不錯,協調和推進能力比較高的同學非常適合轉型管理職位,長遠的發展和技術部門的管理職位一樣目標是CTO、CEO。
各個方向上的工程師發展到一定階段後,沒有明確的界限,需要同時具備較強的運維、架構、程式設計、演算法等能力,是一個要求很高要求的職業。
3、運維的工作職責
(1) 保證企業業務、服務穩定365×7×24小時不間斷
1、使用者玩遊戲登不上去、瀏覽網頁無法訪問怎麼辦?
運維需要保證伺服器和執行的服務全年不宕機,這就需要做好監控和告警!
1、業務跑在什麼上面?
網站伺服器一般是apache,nginx,tomcat等。但是真正跑通流程還需要Mysql資料庫來儲存使用者密碼及其它。很多程式都要php的解析,所以LNMP、LAMP(即linux系統、nginx、apache、mysql、php)環境部署是必須掌握的技能。
2、業務出了問題怎麼及時知道?
這就需要監控告警軟體來郵件、簡訊、電話、微信等來通知你,常用的有zabbix,nagios等。報警發郵件,也得一個郵件程式呀,sendmail或postfix。
3、在家裡收到報警,但伺服器是內網IP,怎麼也得解決問題吧?
伺服器叢集執行都是在內網環境執行的。在公司搭建openvpn或pptp或openswan,在家裡通過VPN撥入內網。或者在公司留臺電腦作為外網公司內網的跳板機,24小時解決問題。
(2) 提升使用者體驗,高效能
1、越來越多的使用者來訪問我們的網站,一臺web伺服器抗不住了怎麼辦?
那就需要多臺web伺服器來負擔,但多臺伺服器之間怎麼進行負載均衡呢,這就需要用到nginx反向代理或LVS+keepalived或haproxy+heartbeat了。
2、使用者註冊發表的文章與評論太多,一臺資料庫抗不住了怎麼辦?
資料庫壓力分為讀和寫,如果寫抗不住,需要進行分表分庫到多個伺服器上。如果是讀壓力不夠了,可以使用mysql-proxy讀寫分離,來分擔讀的壓力。更簡單方便的方法,把資料庫裡的內容放到記憶體上,這就用上memcache或redis了。
3、N多使用者上傳下載檔案,磁碟抗不住了怎麼辦?
把多塊磁碟做成raid,或者使用分散式儲存檔案系統如MFS,GlusterFS來提高磁碟的讀寫能力。
4、網站上好多圖片,總有使用者反應網站載入太慢,怎麼辦?
這時可以把網站上的圖片通過squid或varnish快取到網站前端,儘可能的增加訪問速度,當然,最好是購買商業的CDN加速。
5、運營商是個大難題,他們之間的頻寬好像很小,聯通IP訪問我電信網站怎麼就這麼慢呢?
這時可以使用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,將解放非常多的工作量。一鍵優化!
3、系統裝完後登陸要輸入密碼,這麼多臺啊?
使用expect吧,自動讀取提示來輸入密碼,並執行命令。
4、要批量把新程式碼釋出到線上伺服器,怎麼辦?
使用saltstack或puppet或ansible吧,絕對爽歪歪。
目標:喝著茶,看著機器拼命跑!
(5) 虛擬環境部署與測試
1、新產品上線後發現有bug或者無法執行怎麼辦?
一臺伺服器測試環境:docker
每個公司基本都會有個獨立的機房,部署和公司伺服器相同的虛擬環境,然後先在虛擬環境進行虛擬環境壓力測試,長時間執行測試等。以排除不能讓產品執行的bug!可以理解為一些有體驗服的遊戲,體驗服一般比正式服提前幾個版本,以便讓體驗服的使用者發現新產品的bug
(6)開發許可權及其他人員許可權管理
伺服器80%的問題來自人為!
公司不可能一個運維,運維人員需要許可權,開發人員也要在伺服器上進行程式碼修改。這就需要對檔案和命令的限權!防止出現誤操作,導致伺服器宕機!
4、運維人員的工作內容
1、備份
有備無患,總是沒錯的!!!從資料庫的備份、程式的備份到系統的備份,通過備份的方式,來防止資料的丟失。以免資料的故障或其他原因,讓資料都消失了,造成一場不小的“災難”。
每一天的操作可以寫個操作記錄,方便以後檢視!
2、監控、告警
對日常的系統進行監視和管理,避免出現不必要的問題。通常情況下,運維工程師需要根據客戶系統的特點,監視各項指標。如系統資源(CPU,記憶體,磁碟,網路使用情況等),應用程式的響應時間即服務響應時間,日誌檔案及各種中介軟體(Apache,MySQL,Redis等等)。 全方位的監視指標,會縮短髮生問題時的排查時間。
告警與監視是相連線的,在監視時候發現了問題,將問題告知於客戶,現在最常見的方式就是,打電話、發簡訊、發郵件,現在也在逐漸發展自動化的告警系統。
3、新產品的上線及舊產品的更新
當公司有新專案要上線或者版本更新時,需要我們書寫上線文件,以及對上線隨時會出現的問題做好應對方案。小問題線上改,大問題停止上線,平滑回滾到舊版本。優先保證服務執行。上線成功後做好實時監控和回測,進行專案二次驗收!
4、提升伺服器效能
就是對伺服器系統的優化,針對現有的環境的基礎上,通過技術層面或硬體裝置上進行改善,對總體的系統做一個提升,提高效能及服務的響應時間。從技術層面上進行優化可以提升20%左右的效能,通過新增硬體裝置得到的是100%以上的效能提升!
5、編寫指令碼,儘量解放自己的雙手
編寫一些指令碼,做一些定時任務,讓機器完成一些可以自動完成的事件,可以節約大量時間,減少錯誤操作機率,減少損失!
6、完善叢集架構
運維架構完善,部署一些用起來更方便更可靠或效能更好的開源工具以及制定運維流程規範。
7、其他工作
調製路由器、交換機。電腦裝系統,部署新環境,保證虛擬環境和真實環境環境統一!
5、運維的發展前景與方向
(1)IDC機房託管運維(資薪:7k~12k)
要求:
硬體基礎和網路方面要有比較深的基礎
懂得伺服器基本的操作命令
對系統運維工作內容有一定了解
(2)系統運維工程師(資薪:9k~18k)
要求:
精通伺服器基礎操作命令
精通服務叢集的搭建:熟悉Nginx、Redis、Git、MySQL、PostgreSQL、MongoDB等工具的安裝和配置管理;
精通C/C++/java/python等一種或多種程式語言
精通vmwave,kvm,docker,k8s等虛擬化技術
熟悉zabbix等運維監控的安裝、配置;
熟悉運維日誌分析工作ELK
(3)運維開發/自動化運維(Python)(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=data base administrator(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等;
(6)大資料運維(資薪20k~40k)
要求: 1、深入理解linux系統,運維體系結構,精於容量規劃、架構設計、效能優化;
2、熟悉Hadoop大資料生態圈,包括但不限於HDFS、YARN、Hive、HBase、Spark等;
3、瞭解Hadoop各元件的原理,並有實際部署維護經驗
4、深入理解Hadoop各元件的原理和實現;
5、掌握Redis,Nginx,LVS,ansible原理,並靈活應用
6、對開源技術敏感
7、精通阿里雲或騰訊雲等常見雲廠商的相關產品;
8、精通Docker、kubernetes等容器技術,最好有CI/CD體系構建經驗;
9、熟練掌握Zabbix cacti Prometheus Open-Falcon等監控工具;
10、精通主流的運維工具,如 Jenkins、Ansible、SaltStack等
ps:上面都是在boss直聘和拉鉤招聘上找到的,好奇的可以自己去看看了解一下。因地域不同、資薪可能有些出入。網際網路運維行業是一個不看資歷的地方,他看中就是你的工作能力。你的能力越高,會的越多。你得到的就越多!