Linux 高效運維實戰

高俊峰

  • Linux 高效運維實戰-preview-1
  • Linux 高效運維實戰-preview-2
Linux 高效運維實戰-preview-1

買這商品的人也買了...

商品描述

本書以實際生產環境為背景,以實操為主,系統、全面地講解了Linux運維人員必須掌握的運維知識。
通過本書,讀者不僅可以掌握必需的專業知識,還可具備實際解決問題的能力。
全書分為5篇,共有15章。
第1篇(第1~3章)是Web、數據庫運維篇,主要介紹了Web運維和數據庫運維的實戰技能。
第2篇(第4~5章)是運維監控篇,主要介紹了企業常用的運維監控工具。
第3篇(第6~8章)是集群架構篇,主要介紹了3款開源集群軟件。
第4篇(第9~11章)是線上服務器安全、調優、自動化運維篇,
主要講述生產環境中服務器的運維、調優、安全防範技巧。
第5篇(第12~15章)是虛擬化、大數據運維篇,主要講解了KVM、ELK和Hadoop等工具的相關知識。
本書適合希望系統、全面學習Linux運維技術的讀者閱讀,
也適合初/中級Linux運維人員、Linux系統運維工程師、大數據運維工程師、運維開發工程師等參考。

作者簡介

高俊峰

Linux資深技術專家,知名IT作家,51CTO專家博主,曾就職於新浪、阿里雲等企業,任職系統架構師;
具有多年的自動化運維和管理經驗,擅長Linux、集群架構、HADOOP大數據等方面的系統運維、
性能調優和規劃設計;暢銷圖書《循序漸進Linux》《高性能Linux服務器構建實戰》的作者。

目錄大綱

目錄
第1篇Web、數據庫運維篇
第1章高效Web服務器Nginx 2
1.1為什麼選擇Nginx 2
1.2安裝和配置Nginx 3
1.2.1安裝Nginx 3
1.2.2 Nginx配置文件解讀5
1.3 Nginx的管理與維護9
1.3.1 Nginx基本信息檢查9
1.3.2 Nginx的啟動、關閉與重啟10
1.4 Nginx常見應用實例11
1.4.1 Nginx中location應用實例11
1.4.2 Nginx反向代理應用實例12
1.4.3 Nginx中URL的重寫功能以及內置變量15
1.4.4 Nginx中虛擬主機配置實例19
1.4.5 Nginx中負載均衡的配置實例20
1.4.6 Nginx中HTTPS配置的實例21
1.5 LNMP應用架構以及部署25
1.5.1 LNMP簡介25
1.5.2 Nginx的安裝26
1.5.3 MySQL的安裝26
1.5.4 PHP的安裝30
1.5.5 Nginx下PHP-FPM的配置32
1.5.6測試LNMP安裝是否正常35
1.6 Nginx +Tomcat架構與應用案例36
1.6. 1 Nginx +Tomcat整合的必要性36
1.6.2 Nginx +Tomcat動靜分離配置實例37
1.6.3 Nginx +Tomcat多Tomcat負載均衡配置實例38

第2章高效Web服務器Apache 39
2.1 LAMP服務套件39
2.1.1 LAMP概述39
2.1.2 LAMP服務環境的搭建39
2.1.3測試LAMP環境安裝的正確性45
2.1.4在LAMP環境下部署phpMyAdmin工具45
2.1.5在LAMP環境下部署WordPress應用46
2.2 Apache的基礎配置48
2.2.1 Apache的目錄結構48
2.2.2 Apache配置文件49
2.3 Apache常見功能應用實例57
2.3.1 Apache下HTTPS配置實例57
2. 3.2反向代理功能實例58
2.4 Apache MPM模式與基礎調優62
2.4.1 MPM模式概述62
2.4.2 prefork MPM模式62
2.4.3 worker MPM模式63
2.4 .4 event MPM模式64
2.5 Apache集成Tomcat構建高效JAVA Web應用65
2.5.1 Apache與Tomcat整合的必要性66
2.5.2 Apache和Tomcat連接器66
2.5.3 Apache、Tomcat和JK模塊的安裝67
2.5.4 Apache與Tomcat整合配置68

