天天看點

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

<b>前  言</b>

為什麼要寫這本書

《運維前線:一線運維專家的運維方法、技巧與實踐》(以下簡稱《運維前線》)是前線系列的一個子集,前線系列圖書的出版理念是邀請多位業界專家,總結所在行業的最新理念或深度實踐經驗。前線系列圖書不同于市面上的很多圖書,這類書并不系統,有的隻是一線專家的實戰經驗,人們常稱之為“幹貨”。一篇文章、一家公司、一個案例、一個場景,獨立成篇,在滿足碎片化閱讀的同時,也能讓讀者進行橫向比較和深入思考。本系列圖書不強調大而全,追求的是每篇文章都是精品,希望能給讀者帶來深度的啟發和收獲。

按照這個理念,之前著名産品經理蘭軍(筆名blues)策劃的《産品前線》,出版之後大獲成功,随之而來的《運維前線》令我感覺到壓力巨大。《運維前線》的出版猶如十月懷胎,中間充滿波折,好幾次我都以為要半途而廢了,最後終于得以出版,在此要特别感謝機械工業出版社華章公司著名出版人楊福川,是他的堅持和鼓勵讓我總能在迷茫中看到希望。我和福川有共同的理念,希望把《運維前線》做成精品,如果有哪點不符合要求,那麼我們甯願耗時長一些,多打磨打磨,很慶幸能與福川一起合作。

本書共有14位作者,包含了在騰訊、yy語音、uc、京東、盛大遊戲、金山西山居、獵豹移動、廣發銀行、優維科技等多家公司工作的實踐經驗,基本覆寫了網際網路和傳統行業運維的各個領域,估計這是迄今為止第一本由這麼多資深運維專家聯合寫成的圖書,也是第一本分享了衆多一線運維專家親身實踐的圖書。本書的出版也充分展現了網際網路開放合作的精神。

看到本書的目錄時,我激動不已,即使書中的内容我已經看了好多遍,但是在回顧目錄的時候,我依然感到這是一本非常有吸引力的書,是一本每名運維工程師都應該案頭常備的書!

本書特色

目前it領域的概念層出不窮,雲計算、物聯網、移動網際網路、大資料、人工智能、vr,所有的這一切都基于it系統,it系統正在向規模更大、更複雜、更進階的方向演進,一切it資源都掌握在運維手裡,通過運維來操作。這個時代對運維的要求越來越高,運維如果稍有不慎,就會造成重大的損失,是以随着it系統的發展,運維的重要性也越來越高。

根據量子力學理論,世界由基本粒子組成,是以世界是不連續的,這個理論在運維知識體系的建立上同樣适用。仔細回想一下自己運維體系的建立,就是逐個攻克和掌握知識點,再進一步通過實踐不斷加深的過程。《運維前線》也是這樣,其中的每一篇文章都能夠協助讀者更快地掌握一個或多個知識點,相信通過運維前線系列的逐漸出版,最終能夠覆寫更多的運維知識點,為讀者帶來更多的實踐經驗和理念。

作為運維前線系列的第一本書,本書覆寫了運維自動化、系統運維、雲及虛拟化、web運維、遊戲運維、dba運維等6個方面14個知識點,都是各位作者總結自己多年實踐經驗的幹貨,每一篇文章都很精彩,都值得讀者仔細品味。

本書作者

本書第1章“自動化運維之深度解碼”,來自訂閱号“網際網路運維雜談”的作者、優維科技創始人王津銀,人稱“老王”。我在多個場合聽過“老王”的分享,有40分鐘的,也有長達3個小時的,令我驚訝的是,“老王”每次總能帶來新的東西。這篇“自動化運維之深度解碼”也是如此,凝結了老王許多最新的見解,值得深讀。

胥峰是我在盛大遊戲的前同僚,從胥峰身上我學到了不少知識,比如解決問題的思路和方法,有時候碰到運維難題,也許換一個角度就能迎刃而解。

劉宇、尹會生、陳立軍是我多年的同僚。劉宇、會生已經出版了多本運維圖書,他們都是非常資深的運維專家。劉宇無論演講還是文章都邏輯清晰,絲絲入扣。會生和立軍分享的都是我親眼所見的、在工作中碰到的難題及解決方法。

張觀石是歡聚時代(yy)互娛事業部業務運維負責人,有多年的将php運用到日常運維中的經驗。觀石将php用到了極緻,即使不懂php,也可以通過本書一窺觀石在運維方面的豐富經驗。

馬亮有多年的遊戲運維經驗,目前在騰訊雲專注做遊戲雲的架構設計,對遊戲運維有深刻的了解。

本書的作者還有冉宏元(老男孩)、餘洪春(撫琴煮酒)、吳傳玉、彭華盛、蔣迪、趙旻、趙海軍。雖然我與他們未曾謀面,但是彼此都是熟悉的網友,他們的文章我都曾仔細拜讀并多次請教過,其中的運維思想讓我深深折服,非常期待能有機會向他們當面請教。

