高性能網(wǎng)站構(gòu)建實戰(zhàn)序言
時間:2023-02-11 11:51:01 | 來源:營銷百科
時間:2023-02-11 11:51:01 來源:營銷百科
高性能網(wǎng)站構(gòu)建實戰(zhàn)序言:前言
我的系統(tǒng)運維觀
我做系統(tǒng)運維工作也好幾年了,基本上應(yīng)付過各種各樣的運維環(huán)境和工具。從最開始簡單的各種應(yīng)用部署,比如常用的LVS、HAproxy這樣的負(fù)載應(yīng)用、Apache、Nginx這類的Web應(yīng)用,到MySQL數(shù)據(jù)庫的主從結(jié)構(gòu)的部署,以及云計算Hadoop、各種監(jiān)控(Cacti、Zabbix)、緩存(Squid、Varnish、Nginx、Memcached、Redis)等,無不有所涉足。
此后,更多的工作是根據(jù)實際的情況來設(shè)計架構(gòu)。這不僅可以讓系統(tǒng)穩(wěn)定、高性能地運行,還需要在未來的擴展中不影響整個的業(yè)務(wù)的運行。整體架構(gòu)的清晰對企業(yè)的發(fā)展是很重要的,如果上層企業(yè)領(lǐng)導(dǎo)不重視或者是外行人領(lǐng)導(dǎo)內(nèi)行人的話,企業(yè)的人力成本、硬件成本等會有更多的消耗。
隨著企業(yè)的發(fā)展、軟硬件的增加,有一個健壯的自動化運維平臺也是增加效率、減少人力成本,也是很好的方法??上Ш芏嗥髽I(yè)不重視運維,認(rèn)為只要有個人隨便能應(yīng)付就行,等企業(yè)發(fā)展起來想做調(diào)整也不行了,反而浪費了更多的人力物力。
想做好運維師這個職位,不僅要有相應(yīng)的技術(shù),還需要在一個具備發(fā)展眼光的技術(shù)團(tuán)隊和公司。否則只能是混日子,而這不論對公司還是個人都不是一個好的發(fā)展。
系統(tǒng)運維師這個職業(yè),就是這樣,不斷面臨新的問題和挑戰(zhàn),也需要不斷學(xué)習(xí)新的知識和概念。不過一路走來,我感覺所有的付出都有所回報,還是值得的。
寫作本書的目的
我工作有七八年時間了,期間也做過技術(shù)培訓(xùn)中心的講師。在教學(xué)過程中,我發(fā)現(xiàn)很多學(xué)生在進(jìn)入企業(yè)后有些是無法勝任工作的,這里不排除一些因為上課不好好聽講、課后不認(rèn)真練習(xí)的學(xué)生;另一方面也有可能企業(yè)的線上環(huán)境比較復(fù)雜,再加上自己也沒什么職業(yè)目標(biāo)不明確干什么,不重視基礎(chǔ)知識積累,實踐經(jīng)驗少,根本不會計算流量、軟件選型等。所以,我有了寫這本書的想法,結(jié)合我個人在網(wǎng)站架構(gòu)上的技術(shù)經(jīng)驗和培訓(xùn)時的教學(xué)思路,可以幫助初中級讀者進(jìn)行技術(shù)方面的一次系統(tǒng)的學(xué)習(xí)(包括負(fù)載、頁面級緩存、NoSQL、分布式文件系統(tǒng)、監(jiān)控)。由淺入深地介紹這些內(nèi)容,也可以讓初中級讀者在網(wǎng)站架構(gòu)上有一個清晰的認(rèn)識,在多種應(yīng)用軟件中選擇適合企業(yè)的來完善企業(yè)的網(wǎng)站架構(gòu)。
本書中所提到的系統(tǒng)均為CentOS 5.6,所講的應(yīng)用,所提供的腳本均來自于線上生產(chǎn)環(huán)境,大家可以直接使用。
希望大家通過學(xué)習(xí)本書,能夠掌握網(wǎng)站架構(gòu)各種技術(shù)的應(yīng)用,以及在一定程度上可以設(shè)置實用的網(wǎng)站架構(gòu),使自己的職業(yè)技能有一個質(zhì)的提高。這是我期望看到的,也是我寫這本書的目的。
讀者對象
本書的讀者對象如下:
網(wǎng)站運維工程師
系統(tǒng)管理員和系統(tǒng)工程師
網(wǎng)絡(luò)管理員和企業(yè)網(wǎng)管
計算機相關(guān)專業(yè)的學(xué)生
如何閱讀本書
本書的結(jié)構(gòu)是按一般網(wǎng)站的架構(gòu)需求順序來編寫的。全書共分為7篇16章。
第一篇是架構(gòu)規(guī)劃篇,也就是第1章,主要介紹了對企業(yè)網(wǎng)站架構(gòu)的選型、系統(tǒng)的快速安裝及初始化高性能系統(tǒng)的一些參數(shù)。
第二篇為負(fù)載應(yīng)用篇,包括第2章到第4章。第2章介紹了LVS KeepAlived,這是可以媲美硬件負(fù)載的開源軟件。第3章則簡單地介紹了Haproxy,它是提供高可用性、負(fù)載均衡以及基于TCP和HTTP應(yīng)用的代理。第4章介紹的是Nginx的負(fù)載功能,它可以按照多種方式對后端的應(yīng)用服務(wù)器做負(fù)載均衡。這些內(nèi)容都是網(wǎng)站前端必然用到的知識,建議大家多花些精力和時間學(xué)習(xí)。
第三篇為頁面緩存篇,包括第5章、第6章和第7章。第5章介紹了老牌的代理服務(wù)器和Web緩存服務(wù)器軟件Squid。第6章介紹相對更為高性能的緩存軟件Varnish。第7章介紹了應(yīng)用在流量不大環(huán)境中Nginx的緩存功能。
第四篇為Web服務(wù)器篇,包括第8章和第9章兩章。第8章介紹了幾乎可以在任何平臺上運行、世界使用排名第一的Web服務(wù)器軟件Apache。第9章介紹了一款輕量級軟件Nginx,其并發(fā)能力在同類型的Web服務(wù)器中表現(xiàn)較好,此外,還簡單介紹了Lighttpd的安裝和配置。
第五篇是數(shù)據(jù)緩存篇(NoSQL),包括第10章、第11章和第12章。第10章首先對NoSQL的概念進(jìn)行簡單介紹,然后,介紹了Memcache的機理、安裝和使用。第11章則介紹了擁有更多的Value類型、持久化和主從功能的Redis。第12章介紹了基于分布式文件存儲的數(shù)據(jù)庫MongoDB。
第六篇為文件服務(wù)篇,包括第13章和第14章。第13章介紹了一個具備容錯功能的網(wǎng)絡(luò)分布式文件系統(tǒng)MFS,它可以將數(shù)據(jù)分布在網(wǎng)絡(luò)中不同服務(wù)器上。第14章介紹了Hadoop,它不僅僅是一個用于存儲的分布式文件系統(tǒng),而且可以用來在通用計算設(shè)備組成的大型集群上執(zhí)行分布式應(yīng)用框架。
第七篇監(jiān)控應(yīng)用篇,也是最后一篇,包括第15章和第16章。第15章介紹了各大IDC都在使用監(jiān)控流量的Cacti。第16章介紹了Zabbix,這是一款基于Web界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的軟件。
附錄部分分別給出了ipvsadm命令參考、HAProxy關(guān)鍵字列表、Squid客戶端命令行參考等常用的信息。
大家可以根據(jù)自己的需求選擇閱讀側(cè)重點,不過我還是希望你能夠按照順序來閱讀,這樣不僅僅可以對架構(gòu)上有一個清晰的認(rèn)識,還可以對架構(gòu)中的技術(shù)有一個簡單的對比。
本書體例說明
本書編寫體例有以下幾點提醒讀者注意。
命令行
需要輸入的命令行,用加粗的等寬字體表示。如下所示:
/usr/local/sbin/keepalived -D -f /usr/local/etc/keepalived/keepalived.conf
配置文件
一般的配置文件,使用常規(guī)等寬字體表示。如下所示:
! Configuration File for keepalived
global_defs {
notification_email {
admin@example.com
}
配置文件說明或注釋
文件的說明或注釋,用#符號開頭,并用仿宋字體表示。如下所示:
#讓進(jìn)程在后臺運行,即作為守護(hù)進(jìn)程運行,正式運行的時候開啟,此處先禁止,等同于在命令行添加參數(shù)'-D'
注意和提示
注意和提示,是需要提醒讀者特別注意的內(nèi)容。其標(biāo)題用黑體,內(nèi)容用楷體表示。如下所示:
提示
系統(tǒng)默認(rèn)狀態(tài)沒有HAProxy用戶和組,需要自行添加。
致謝
感謝我的妹妹,在我最初剛來北京時給我的諸多照顧,讓我能很快地熟悉北京的環(huán)境。
感謝在我上學(xué)時對學(xué)生非常負(fù)責(zé)的英語老師孫老師,她的教誨使我以后學(xué)習(xí)和使用英語很是便利。
感謝一起工作過的唐華、王鍇、祝傳雷、左輝、魏學(xué)豐、王濤,不論是在工作方面還是技術(shù)方面都給了我很大的幫助,讓我少走了不少彎路。
感謝Chinaunix的編輯們,特別是天晴、send_linux、小尾巴魚,正是有了你們對我的幫助,本書才有機會為廣大的讀者知曉。
感謝QQ群中Linux/UNIX系統(tǒng)運維群、Linux飯醉團(tuán)伙、系統(tǒng)運維專業(yè)群的很多朋友,和群里的朋友一起研究學(xué)習(xí),一起聊天解悶,非常開心,也謝謝你們對我的支持以及對這本書的期待。特別感謝好友pcghost,他在Nginx環(huán)境中很有研究,對本書Nginx章節(jié)中的內(nèi)容給予很好的建議和很大的幫助。
感謝本書編輯對我的各種指導(dǎo),使我的寫作水平有了很大的提高。
感謝在工作和生活中幫助過我的所有人,感謝你們,正是因為有了你們,才有了本書的面世。
關(guān)于勘誤
雖然花了很多時間和精力去核對書中的文字、代碼和圖片,但因為時間倉促和水平有限,書中仍難免會有一些錯誤和紕漏,如果大家發(fā)現(xiàn)什么問題,懇請反饋給我,相關(guān)信息可發(fā)到我的郵箱danshenguizu1982@163.com。我肯定會努力回答疑問或者指出一個正確的方向。
如果大家對本書有任何疑問或想與我探討Linux相關(guān)的技術(shù),可以訪問我的個人博客,地址為:liuxin1982.blog.chinaunix.net。另外,我在ChinaUnix社區(qū)的ID為Gray1982,大家也可以直接通過此ID在社區(qū)中與我在線交流。
推薦序
隨著互聯(lián)網(wǎng)的發(fā)展壯大,有這樣一群人被冠以'運維工程師'的職業(yè)稱呼,他們的工作涉及了網(wǎng)絡(luò)、負(fù)載、性能、安全、監(jiān)控、數(shù)據(jù)庫和腳本編程。
而本書的作者就是這樣一位攀爬在技術(shù)領(lǐng)域的前進(jìn)者。
不論你是懵懂的'菜鳥',或者是有著多年工作經(jīng)驗的資深'老手',抑或是以開發(fā)為主的從業(yè)人員,你都不應(yīng)該錯過這本書。
通過閱讀本書,你將更深入地了解軟件形式的負(fù)載均衡的魅力,領(lǐng)略LVS/Haproxy/Nginx的不同,今后在面對多種架構(gòu)方案的同時,可以快速選型,提升系統(tǒng)性能,降低維護(hù)和支出成本,節(jié)省資源。
通過閱讀本書,你將學(xué)習(xí)到如何使網(wǎng)站的訪問請求更加迅捷,并可親自實施部署,獲得良好的用戶體驗。
通過閱讀本書,你將更容易了解NoSQL數(shù)據(jù)庫的安裝、部署和運維,以及各種NoSQL的架構(gòu)應(yīng)用。
通過閱讀本書,你將綜合學(xué)習(xí)到當(dāng)下流行的Web服務(wù)平臺Apache/Nginx/Lighttpd的應(yīng)用方法和不同應(yīng)用場景的介紹。
通過閱讀本書,你將體驗到Hadoop分布式文件系統(tǒng)的應(yīng)用也沒有那么神秘和遙不可及。
通過閱讀本書,你將再也不用被故障折騰得焦頭爛額,你也可以未雨綢繆變成先知,將故障扼殺在萌芽狀態(tài),避免跟領(lǐng)導(dǎo)匯報故障的尬尷。Cacti和Zabbix將讓你得心應(yīng)手。
本書是作者多年的工作經(jīng)驗積累,不斷學(xué)習(xí)、探索、智慧的結(jié)晶,書中的內(nèi)容都是當(dāng)前形勢下較流行的架構(gòu)和應(yīng)用。相信通過本書的學(xué)習(xí),你可以解決很多日常工作遇到的難題,也可以使自己更深入地理解運維工作的方方面面,并借鑒書中的架構(gòu)場景,運用解決實際的應(yīng)用需求。
在技術(shù)的道路上'達(dá)者為師',作者不吝將多年的經(jīng)驗總結(jié)編寫發(fā)布,分享精神值得敬佩。希望本書可以幫助更多的技術(shù)人員避免一些錯誤的領(lǐng)會和自行摸索的困難。
相信通過努力,不斷前進(jìn),每個人都能達(dá)到自己心中的目標(biāo)。
借用文學(xué)家韓愈的名言與作者和讀者共勉:'業(yè)精于勤而荒于嬉,行成于思而毀于隨'。
悠易互通(北京)科技有限公司 運維總監(jiān) 王建
2012年8月