第3章企業常見MySQL架構應用實戰74
3.1選擇Percona Server、MariaDB還是MYSQL 74
3.1. 1 MySQL官方發行版74
3.1.2 MySQL與存儲引擎74
3.1.3 Percona Server for MySQL分支75
3.1.4 MariaDB Server 75
3.1.5如何選擇75
3.2 MySQL命令操作76
3.2.1連接MySQL 76
3.2.2修改密碼76
3.2.3增加新用戶/授權用戶76
3.2.4數據庫基礎操作77
3.2.5 MySQL表操作78
3.2. 6備份數據庫79
3.3 MySQL備份恢復工具XtraBackup 80
3.3.1安裝XtraBackup工具包80
3.3.2 XtraBackup工具介紹81
3.3.3 xtrabackup備份恢復實現原理81
3.3.4 innobackupex工具的使用81
3.3.5利用innobackupex進行MySQL全備份82
3.3.6利用innobackupex完全恢復數據庫83
3.3.7 XtraBackup針對海量數據的備份優化84
3.3.8完整的MySQL備份恢復例子85
3.4常見的高可用MySQL解決方案86
3.4.1主從復制解決方案86
3.4 .2 MMM高可用解決方案86
3.4.3 Heartbeat/SAN高可用解決方案87
3.4.4 Heartbeat/DRBD高可用解決方案87
3.4.5 MySQL Cluster高可用解決方案87
3.5通過Keepalived搭建MySQL雙主模式的高可用集群系統87
3.5.1 MySQL Replication介紹88
3.5.2 MySQL Replication實現原理89
3.5.3 MySQL Replication常用架構89
3.5.4 MySQL主主互備模式架構圖90
3.5.5 MySQL主主互備模式配置91
3.5.6配置Keepalived實現MySQL雙主高可用95
3.5.7測試MySQL主從同步功能97
3.5.8測試Keepalived實現MySQL故障轉移99
3.6 MySQL集群架構MHA應用實戰100
3.6.1 MHA的概念和原理101
3.6.2 MHA套件的組成和恢復過程102
3.6.3安裝MHA套件102
3 .6.4配置MHA集群106
3.6.5測試MHA環境以及常見問題總結111
3.6.6啟動與管理MHA 113
3.6.7 MHA集群切換測試114
3.7 MySQL中間件ProxySQL 117
3.7.1 ProxySQL簡介117
3 .7.2 ProxySQL的下載與安裝117
3.7.3 ProxySQL的目錄結構118
3.7.4 ProxySQL庫表功能介紹118
3.7.5 ProxySQL的運行機制120
3.7.6在ProxySQL下添加與修改配置121
3.8 ProxySQL+MHA構建高可用MySQL讀寫分離架構123
3.8.1 ProxySQL+MHA應用架構123
3.8.2部署環境說明123
3.8.3配置後端MySQL 124
3 .8.4配置後端MySQL用戶124
3.8.5在ProxySQL中添加程序賬號125
3.8.6加載配置和變量125
3.8.7連接數據庫並寫入數據126
3.8.8定義路由規則126
3.8.9 ProxySQL整合MHA實現高可用128

第2篇運維監控篇
第4章運維監控利器Zabbix 130
4.1 Zabbix運行架構130
4.1.1 Zabbix應用組件131
4.1.2 Zabbix服務進程131
4.1.3 Zabbix監控術語132
4.2安裝、部署Zabbix監控平台133
4.2.1 LNMP環境部署134
4.2.2編譯安裝Zabbix Server 137
4.2 .3創建數據庫和初始化表138
4.2.4配置Zabbix Server端138
4.2.5安裝與配置Zabbix Agent 140
4.2.6安裝Zabbix GUI 141
4.2.7測試Zabbix Server監控144
4. 3 Zabbix Web配置詳解144
4.3.1模板的管理與使用144
4.3.2創建應用集145
4.3.3創建監控項146
4.3.4創建觸發器149
4.3.5創建主機組和主機152
4.3.6觸發器動作配置154
4.3.7報警媒介類型配置157
4.3.8監控狀態查看158
4.4 Zabbix自定義監控項160
4.4.1 Zabbix Agent端開啟自定義監控項功能160
4.4.2讓監控項接收參數160
4.5 Zabbix的主動模式與被動模式161
4.6自動發現與自動註冊162
4.7 Zabbix運維監控實戰案例168
4.7.1 Zabbix監控MySQL應用實戰168
4.7.2 Zabbix監控Apache應用實戰174
4.7.3 Zabbix監控Nginx應用實戰178
4.7.4 Zabbix監控PHP-FPM應用實戰182
4.7. 5 Zabbix監控Tomcat應用實戰188
4.7.6 Zabbix監控Redis實例應用實戰193

