網站運維技術與實踐

網站運維技術與實踐(大型網站一線運維技巧與經驗總結,全面解析運維相關技術mysql

20140417154105328

饒琛琳 編著   ios

ISBN 978-7-121-22433-1程序員

2014年3月出版算法

訂價:69.00元 sql

456頁數據庫

16開編程

編輯推薦瀏覽器

資深一線運維專家誠意之做,總結多年實踐經驗,深刻淺出,內容涵蓋運維工做各方各面。緩存

百度、新浪、人人、音悅臺等多名技術經理、高級工程師聯名力薦。服務器

《網站運維技術與實踐》深刻闡述了運維工做所涉及的監測調優、日誌分析、集羣規劃、自動化部署、存數和數據庫等各方面的技術要點,引入了對最新開源產品的實踐經驗,包含了對自動化運維和DevOps等技術形態的大量思考,旨在幫助運維人員「懶惰、急躁和傲慢」(程序員的三大美德)地完成網站運維工做。

內容提要

網站運維工做,一貫之內容繁雜、覆蓋面廣著稱。《網站運維技術與實踐》選取平常工做涉及的監測調優、日誌分析、集羣規劃、自動化部署、存儲和數據庫等方面,力圖深刻闡述各項工做的技術要點及協議原理,並介紹相關開源產品的實踐經驗。在技術以外,做者也分享了一些關於高效工做及我的成長方面的心得。

《網站運維技術與實踐》適合Linux系統管理員、中大型網站運維工程師及技術負責人、DevOps 愛好者閱讀。同時也適於剛踏上或有興趣踏上運維崗位的年輕朋友,瞭解運維職業的工做和發展。

目錄

第1 章 服務器監測......................................1

1.1 理解監測的意義........................... 1

1.2 經過命令瞭解系統的性能概況.......................................... 2

1.2.1 ifconfig................................... 2

1.2.2w.............................................. 3

1.2.3 df............................................. 4

1.2.4 ps............................................. 6

1.2.5 vmstat..................................... 8

1.2.6 netstat .....................................8

1.2.7 iostat....................................... 9

1.3 其餘經常使用工具..............................13

1.3.1sar..........................................13

1.3.2dstat.......................................14

1.3.3mtr.........................................17

1.3.4 IPtraf.....................................18

1.3.5 TcpDump..............................19

1.3.6 Wireshark .............................22

1.3.7strace.....................................23

1.3.8stap........................................24

1.4 SmokePing 網絡質量監測......34

1.4.1 原理......................................35

1.4.2 配置說明..............................37

1.4.3 報警......................................39

1.4.4 WebUI...................................40

1.5 Nagios 分佈式監測....................41

1.5.1 架構原理.............................. 42

1.5.2 Plugin 編寫.......................... 45

1.5.3 SNMP 網絡監控................. 46

1.5.4 Gearman 分佈式................. 50

1.5.5 OMD 介紹........................... 55

第2 章 產品訪問監測...............................57

2.1 關注產品比服務器更重要.....57

2.2 網站監測的明星指標...............58

2.2.1 可用性.................................. 58

2.2.2 響應時間.............................. 59

2.2.3 首屏響應時間..................... 59

2.3 網頁瀏覽過程簡介....................60

2.3.1 解析域名.............................. 60

2.3.2 鏈接服務器......................... 61

2.3.3 發送請求.............................. 61

2.3.4 等待響應.............................. 63

2.3.5 傳輸響應內容..................... 63

2.3.6 瀏覽器渲染處理................. 64

2.3.7 併發請求.............................. 64

2.4 瀏覽器網絡監測與分析..........65

2.4.1 Firebug .................................65

2.4.2 Chrome 開發人員工具...... 65

2.4.3 HttpWatch ............................66

2.4.4 rvictl 接口監控IOS 設備...67

2.4.5 HAR 格式............................68

2.5 第三方監測...................................72

2.5.1 基調網絡..............................72

2.5.2 監控寶..................................91

2.6 簡單定製JS 監測.......................92

2.6.1 頁面內嵌JS.........................92

2.6.2 Nginx 日誌記錄和存儲.....93

2.6.3 數據展現..............................96

2.7Boomerang.....................................96

第3 章 數據採集、傳輸與過濾..........100

3.1 採集點的取捨............................100

3.1.1 服務器數據.......................100

3.1.2 訪問日誌............................101

3.1.3 系統日誌Syslog ...............102

3.2 收集傳輸......................................107

3.2.1 Rsyslog ...............................107

3.2.2 message queue ...................115

3.2.3RPC.....................................118

3.2.4 Gearman .............................119

3.3 日誌收集系統框架..................122

3.3.1 Flume-ng ............................122

3.3.2 logstash...............................125

第4 章 數據分析與報警.........................136

4.1 時間序列存儲............................136

4.1.1 RRDtool(Round-Robin

Database Tool) ................136

4.1.2 Graphite..............................141

4.1.3 OpenTSDB.........................143

4.2 全文搜索引擎ElasticSearch...............................144

4.2.1 簡介....................................144

4.2.2 安裝....................................145

4.2.3 集羣....................................145

4.2.4 基礎查詢............................146

4.2.5 優化....................................148

4.2.6 時間序列統計示例...........152

4.3 數據可視化.................................156

4.3.1 RRDtool .............................156

4.3.2 Gnuplot...............................160

4.3.3 AmCharts ...........................167

4.3.4 其餘繪圖庫.......................176

4.4 報警................................................177

4.4.1 SendEmail ..........................177

4.4.2 WebSocket .........................178

4.4.3 手機推送............................182

4.4.4 分級和歸併.......................183

第5 章 測試評估.......................................185

5.1 服務器性能測試.......................185

5.1.1 IOzone................................186

5.1.2Netperf................................189

5.1.3 pktgen.................................193

5.1.4 sysbench .............................194

5.2 應用性能測試............................197

5.2.1 http_load ............................197

5.2.2AB.......................................198

5.2.3 weighttp..............................201

5.3 分佈式測試環境.......................202

5.3.1 AutoBench .........................202

5.3.2 TCPCopy............................205

第6 章 集羣架構規劃.............................207

6.1 IDC 的規劃和選擇...................207

6.1.1 網站性質決定基礎面......207

6.1.2 IDC 廠商服務質量...........208

6.1.3 BGP 真僞的驗證..............209

6.2 CDN 規劃....................................213

6.2.1 CDN 原理..........................213

6.2.2 DNS 原理...........................214

6.2.3 DNS 查詢結構實現..........217

6.2.4 DNS 調度...........................223

6.2.5 其餘調度方法概述...........227

6.2.6 動態加速概述...................229

6.3 緩存設計......................................236

6.3.1 HTTP Header 對緩存的影響.....................................236

6.3.2 Squid 的LM-factor 過時算法.....................................239

6.3.3 squid 的ACL 控制...........241

6.3.4 Squid 的aufs/coss緩存引擎............................243

6.3.5 squidclient 的運用............245

6.3.6 使用SSD 提升性能.........250

6.4 本地負載均衡............................255

6.4.1 LVS 負載均衡原理...........255

6.4.2 keepalived 與VRRP 高可用原理............................263

6.4.3 Nginx 的upstream ............268

6.4.4 squid 的cache_peer..........272

第7 章 彈性控制和部署.........................274

7.1 配置集成的思想.......................274

7.1.1 抽象的集羣管理...............274

7.1.2 通用模式設計...................275

7.2 操做系統部署KickStart ........276

7.2.1 基本原理............................277

7.2.2 配置安裝............................278

7.3 應用部署與配置管理.............279

7.3.1 SSH::Batch ........................279

7.3.2Puppet.................................282

7.4 搭建私有軟件倉庫..................312

7.4.1 使用spec 文件構建RPM 包...............................312

7.4.2 命令行打包工具FPM .....322

7.4.3 yum 私有倉庫...................324

7.5 隨時控制成本............................324

7.5.1 CGroup 配置簡介.............324

7.5.2 內存限制............................328

7.5.3 CPU 共享限制..................330

7.5.4 CPU 綁定限制..................331

7.5.5 塊設備讀寫限制...............333

7.5.6 配合TC 完成網絡限速...335

7.6 關於雲計算.................................337

第8 章 分佈式文件系統........................339

8.1NFS.................................................339

8.1.1 原理....................................340

8.1.2 服務器端配置和優缺點.....................................341

8.1.3 客戶端參數優化...............343

8.1.4 丟包與網絡參數優化......346

8.2 簡單易用的FUSE 協議.........348

8.3 MogileFS......................................351

8.3.1 GFS 介紹...........................351

8.3.2 MogileFS 介紹..................353

8.3.3 MogileFS 內部原理..........356

8.3.4 安裝和配置.......................359

8.3.5 客戶端配置和使用...........363

第9 章 數據庫............................................368

9.1 MySQL 必知必會.....................368

9.1.1 常見SQL ...........................369

9.1.2 導入導出............................370

9.1.3 簡單配置調優...................371

9.2 慢查詢分析工具mysqlsla ....372

9.2.1 使用....................................372

9.2.2 結果分析............................373

9.3 Percona 工具集..........................374

9.3.1 備份恢復工具XtraBackup ........................374

9.3.2 在線運維工具箱Toolkit.................................376

9.3.3 監控插件集.......................379

9.4 監控工具......................................380

9.4.1 mytop 和innotop ..............380

9.4.2 orzdba.................................381

9.5 MySQL 集羣...............................384

9.5.1 MySQL 複製原理.............384

9.5.2 MHA 原理.........................386

9.5.3 MHA 安裝使用.................388

第10 章 備份與同步技術......................390

10.1 rsync.............................................390

10.1.1 原理..................................391

10.1.2 常見運用..........................393

10.2 inotify 和sersync 工具........396

10.2.1 inotify 概述和示例.........396

10.2.2 sersync 介紹....................397

10.2.3 sersync 配置用例............398

10.3 Netcat..........................................400

10.3.1 文件傳輸..........................400

10.3.2 端口掃描..........................401

10.3.3 遠程控制..........................401

10.4 P2P 傳輸網絡..........................402

10.4.1 P2P 協議概述..................403

10.4.2 BitTorrent 概述...............405

10.4.3 murder 部署和運用........406

第11 章 運維制度化與自管理............408

11.1 運維制度化...............................408

11.1.1 運維爲何要制度化..............................408

11.1.2 運維如何制度化.............409

11.1.3 SLA(Service Level Agreement)協議...........409

11.1.4 故障處理的五問法.........410

11.1.5 知識庫..............................413

11.1.6 流程跟蹤的Tracker系統..................................425

11.2 自管理.........................................431

11.2.1 時間管理..........................431

11.2.2 思惟導圖..........................433

11.2.3 Git 管理和應用...............434

11.2.4 交流與活動.....................445

做者簡介

資深運維:前後在世紀互聯雲快線和中華網負責運維工做,熱愛CDN並樂於嘗試一切能夠給互聯網用戶帶來便利和優質體驗的技術。

DevOps:現任人人公司網絡運營部高級研發工程師。專一自動化運維平臺的構建,活躍於Puppet和Logstash開源社區。

死理性摩羯座:比特幣大潮中依然堅持要寫程序實踐證券投資分析原理和時間序列數據預警原理。

Larry Wall:教徒推崇「懶惰、急躁和傲慢」三大程序員美德,並時時運用於運維工做中。同時熱衷於推廣以perltidy、Moo、AnyEvent和Plack爲表明的新一代Perl編程,參與組織了Perl中國用戶2013年度大會。

媒體評論

最先跟年年(饒琛琳)的認識和溝通一直都是在微博和他的博客上,他是我很尊重的技術思考者和實踐者。運維工做有時會被認爲是乏味且缺乏技術含量的,因缺少對必要知識的提綱挈領般的引導,不少運維同窗難以快速地掌握運維的門道,而只能在忙碌和無奈中徘徊。感謝年年同窗辛苦力做,將他廣博的運維知識和對技術的深度思考、實踐總結出來,深刻淺出地帶咱們走進運維的世界。

                                              王春生 (@平凡的香草)

新浪研發中心技術保障部高級技術經理

中大型網站的運維工做牽扯較多且細節繁雜,需從必定高度來解決應對。弄清問題本質、根據相關技術原理探尋適合的方案、設計開發對應的平臺系統和自動化工具,是資深運維人員的必備技能和目標追求。邊喝着咖啡邊把問題解決了或者由系統工具自動發現問題並修復,是理想的而且努力能夠達到的場景。琛琳在自動化運維相關領域實戰經驗豐富,成績斐然,本書是他多年工做的心血結晶,其中大量的代碼、配置片斷和軟件方案給想進一步提升的運維工程師提出了一些思想思考或者說指引了前進方向。推薦有志青年仔細學習研究本書,共同把自動化運維推向一個新高度。

                                                  張秀嶺 (windtear)

人人公司高級技術專家

讀完這本書,驚歎於做者陳子(饒琛琳)淵博的知識和無私的分享精神。這本書是浩瀚的互聯網技術知識海洋裏的一張地圖,每一章都像是一塊大陸,雖不能從地圖上看盡大陸的美麗風光,卻能在一張紙上教會咱們往哪裏走能夠到達目的地。更加難能難得的是,這本書介紹的思想、軟件和產品都是最新的,有着很是強的時效性和實用性。

                                           斯文(@小斯chinatopsquid)

百度系統部CDN資深研發工程師

做者在CDN和大中型網站運維方面有着很是豐富的經驗。本書成體系地講解了運維工做中能使用到的方方面面,其中不少技術細節和方案是其餘運維類技術書籍中不多提到的,看得出來都是做者多年實際經驗的總結,很是值得相關的用戶仔細研讀。書中CDN 方面的一些應用,更是目前市面上的技術書籍中難能難得的資料,值得研究和深刻了解。從全書總體也能夠看出做者出身於專業的 CDN 公司,由於像網站性能測試、日誌收集處理、存儲系統之類都是專業性很是強的。全書涉及知識點很是豐富,任何一個方面拿出來均可以單獨出版成書。

                                                                扶凱

音悅臺系統運營總監

前言

運維是一個古老但愈發新奇的職位。在不一樣時代、不一樣公司,都有不一樣的稱呼。在萬維網到來以前漫長的幾十年中,運維工做大都由系統自己的開發人員來完成,他們很自豪地給本身加上了系統管理者(System Administrator)的頭銜。隨着萬維網的出現和發展,計算機系統管理者中也就出現了專一於網站管理的人羣,這些人自稱爲網站管理者,至今咱們依然能夠在一些歷史悠久的軟件(好比Apache、Squid)的配置中,看到專門的指令來設定這個身份。與此同時,在互聯網的另外一端(接入端)——爲普及上網而大量出現的網吧和網城中,另外一批專一於網絡接入、局域網共享和桌面應用管理的人羣,則被稱爲「網吧管理員」。接入端緊緊佔據了絕大多數人對互聯網的第一印象,並將他們所能觸及的方面認定爲互聯網從業人員的所有,即軟件開發者和網絡管理者。

絕不諱言,筆者在五年前(大學畢業時),一樣以這種眼光看待本身「很熟悉」的這個互聯網。

那麼,除去接入端的網管,在互聯網的另外一端的管理者們究竟是什麼狀態呢?

先說看得見的一面:每次當你發現網頁變樣了,這說明網站管理者完成了一次應用發佈;每次你投訴訪問有問題並附上截圖,這意味着網站管理者要開始一次故障排查和修復;每次你以爲比上次訪問快一點了,這說明網站管理者已經悄悄結束了一次後臺優化……

再說看不見的一面:管理者盡力爲你提供優質的訪問體驗,也帶來指數級增加的新訪問者。一百萬、一千萬乃至更多,你們的訪問體驗都要同樣好,數據都要同樣可靠,甚至業大招賊後還要保護你們的信息不被竊取……這些問題的背後,都是網站管理者的工做。

正是因爲網站管理者與訪問者之間的頻繁交流,以及網站訪問數據對業務發展的支撐,慢慢地將管理者的職責從系統維護擴展到了運營相關的普遍領域,最終合二爲一成爲了「運維」,而這也是現代的專職的「網站運維」與「古代的」模糊化的「系統管理員」最重要的區別。在業內公推爲經典著做的Web Operations 一書中,甚至專門有第8 章「Community Management and Web Operations」來說述運維和用戶交流、社區管理相關的內容。

從上一代互聯網巨頭引伸出網站運維這個獨立的職位到如今,運維的職能依然在不斷細化和變化——網絡運維、系統運維、應用運維、數據庫運維,甚至更細分的CDN 運維和業務變動運維,都有專門的人員和團隊來負責。運維團隊甚至再也不僅僅是網站服務的支持方,還愈來愈以網站內部的技術需求方的角色出現,進行普遍而細心的考察,採起更激進的方法,從而提高網站的單位成本效益。

從大概一兩年前開始,另外一個新的概念「敏捷運維」(DevOps)跟隨雲計算的浪潮出現。從思想和理論上,目前對其依然沒有準確的定義,但從技術實質上,無非是在保證產品質量和訪問性能的前提下提升產品發佈的頻率,「自動化一切可自動化的工做」加上「充分了解業務流程」——而這原本就是一個優秀的運維人員應該去實現的事情!

瞭解業務流程是一件取決於我的偏好和公司文化的事情,雖然筆者在過去的工做經歷中見過很多比相應的開發負責人還了解業務的老運維人員,可是這方面確實很難說出太多能夠按部就班的道理,仍是讓咱們先掌握那些能夠幫助咱們「Laziness, Impatience and Hubris」(程序員的三大美德——懶惰、急躁和傲慢——出自Larry Wall的Programming Perl)地完成網站運維工做的技術吧!

饒琛琳
相關文章
相關標籤/搜索