總結兩句話
1.保證業務的長期穩定運行(如網站服務器、遊戲服務器等。).
2.保證數據安全可靠(如用戶名和密碼、遊戲數據、博客文章、交易數據等。).
從這兩句話中推導出運維工程師應該學習的內容。
(壹)確保業務長期穩定運行。
稍有差錯,用戶就會投訴。
1.企業靠什麽運行?
網站服務器壹般是apache,nginx,tomcat等。但是真正的運行過程還需要Mysql數據庫來存儲用戶密碼等。很多程序需要php解析,所以部署LNMP、LAMP(即nginx、apache、mysql、php)環境是必須掌握的技能。
2.怎麽才能及時知道業務有沒有問題?
這就需要監控軟件通過郵件或者短信通知妳,比如zabbix,nagios。要向警方發送電子郵件,妳必須有壹個電子郵件程序,sendmail或postfix。
3.家裏接到報警,但是服務器是內網IP。我該如何解決這個問題?
在公司架設openvpn或者pptp或者openswan,在家裏通過vpn撥入內網,24小時解決問題……唉,半夜起來解決問題沒有工資。
第二,確保數據的安全性和可靠性
壹點小失誤,領導想和妳喝茶。
1.有時需要手動更改數據庫的內容。
因此,有必要了解基本的Mysql數據庫添加、刪除、查詢和更改命令。
2.數據庫服務器硬件壞了怎麽辦?
妳需要壹個備份庫以備不時之需,所以需要Mysql主從復制。
3.我應該如何恢復數據庫?
因此,需要在crond中定期準備Mysql數據,以便進行恢復。如果想恢復到指定的時間點,還應該學習Mysql增量備份和恢復。
4.用戶上傳的圖片或者文件服務器壞了怎麽辦?
定時備份可能不夠,需要使用rsync加inotify進行實時備份。這樣主服務器隨時崩潰,所有圖片都可以備份恢復。
5、提防黑客,增加服務器安全性?
Ssh不能被外人輕易訪問,所以只允許公司的IP或跳板IP訪問,由iptables控制。
第三,大性能
小公司總有壹天會牛逼,但如果不行,我們可以跳到大公司。
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解析到電信網站,體驗會好很多。
第四,自動化
最終目的:把機器跑死,把死人空轉。
1,公司新買了100臺服務器,公司實際有1臺移動光盤。這個系統是什麽時候得到的?
使用kickstart或cobbler在網絡上遠程安裝系統。
2.每次裝機都需要優化很多內容。有哪些文件描述符、端口和軟件安裝?手動操作不累人。
快速學習shell會解放很多工作。
3.系統安裝後,登錄時需要輸入密碼。這麽多套?
使用expect,自動讀取提示輸入密碼並執行命令。
4.想把新代碼批量發布到在線服務器上,該怎麽做?
使用鹽堆、木偶或安斯比爾。絕對酷斃了。
動詞 (verb的縮寫)其他人
1.搭建壹個完整的測試環境需要五臺服務器,公司窮,只有壹臺閑置的服務器?
學xen或者kvm或者docker。虛擬多服務器可以解決資源問題。特別推薦Docker。未來,R&D的工作人員將要求您部署壹個新環境,並在幾分鐘內幫助他解決這個問題。
2.R&D人員的代碼控制和權限控制必須始終由運維人員管理。
Svn或者git,這個肯定是有的。
結尾:
現在我們回過頭來想,運維工程師壹般都做些什麽?
1,隨時解決報警故障。
2.業務計劃更新。
3.寫壹些腳本來監控或者完成其他可以自動完成的功能。
4.完善運維框架,部署壹些更方便、可靠或性能更好的開源工具,制定運維流程規範。
5.打零工,比如切換交換機,安裝系統,部署新環境。