第5章分佈式監控系統Ganglia 201
5.1 Ganglia簡介201
5.2 Ganglia的組成201
5.3 Ganglia的工作原理203
5 .3.1 Ganglia數據流向分析203
5.3.2 Ganglia工作模式204
5.4 Ganglia的安裝204
5.4.1 yum源安裝方式204
5.4.2源碼方式205
5.5配置一個Ganglia分佈式監控系統207
5.5.1 Ganglia配置文件介紹207
5.5.2 Ganglia監控系統架構圖207
5.5.3 Ganglia監控管理端配置207
5.5.4 Ganglia的客戶端配置208
5.5 .5 Ganglia的Web端配置209
5.6 Ganglia監控系統的管理和維護210
5.7 Ganglia監控擴展實現機制211
5.7.1擴展Ganglia監控功能的方法211
5.7.2通過gmetric接口擴展Ganglia監控212
5.7.3通過Python插件擴展Ganglia監控213
5.7.4實戰:利用Python接口監控Nginx運行狀態214
5.8 Ganglia在實際應用中要考慮的問題217
5.8.1網絡IO可能存在瓶頸217
5.8.2 CPU可能存在瓶頸217
5.8.3 gmetad rrd數據寫入可能存在瓶頸217

第3篇集群架構篇
第6章高性能集群軟件Keepalived 220
6.1集群的定義220
6.2集群的特點與功能221
6.2.1高可用性與可擴展性221
6.2.2負載均衡與錯誤恢復221
6.2.3心跳檢測與漂移IP 221
6.3集群的分類222
6.3.1高可用集群222
6.3.2負載均衡集群223
6.3.3分佈式計算集群224
6 .4 HA集群中的相關術語225
6.5 Keepalived簡介225
6.5.1 Keepalived的用途226
6.5.2 VRRP協議與工作原理226
6.5.3 Keepalived工作原理227
6.5.4 Keepalived的體系結構227
6.6 Keepalived安裝與配置229
6.6.1 Keepalived的安裝過程229
6.6.2 Keepalived的全局配置230
6.6.3 Keepalived的VRRPD配置231
6.6.4 Keepalived的LVS配置234
6. 7 Keepalived基礎功能應用實例237
6.7.1 Keepalived基礎HA功能演示237
6.7.2通過VRRP_script實現對集群資源的監控243

第7章高性能負載均衡集群LVS 247
7.1 LVS簡介247
7. 2 LVS體系結構247
7.3 IP負載均衡與負載調度算法248
7.3.1 IP負載均衡技術249
7.3.2負載均衡機制249
7.3.3 LVS負載調度算法255
7.3.4適用環境256
7.4 LVS的安裝與使用256
7.4.1安裝IPVS管理軟件257
7.4.2 ipvsadm的用法257
7.5通過Keepalived搭建LVS高可用性集群系統258
7.5.1實例環境258
7.5.2配置Keepalived 259
7.5.3配置Real Server節點261
7.5.4啟動Keepalived+LVS集群系統263
7.6測試高可用LVS負載均衡集群系統263
7.6.1高可用性功能測試263
7.6.2負載均衡測試264
7.6.3故障切換測試264
7.7 LVS經常使用的集群網絡架構265
7.7.1內網集群,外網映射VIP 265
7.7.2全外網LVS集群環境266

第8章高性能負載均衡軟件HAProxy 268
8.1高性能負載均衡軟件HAProxy 268
8.1 .1 HAProxy簡介268
8.1.2四層和七層負載均衡的區別269
8.1.3 HAProxy與LVS的異同270
8.2 HAProxy基礎配置與應用實例270
8.2.1快速安裝HAProxy集群軟件271
8.2.2 HAProxy基礎配置文件詳解271
8.2.3通過HAProxy的ACL規則實現智能負載均衡277
8.2.4管理與維護HAProxy 279
8.2.5使用HAProxy的Web監控平台282
8.3搭建HAProxy+Keepalived高可用負載均衡系統283
8.3.1搭建環境描述283
8.3.2配置HAProxy負載均衡服務器284
8.3.3配置主、備Keepalived服務器286
8.4測試HAProxy +Keepalived高可用負載均衡集群289
8.4.1測試Keepalived的高可用功能289
8.4.2測試負載均衡功能290

