开源 java centos 程序员 google Python 微软 Ubuntu Windows linux apache 编程 云计算 wordpress mysql nginx Firefox shell Android php

運維前線:一線運維專家的運維方法、技巧與實踐導讀

為什麽要寫這本書
《運維前線:一線運維專家的運維方法、技巧與實踐》(以下簡稱《運維前線》)是前線系列的一個子集,前線系列圖書的出版理念是邀請多位業界專家,總結所在行業的最新理念或深度實踐經驗。前線系列圖書不同於市面上的很多圖書,這類書並不系統,有的只是一線專家的實戰經驗,人們常稱之為“幹貨”。一篇文章、一家公司、一個案例、一個場景,獨立成篇,在滿足碎片化閱讀的同時,也能讓讀者進行橫向比較和深入思考。本系列圖書不強調大而全,追求的是每篇文章都是精品,希望能給讀者帶來深度的啟發和收獲。
按照這個理念,之前著名產品經理蘭軍(筆名Blues)策劃的《產品前線》,出版之後大獲成功,隨之而來的《運維前線》令我感覺到壓力巨大。《運維前線》的出版猶如十月懷胎,中間充滿波折,好幾次我都以為要半途而廢了,最後終於得以出版,在此要特別感謝機械工業出版社華章公司著名出版人楊福川,是他的堅持和鼓勵讓我總能在迷茫中看到希望。我和福川有共同的理念,希望把《運維前線》做成精品,如果有哪點不符合要求,那麽我們寧願耗時長一些,多打磨打磨,很慶幸能與福川一起合作。
本書共有14位作者,包含了在騰訊、YY語音、UC、京東、盛大遊戲、金山西山居、獵豹移動、廣發銀行、優維科技等多家公司工作的實踐經驗,基本覆蓋了互聯網和傳統行業運維的各個領域,估計這是迄今為止第一本由這麽多資深運維專家聯合寫成的圖書,也是第一本分享了眾多一線運維專家親身實踐的圖書。本書的出版也充分體現了互聯網開放合作的精神。
看到本書的目錄時,我激動不已,即使書中的內容我已經看了好多遍,但是在回顧目錄的時候,我依然感到這是一本非常有吸引力的書,是一本每名運維工程師都應該案頭常備的書!
本書特色
當前IT領域的概念層出不窮,雲計算、物聯網、移動互聯網、大數據、人工智能、VR,所有的這一切都基於IT系統,IT系統正在向規模更大、更復雜、更高級的方向演進,一切IT資源都掌握在運維手裏,通過運維來操作。這個時代對運維的要求越來越高,運維如果稍有不慎,就會造成重大的損失,所以隨著IT系統的發展,運維的重要性也越來越高。
根據量子力學理論,世界由基本粒子組成,因此世界是不連續的,這個理論在運維知識體系的建立上同樣適用。仔細回想一下自己運維體系的建立,就是逐個攻克和掌握知識點,再進一步通過實踐不斷加深的過程。《運維前線》也是這樣,其中的每一篇文章都能夠協助讀者更快地掌握一個或多個知識點,相信通過運維前線系列的逐步出版,最終能夠覆蓋更多的運維知識點,為讀者帶來更多的實踐經驗和理念。
作為運維前線系列的第一本書,本書覆蓋了運維自動化、系統運維、雲及虛擬化、Web運維、遊戲運維、DBA運維等6個方面14個知識點,都是各位作者總結自己多年實踐經驗的幹貨,每一篇文章都很精彩,都值得讀者仔細品味。
本書作者
本書第1章“自動化運維之深度解碼”,來自訂閱號“互聯網運維雜談”的作者、優維科技創始人王津銀,人稱“老王”。我在多個場合聽過“老王”的分享,有40分鐘的,也有長達3個小時的,令我驚訝的是,“老王”每次總能帶來新的東西。這篇“自動化運維之深度解碼”也是如此,凝結了老王許多最新的見解,值得深讀。
胥峰是我在盛大遊戲的前同事,從胥峰身上我學到了不少知識,比如解決問題的思路和方法,有時候碰到運維難題,也許換一個角度就能迎刃而解。
劉宇、尹會生、陳立軍是我多年的同事。劉宇、會生已經出版了多本運維圖書,他們都是非常資深的運維專家。劉宇無論演講還是文章都邏輯清晰,絲絲入扣。會生和立軍分享的都是我親眼所見的、在工作中碰到的難題及解決方法。
張觀石是歡聚時代(YY)互娛事業部業務運維負責人,有多年的將PHP運用到日常運維中的經驗。觀石將php用到了極致,即使不懂PHP,也可以通過本書一窺觀石在運維方面的豐富經驗。
馬亮有多年的遊戲運維經驗,目前在騰訊雲專註做遊戲雲的架構設計,對遊戲運維有深刻的理解。
本書的作者還有冉宏元(老男孩)、余洪春(撫琴煮酒)、吳傳玉、彭華盛、蔣迪、趙旻、趙海軍。雖然我與他們未曾謀面,但是彼此都是熟悉的網友,他們的文章我都曾仔細拜讀並多次請教過,其中的運維思想讓我深深折服,非常期待能有機會向他們當面請教。
讀者對象
本書面向所有的運維工程師,無論是資深運維,還是剛入行的運維,相信都能從本書中獲益。本書的讀者對象包括如下幾類:
系統運維工程師
安全工程師
數據庫運維工程師
業務運維工程師
網絡運維工程師
運維系統開發工程師及架構師
雲計算/虛擬化運維工程師
其他對運維感興趣的讀者
勘誤和支持
由於作者的水平有限,編寫時間比較倉促,書中難免會出現一些錯誤或不準確的地方,懇請讀者批評指正。如果您有更多寶貴的意見,歡迎關註我的訂閱號“雲技術實踐”,然後在後臺將您的寶貴意見發送給我。本書的勘誤也會通過訂閱號進行發布,關註訂閱號請掃描下面的二維碼:

“運維前線”是一個系列,歡迎在平時工作中積累了實戰經驗的廣大運維工程師繼續參與“運維前線”的寫作,帶來更多的幹貨分享!
期待能夠得到你們的真摯反饋,在運維之路上互勉共進。
致謝
從開始構思到《運維前線》的出版,本書的創作過程猶如十月懷胎,期間也獲得了無數的支持與肯定。借此機會,向所有為此奉獻力量的人表示深深的感謝。
感謝參與本書寫作的14位行業專家,他們在百忙之中伏案寫作,將自己的經驗共享給廣大讀者。能夠和你們合作,我深感榮幸,經過將近一年時間的溝通和交流,你們的專業和執著深深地打動了我,同時也讓我學到了不少東西。
感謝機械工業出版社華章公司的首席策劃楊福川,編輯高婧雅、孫海亮。在近一年的時間中,你們的敬業精神不斷地鼓舞著我前進,你們的鼓勵、幫助和堅持引導了本書的完成。
這裏,我還要特別感謝七牛雲。七牛雲是我見過的最具技術氣質的雲服務企業,肩負“幫助開發者縮短從想法到產品的距離”的使命,立誌打造以數據為核心的場景化PaaS服務。七牛雲主張技術共享並熱衷於技術的傳播,發起架構師實踐日,推出各類創業扶持計劃,這些都是七牛雲正在做的事。
特別致謝
本書在成書過程中,得到了一批熱心誌願者的協助,他們是陳家豪、曹學朋、鄧榮興、劉海文、李斯朗、韓海林,尤其劉海文做了大量的義務工作,在此特別感謝!

肖 力
誌願者的話
能在力哥組織的這本書中擔任助理,我感到非常榮幸。本書出自一群經驗老到並樂於分享的運維前輩之手,是一本案頭必備的好書。

劉海文