讀者對象

本書面向所有的運維工程師,無論是資深運維,還是剛入行的運維,相信都能從本書中獲益。本書的讀者對象包括如下幾類:

系統運維工程師

安全工程師

資料庫運維工程師

業務運維工程師

網絡運維工程師

運維系統開發工程師及架構師

雲計算/虛拟化運維工程師

其他對運維感興趣的讀者

勘誤和支援

由于作者的水準有限,編寫時間比較倉促,書中難免會出現一些錯誤或不準确的地方,懇請讀者批評指正。如果您有更多寶貴的意見,歡迎關注我的訂閱号“雲技術實踐”,然後在背景将您的寶貴意見發送給我。本書的勘誤也會通過訂閱号進行釋出,關注訂閱号請掃描下面的二維碼:

“運維前線”是一個系列,歡迎在平時工作中積累了實戰經驗的廣大運維工程師繼續參與“運維前線”的寫作,帶來更多的幹貨分享!

期待能夠得到你們的真摯回報,在運維之路上互勉共進。

緻謝

從開始構思到《運維前線》的出版,本書的創作過程猶如十月懷胎,期間也獲得了無數的支援與肯定。借此機會,向所有為此奉獻力量的人表示深深的感謝。

感謝參與本書寫作的14位行業專家,他們在百忙之中伏案寫作,将自己的經驗共享給廣大讀者。能夠和你們合作,我深感榮幸,經過将近一年時間的溝通和交流,你們的專業和執着深深地打動了我,同時也讓我學到了不少東西。

感謝機械工業出版社華章公司的首席策劃楊福川,編輯高婧雅、孫海亮。在近一年的時間中,你們的敬業精神不斷地鼓舞着我前進,你們的鼓勵、幫助和堅持引導了本書的完成。

這裡,我還要特别感謝七牛雲。七牛雲是我見過的最具技術氣質的雲服務企業,肩負“幫助開發者縮短從想法到産品的距離”的使命,立志打造以資料為核心的場景化paas服務。七牛雲主張技術共享并熱衷于技術的傳播,發起架構師實踐日,推出各類創業扶持計劃,這些都是七牛雲正在做的事。

特别緻謝

本書在成書過程中,得到了一批熱心志願者的協助,他們是陳家豪、曹學朋、鄧榮興、劉海文、李斯朗、韓海林,尤其劉海文做了大量的義務工作,在此特别感謝!

肖 力

志願者的話

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

劉海文

目  錄

推薦序

前 言

第1章 自動化運維之深度解碼  

<a href="https://yq.aliyun.com/articles/82679/" target="_blank">1.1 概述  </a>

<a href="https://yq.aliyun.com/articles/82681/" target="_blank">1.2 運維自動化的三重境界  </a>

<a href="https://yq.aliyun.com/articles/82684/" target="_blank">1.3 運維自動化的困境和價值 </a>

<a href="https://yq.aliyun.com/articles/82686" target="_blank">1.4 運維自動化的多元解讀</a>

<a href="https://yq.aliyun.com/articles/82687/" target="_blank">1.5 運維自動化的方法論  </a>

<a href="https://yq.aliyun.com/articles/82688/" target="_blank">1.6 運維自動化系統的實作 </a>

<a href="https://yq.aliyun.com/articles/82689/" target="_blank">1.7 運維自動化系統的api參考實作  </a>

<a href="https://yq.aliyun.com/articles/82690/" target="_blank">1.8 運維自動化依賴的團隊模型  </a>

<a href="https://yq.aliyun.com/articles/82691/" target="_blank">1.9 小結  </a>

第2章 利用facter和django快速建構cmdb  

<a href="https://yq.aliyun.com/articles/82693" target="_blank">2.2 開源cmdb介紹  </a>

<a href="https://yq.aliyun.com/articles/82694/" target="_blank">2.3 puppet及facter介紹  </a>

<a href="https://yq.aliyun.com/articles/82696/" target="_blank">2.5 使用django快速建構cmdb系統  </a>

<a href="https://yq.aliyun.com/articles/82697/" target="_blank">2.6 進階進階  </a>

<a href="https://yq.aliyun.com/articles/82698/" target="_blank">2.7 小結  </a>

第3章 資料中心搬遷中的x86自動化運維  

<a href="https://yq.aliyun.com/articles/82699/" target="_blank">3.1 資料中心搬遷準備  </a>

<a href="https://yq.aliyun.com/articles/82701" target="_blank">3.3 利用批處理與shell腳本簡化邏輯節點的搬遷</a>

<a href="https://yq.aliyun.com/articles/82702/" target="_blank">3.4 小結 </a>

第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