第4篇線上服務器安全、調優、自動化運維篇
第9章線上服務器安全運維292
9.1賬戶和登錄安全292
9.1.1刪除特殊的賬戶和賬戶組292
9.1.2關閉系統不需要的服務293
9.1.3密碼安全策略294
9.1.4合理使用su、sudo命令299
9.1.5刪減系統登錄歡迎信息300
9.1.6禁止Control-Alt-Delete鍵盤關閉命令301
9.2遠程訪問和認證安全301
9.2.1採用SSH方式而非telnet方式遠程登錄系統301
9.2.2合理使用shell歷史命令記錄功能303
9.2.3啟用Tcp_Wrappers防火牆305
9.3文件系統安全307
9.3.1鎖定係統重要文件307
9.3.2文件權限檢查和修改309
9.3.3 /tmp、/var/tmp、/dev/shm安全設定309
9.4系統軟件安全管理311
9.4.1軟件自動升級工具yum 311
9.4.2 yum的安裝與配置311
9.4.3 yum的特點與基本用法313
9.4.4幾個不錯的yum源315
9.5 Linux後門入侵檢測與安全防護工具316
9.5.1 rootkit後門檢測工具RKHunter 317
9.5.2 Linux安全防護工具ClamAV的使用320
9.5.3 Linux.BackDoor.Gates.5(文件級別rootkit)網絡帶寬攻擊案例322
9.6服務器遭受攻擊後的處理過程326
9.6.1處理服務器遭受攻擊的一般思路326
9.6.2檢查並鎖定可疑用戶327
9.6. 3查看系統日誌328
9.6.4檢查並關閉系統可疑進程329
9.6.5檢查文件系統的完好性329
9.7雲服務器被植入挖礦病毒案例實錄以及Redis安全防範330
9.7 .1問題現象330
9.7.2分析問題331
9.7.3問題解決336
9.7.4深入探究Redis是如何被植入338

第10章線上服務器性能調優案例346
10.1線上Linux服務器基礎優化策略346
10.1.1系統基礎配置與調優346
10.1.2系統安全與防護策略351
10.1.3系統內核參數調優355
10.2系統性能調優規範以及對某電商平台優化分析案例358
10.2.1 CPU性能評估以及相關工具358
10.2.2內存性能評估以及相關工具360
10.2.3磁盤I/O性能評估以及相關工具361
10.2.4網絡性能評估以及相關工具363
10.2.5系統性能分析標準366
10.2.6動態、靜態內容結合的電商網站優化案例366
10.3一次Java進程佔用CPU過高問題的排查方法與案例分析376
10.3.1案例故障描述376
10.3.2 Java中進程與線程的概念377
10.3.3排查Java進程佔用CPU過高的思路378
10.3.4 Tomcat配置調優383
10.3.5 Tomcat Connector 3種運行模式(BIO、NIO、APR)的比較與優化385

第11章自動化運維工具Ansible 391
11.1 Ansible的安裝391
11.2 Ansible的架構與運行原理392
11.3 Ansible主機和組的配置394
11.4 ansible.cfg與默認配置396
11.5 Ad-Hoc與command模塊396
11.5.1 Ad-Hoc是什麼396
11.5.2 command模塊397
11.5.3 shell模塊398
11.5.4 raw模塊398
11.5.5 script模塊399
11.6 Ansible其他常用功能模塊399
11.6.1 ping模塊399
11.6.2 file模塊400
11.6.3 copy模塊401
11.6.4 service模塊402
11.6.5 cron模塊402
11.6.6 yum模塊403
11.6.7 user模塊與group模塊404
11.6.8 synchronize模塊405
11.6.9 setup模塊405
11.6.10 get_url模塊406
11.7 ansible-playbook簡單使用406
11.7.1劇本簡介406
11.7.2劇本文件的格式406
11.7.3劇本的構成407
11.7.4劇本執行結果解析408
11.7.5 ansible-playbook收集facts信息案例409
11.7.6兩個完整的ansible-playbook案例410