目  錄
推薦序
前 言
第1章 自動化運維之深度解碼  
1.1 概述  
1.2 運維自動化的三重境界  
1.3 運維自動化的困境和價值 
1.4 運維自動化的多維解讀
1.5 運維自動化的方法論  
1.6 運維自動化系統的實現 
1.7 運維自動化系統的API參考實現  
1.8 運維自動化依賴的團隊模型  
1.9 小結  
第2章    利用Facter和Django快速構建CMDB  
2.1 CMDB簡介  
2.2 開源CMDB介紹  
2.3 Puppet及Facter介紹  
2.4 如何利用Python獲取Facts  
2.5    使用Django快速構建CMDB系統  
2.6 高級進階  
2.7 小結  
第3章    數據中心搬遷中的x86自動化運維  
3.1 數據中心搬遷準備  
3.2    利用VMware腳本簡化虛擬化層的搬遷  
3.3 利用批處理與Shell腳本簡化邏輯節點的搬遷
3.4 小結 
第4章    集中配置管理工具Puppet  88
4.1    如何同步puppet-agent端上的常用服務  89
4.2    如何在puppet-agent端上自動安裝常用的軟件包  90
4.3    如何自動同步puppet-agent端的yum源  90
4.4    如何根據不同名字的節點機器推送不同的文件  92
4.5    如何根據節點機器名來選擇性地執行Shell程序  95
4.6    如何快速同步puppet-server端的www目錄文件  97
4.7    如何利用ERB模板自動配置Apache虛擬主機  102
4.8    如何利用ERB模板自動配置Nginx虛擬主機  105
4.9 小結  110
第5章    深度實踐iptables  111
5.1 禁用連接追蹤  111
5.1.1 排查連接追蹤導致的故障  111
5.1.2 分析連接追蹤的原理  113
5.1.3 禁用連接追蹤的方法  114
5.1.4 確認禁用連接追蹤的效果  117
5.2 慎重禁用ICMP協議  117
5.2.1    禁用ICMP協議導致的一則故障案例  117
5.2.2 MTU發現的原理  119
5.2.3 解決問題的方法  121
5.3 網絡地址轉換在實踐中的案例  121
5.3.1 源地址NAT  121
5.3.2 目的地址NAT  122
5.4    深入理解iptables的各種表和各種鏈  123
5.5 小結  125
第6章    使用systemd管理Linux系統服務  126
6.1 systemd和sysVinit之間的關系  126
6.1.1 sysVinit方式下系統的啟動    特點  127
6.1.2 systemd方式下系統的啟動    特點  127
6.2 systemd的原理和啟動順序  128
6.2.1 sysVinit的啟動順序  128
6.2.2 systemd的啟動順序  130
6.3 systemd的進程控制命令  135
6.3.1 systemctl命令  136
6.3.2 hostnamectl命令  136
6.3.3 localectl命令  137
6.3.4 loginctl命令  137
6.3.5 timedatectl命令  138
6.4 systemd服務管理  138
6.4.1    編寫Nginx的sysVinit啟動腳本  138
6.4.2    編寫Nginx的systemd啟動腳本  140
6.4.3 systemd的其他功能  142
6.5 優化  146
6.5.1    使用systemd-analyze優化啟動時間  146
6.5.2 使用systemd journal功能  148
6.6 小結  148
第7章    PHP運維實踐  149
7.1 PHP再認識  150
7.1.1 PHP進程的工作方式  150
7.1.2 PHP代碼的編譯和部署  151
7.1.3 PHP內部實現和生命周期  151
7.1.4 PHP在互聯網技術棧的位置  152
7.2    PHP開發、架構、運維問題及解決思路  153
7.2.1 運維對PHP研發提要求  153
7.2.2    運維參與PHP項目架構設計  154
7.2.3    PHP運維常見問題及解決之道  156
7.3 PHP進程部署和配置、代碼發布  157
7.3.1 PHP進程的部署  157
7.3.2 PHP配置文件變更  161
7.3.3 PHP配置項  162
7.3.4    PHP進程部署及配置文件管理實踐  164
7.3.5 PHP代碼發布  165
7.3.6    PHP代碼發布實踐:代碼發布系統  167
7.4 PHP性能分析  170
7.4.1 性能問題概述  170
7.4.2 PHP性能問題  171
7.4.3 性能分析方法  172
7.4.4    PHP性能分析實踐:性能分析系統  181
7.5 PHP故障處理與監控  182
7.5.1 PHP故障分類及處理思路  183
7.5.2 業務監控和故障發現  184
7.5.3 PHP故障消除的方法  186
7.5.4 故障分析案例  187
7.6 小結  189
第8章    應用系統運行分析  190
8.1 分析模型  191
8.1.1 數據采集  191
8.1.2 數據模型  194
8.2 運行分析平臺建設  199
8.2.1 數據采集接口  199
8.2.2 數據分析模塊  200
8.2.3 推廣  200
8.3 呼叫中心系統運行分析示例  201
8.3.1 確定分析方案  201
8.3.2 問題分析案例介紹  202
8.4 小結  203
第9章    虛擬化中存儲配置典型場景:啟動風暴  204
9.1 oVirt虛擬化平臺配置介紹  205
9.1.1 存儲配置背景知識  205
9.1.2 模板與實例同一存儲  206
9.1.3 模板與實例分離存儲  207
9.1.4    無狀態實例的硬盤與快照分離存儲  207
9.2 啟動風暴相關系列實驗  208
9.2.1 模板配置  208
9.2.2 實驗腳本  208
9.2.3    WD 1TB機械硬盤啟動Windows XP實驗  210
9.2.4    Intel 480GB SSD啟動WindowsXP實驗  212
9.2.5 實驗結論  214
9.3    私有雲中處理啟動風暴的常用方法  214
9.3.1 啟動排隊  214
9.3.2 存儲分層選擇  215
9.3.3    其他提升桌面雲存儲性能的方式  217
9.4 小結  219
第10章    私有雲桌面網絡組建  220
10.1 桌面雲常用網絡  220
10.1.1 NAT網絡  220
10.1.2 橋接網絡  223
10.1.3 VLAN網絡  226
10.1.4 Access模式  226
10.1.5 Trunk模式  229
10.1.6 Open vSwitch  231
10.2  oVirt/OpenStack的桌面網絡應用  232
10.2.1 oVirt/OpenStack組網方式  232
10.2.2 應用場景舉例  237
10.3 小結  239
第11章    淺談服務器交付的那些事兒  240
11.1 設備簽收的學問  240
11.2 服務器設置  241
11.3 Cobbler的流程與規劃  244
11.4 服務器安裝時遇到的各種坑  247
11.4.1    DHCP客戶端獲取ip地址失敗  247
11.4.2 tftp加載失敗  248
11.4.3 TFTP Client交互後 無響應  248
11.4.4 yum安裝失敗  249
11.4.5    Linux內核無法識別新硬件  250
11.4.6    惡意PXE啟動導致原有系統被誤裝  250
11.5 交接後的故事  250
11.6 小結  252
第12章    企業級Nginx Web服務優化實戰  254
12.1 Nginx基本安全優化  254
12.1.1    調整參數隱藏Nginx軟件版本號信息  254
12.1.2 更改源碼隱藏Nginx軟件名及版本號  256
12.1.3    更改Nginx服務的默認用戶  259
12.2  根據參數優化Nginx服務性能  260
12.2.1    優化Nginx服務的worker進程個數  260
12.2.2    優化綁定不同的Nginx進程到不同的CPU上  262
12.2.3 Nginx事件處理模型優化  265
12.2.4    調整Nginx單個進程允許的客戶端最大連接數  266
12.2.5    配置Nginx worker進程的最大打開文件數  267
12.2.6    優化服務器域名的散列表大小  267
12.2.7 開啟高效文件傳輸模式  269
12.2.8    優化Nginx連接參數,調整連接超時時間  269
12.2.9    上傳文件大小的限制(動態應用)  272
12.2.10     FastCGI相關參數調優(配合PHP引擎動態服務)  273
12.2.11     配置Nginx gzip壓縮實現性能優化  277
12.2.12     配置Nginx expires緩存實現性能優化  279
12.3 Nginx日誌相關的優化與安全  283
12.3.1    編寫腳本實現Nginx access日誌輪詢  283
12.3.2    不記錄不需要的訪問日誌  284
12.3.3 訪問日誌的權限設置  284
12.4    Nginx站點目錄及文件URL訪問控制  284
12.4.1    根據擴展名限制程序和文件訪問  284
12.4.2    禁止訪問指定目錄下的所有文件和目錄  285
12.4.3 限制網站來源IP訪問  286
12.4.4    配置Nginx,禁止非法域名解析訪問企業網站  287
12.5    Nginx圖片及目錄防盜鏈解決方案  288
12.6 Nginx錯誤頁面的優雅顯示  295
12.6.1    生產環境中常見的HTTP狀態碼列表  295
12.6.2    為什麽要配置錯誤頁面優雅顯示  295
12.7    Nginx站點目錄文件及目錄權限優化  298
12.8 Nginx防爬蟲優化  300
12.9    利用Nginx限制HTTP的請求方法  302
12.10 使用CDN做網站內容加速  302
12.10.1 什麽是CDN  302
12.10.2 CDN的特點  303
12.10.3 企業使用CDN的基本 要求  304
12.11 Nginx程序架構優化  304
12.12 使用普通用戶啟動Nginx(監牢模式)  305
12.12.1 為什麽要讓Nginx服務使用普通用戶  305
12.12.2 給Nginx服務降權的解決方案  305
12.12.3 給Nginx服務降權實戰  306
12.13 控制Nginx並發連接數量  308
12.14 控制客戶端請求Nginx的速率  312
12.15 小結  314
第13章 遊戲運維的思考  315
13.1 遊戲運維最關鍵的幾件事  315
13.1.1 安全  315
13.1.2 穩定  318
13.1.3 高效  322
13.1.4 成本節約  323
13.2 遊戲運維人的發展  325
13.3 小結  326
第14章 數據庫平臺建設實戰  327
14.1 規範建立  327
14.1.1 安裝規範  328
14.1.2 配置規範  329
14.1.3 賬號、權限規範  335
14.1.4 目錄規範  336
14.1.5 其他規範  337
14.2 架構設計  339
14.2.1 架構圖  339
14.2.2 各個模塊介紹  340
14.3 功能介紹與實踐  341
14.3.1 操作部分  341
14.3.2 日誌部分  349
14.3.3 資產部分  351
14.3.4 信息展示  353
14.3.5 入口(LVS/Redir)  354
14.4 後期功能展望  357
14.5 小結  357
附錄A 求職者與面試官  358
 

延伸阅读

    评论