1、保障業務長期穩定運行 出一點點差錯,用戶就要投訴了。 一、業務跑在什麼上面? 網站服務器通常是apache,nginx,tomcat等。可是真正跑通流程還須要Mysql數據庫來存儲用戶密碼及其它。不少程序都要php的解析,因此LNMP、LAMP(即nginx、apache、mysql、php)環境部署是必須掌握的技能。 二、業務出了問題怎麼及時知道? 這就須要監控軟件來郵件或短信來通知你,經常使用的有zabbix,nagios等。報警發郵件,也得一個郵件程序呀,sendmail或postfix。 三、在家裏收到報警,但服務器是內網IP,怎麼也得解決問題吧? 在公司搭建open***或pptp或openswan,在家裏經過×××撥入內網,24小時解決問題…唉,半夜爬起來解決問題也沒工資。 2、保障數據安全可靠 出一點點差錯,領導要找你喝茶了。 一、有時須要手動改數據庫內容? 因此要會基本的Mysql數據庫增刪查改命令。 二、萬一數據庫服務器硬件壞了怎麼辦? 須要有個備庫以備不時之需,因此須要Mysql主從複製。 三、 數據庫要還原怎麼辦? 因此須要在crond中按期全備Mysql數據,以便還原使用。若是要還原到指定時間點,還要學會Mysql增量備份與恢復。 四、 若是是用戶上傳的圖片或文件服務器壞了怎麼辦? 定時備份可能還不夠,須要使用rsync加inotify來實時備份。以便任一時刻主服務器壞掉,也能保障全部圖片有備份能夠用來恢復。 五、當心***,要增長服務器安全性? ssh輕易不能讓外人訪問,那麼就設置只容許公司的IP或跳板機IP訪問,這些都經過iptables來控制。 3、大性能 小公司總有一天會牛逼起來的,實在牛不起來咱也能夠跳到大公司。 一、愈來愈多的用戶來訪問咱們的網站,一臺web服務器抗不住了怎麼辦? 那就須要多臺web服務器來負擔,但多臺服務器之間怎麼進行負載均衡呢,這就須要用到nginx反向代理或LVS+keepalived或haproxy+heartbeat了。 二、用戶註冊發表的文章與評論太多,一臺數據庫抗不住了怎麼辦? 數據庫壓力分爲讀和寫,若是寫抗不住,須要進行分表分庫到多個服務器上。若是是讀壓力不夠了,可使用mysql-proxy讀寫分離,來分擔讀的壓力。更簡單方便的方法,把數據庫裏的內容放到內存上,這就用上memcache或redis了。 三、N多用戶上傳下載文件,磁盤抗不住了怎麼辦? 把多塊磁盤作成raid,或者使用分佈式存儲文件系統如MFS,GlusterFS來提升磁盤的讀寫能力。 四、網站上好多圖片,總有用戶反應網站加載太慢,怎麼辦? 這時能夠把網站上的圖片經過squid或varnish緩存到網站前端,儘量的增長訪問速度,固然,最好是購買商業的CDN加速。 五、運營商是個大難題,他們之間的帶寬好像很小,聯通IP訪問我電信網站怎麼就這麼慢呢? 這時可使用bind自建一個DNS服務器,把網站的DNS記錄指向自建DNS服務器上,配置好解析規則,之後聯通IP解析到聯通網站上,電信IP解析到電信網站上,體驗就會好不少啦。 4、自動化 終極目標:跑死機器,閒死人。 一、 公司新買100臺服務器,公司居然就1個移動光驅,這裝系統獲得何時? 使用kickstart或cobbler來網絡遠程自動安裝系統吧。 二、 每次裝完機要優化不少內容,什麼文件描述符、端口、軟件安裝啊,手動操做不累死去? 趕忙學會shell,將解放很是多的工做量。 三、系統裝完後登錄要輸入密碼,這麼多臺啊? 使用expect吧,自動讀取提示來輸入密碼,並執行命令。 四、要批量把新代碼發佈到線上服務器,怎麼辦? 使用saltstack或puppet或ansible吧,絕對爽歪歪。 5、其餘 一、搭整套測試環境須要5臺服務器,但公司窮的只有一臺空閒服務器? 學會xen或kvm或docker吧,虛擬出多臺服務器,就能解決資源問題了。特別是docker,強烈推薦,之後某個研發人員讓你部署一套新環境,分分鐘幫他解決。 二、研發人員的代碼控制,權限控制,總要運維人員管呀? svn或git,這個是確定要有的。 結尾: 如今咱們在回過頭來思考,運維工程師平時幹些啥呢? 一、 隨時解決報警故障。 二、 業務程序更新。 三、 編寫一些腳本,監控或完成其餘可自動完成功能。 四、 運維架構完善,部署一些用起來更方便更可靠或性能更好的開源工具以及制定運維流程規範。 五、 打雜,如調交換機,裝系統,部署新環境等。