第5篇虛擬化、大數據運維篇
第12章KVM虛擬化技術與應用414
12.1 KVM虛擬化架構414
12.1.1 KVM與QEMU 414
12.1.2 KVM虛擬機管理工具414
12.1 .3宿主機與虛擬機415
12.2 VNC的安裝與使用415
12.2.1啟動VNC Server 415
12.2.2重啟VNC Server 415
12.2.3客戶端連接416
12.3查看硬件是否支持虛擬化416
12.4安裝KVM內核模塊和管理工具416
12.4.1安裝KVM內核417
12.4.2安裝virt管理工具417
12 .4.3加載KVM內核417
12.4.4查看內核是否開啟417
12.4.5 KVM管理工具服務相關417
12.5宿主機網絡配置418
12.5.1建立橋接器418
12.5. 2配置橋接設備418
12.5.3重啟網絡服務419
12.6使用KVM技術安裝虛擬機419
12.7虛擬機複製421
12.7.1本機複製421
12.7.2控制台管理虛擬機422
12.7.3虛擬機的遷移422
12.8 KVM虛擬化常用管理命令423
12.8.1查看KVM虛擬機配置文件及運行狀態423
12.8.2 KVM虛擬機開機423
12.8. 3 KVM虛擬機關機或斷電423

第13章ELK大規模日誌實時處理系統應用實戰426
13.1 ELK架構介紹426
13.1.1核心組成426
13.1.2 Elasticsearch介紹426
13.1.3 Logstash介紹427
13.1.4 Kibana介紹428
13.1.5 ELK工作流程428
13.2 ZooKeeper基礎與入門429
13.2.1 ZooKeeper概念介紹429
13.2.2 ZooKeeper應用舉例430
13.2.3 ZooKeeper工作原理430
13.2.4 ZooKeeper集群架構431
13.3 Kafka基礎與入門432
13.3.1 Kafka基本概念432
13.3.2 Kafka術語432
13.3.3 Kafka拓撲架構433
13.3.4主題與分區434
13.3.5生產者生產機制434
13.3.6消費者消費機制434
13.4 Filebeat基礎與入門435
13.4.1什麼是Filebeat 435
13.4.2 Filebeat架構與運行原理435
13.5 ELK常見應用架構436
13.5.1最簡單的ELK架構436
13.5.2典型ELK架構437
13.5.3 ELK集群架構438
13.6用ELK+Filebeat+Kafka+ZooKeeper構建大數據日誌分析平台438
13.6.1典型ELK應用架構439
13.6.2環境與角色說明439
13.6.3安裝JDK並設置環境變量440
13.6.4安裝並配置Elasticsearch集群441
13.6.5安裝並配置ZooKeeper集群450
13.6.6安裝並配置Kafka Broker集群452
13.6. 7安裝並配置Filebeat 457
13.6.8安裝並配置Logstash服務460
13.6.9安裝並配置Kibana展示日誌數據466
13.6.10調試並驗證日誌數據流向470
13.7 Logstash配置語法詳解472
13.7.1 Logstash基本語法組成472
13.7.2 Logstash輸入插件472
13.7.3 Logstash編碼插件(codec) 476
13.7.4 Logstash過濾插件477
13.7.5 Logstash輸出插件488
13 .8 ELK收集Apache訪問日誌實戰案例489
13.8.1 ELK收集日誌的幾種方式490
13.8.2 ELK收集Apache訪問日誌的應用架構490
13.8.3 Apache的日誌格式與日誌變量491
13.8.4自定義Apache日誌格式492
13.8.5驗證日誌輸出492
13.8.6配置Filebeat 493
13.8.7配置Logstash 494
13.8.8配置Kibana 496
13.9 ELK收集Nginx訪問日誌實戰案例498
13.9.1 ELK收集Nginx訪問日誌應用架構498
13.9.2 Nginx的日誌格式與日誌變量499
13.9.3自定義Nginx日誌格式500
13.9.4驗證日誌輸出501
13.9.5配置Filebeat 501
13.9.6配置Logstash 502
13.9.7配置Kibana 504
13.10通過ELK收集MySQL慢查詢日誌數據505
13.10.1開啟慢查詢日誌505
13.10.2慢查詢日誌分析509
13.10.3配置Filebeat收集MySQL慢查詢日誌510
13.10.4通過Logstash的grok插件過濾、分析MySQL配置日誌511
13.10.5通過Kibana創建MySQL慢查詢日誌索引513
13.11通過ELK收集Tomcat訪問日誌和狀態日誌515
13.11.1 Tomcat日誌解析515
13.11.2配置Tomcat的訪問日誌和運行狀態日誌516
13.11.3配置Filebeat 518
13.11.4通過Logstash的grok插件過濾、分析Tomcat配置日誌519
13.11.5配置Zabbix輸出並告警521
13.11.6通過Kibana平台創建Tomcat訪問日誌索引522

第14章高可用分佈式集群Hadoop部署全攻略524
14.1 Hadoop生態圈知識524
14.1.1 Hadoop生態概況524
14.1.2 HDFS 525
14.1.3 MapReduce(分佈式計算框架)離線計算525
14.1.4 HBase(分佈式列存數據庫) 525
14.1.5 ZooKeeper(分佈式協作服務) 526
14.1.6 Hive(數據倉庫) 526
14.1.7 Pig(ad-hoc腳本) 527
14.1.8 Sqoop(數據ETL/同步工具) 527
14.1.9 Flume(日誌收集工具) 527
14.1.10 Oozie(工作流調度器) 527
14.1.11 YARN(分佈式資源管理器) 527
14.1.12 Spark(內存DAG計算模型) 529
14.1.13 Kafka(分佈式消息隊列) 529
14.2 Hadoop的偽分佈式部署529
14.2.1 Hadoop發行版介紹529
14.2.2 CDH發行版本530
14.2.3 CDH與操作系統的依賴530
14.2.4偽分佈式安裝Hadoop 530
14. 2.5使用Hadoop HDFS命令進行分佈式存儲534
14.2.6在Hadoop中運行MapReduce程序534
14.3高可用Hadoop2.x體系結構535
14.3.1兩個NameNode的地位關係535
14.3.2通過JournalNode保持NameNode元數據的一致性535
14.3.3 NameNode的自動切換功能536
14.3.4高可用Hadoop集群架構536
14.3.5 JournalNode集群537
14.3.6 ZooKeeper集群538
14.4部署高可用的Hadoop大數據平台538
14.4.1安裝配置環境介紹539
14.4.2 ZooKeeper安裝過程539
14.4.3 Hadoop的安裝540
14.4.4分佈式Hadoop的配置542
14.5 Hadoop集群啟動過程548
14.5.1檢查各個節點的配置文件的正確性549
14.5.2啟動ZooKeeper集群549
14.5.3格式化ZooKeeper集群549
14.5.4啟動JournalNode 549
14.5.5格式化集群NameNode 550
14.5.6啟動主節點的NameNode服務550
14.5.7 NameNode主、備節點同步元數據550
14.5.8啟動備機上的NameNode服務551
14.5.9啟動ZKFC 551
14.5.10啟動DataNode服務552
14.5.11啟動ResourceManager和NodeManager服務552
14.5.12啟動HistoryServer服務552
14.6 Hadoop日常運維問題總結553
14.6 .1下線DataNode 553
14.6.2 DataNode磁盤出現故障554
14.6.3安全模式導致的錯誤555
14.6.4 NodeManager出現Java heap space 555
14.6.5 Too many fetch-failures錯誤555
14.6.6 Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-out錯誤555
14.6.7 java.net.NoRouteToHostException: No route to host錯誤556
14.6.8新增DataNode 556

第15章分佈式文件系統HDFS與分佈式計算YARN 558
15.1分佈式文件系統HDFS 558
15.1.1 HDFS結構與架構558
15.1.2名字節點工作機制559
15.1.3二級名字節點工作機制560
15.1.4 HDFS運行機制以及數據存儲單元(block) 561
15.1.5 HDFS寫入數據流程解析562
15.1.6 HDFS讀取數據流程解析563
15.2 MapReduce與YARN的工作機制564
15.2.1第一代Hadoop組成與結構564
15.2 .2第二代Hadoop組成與結構566