《Kong入門與實戰:基於Nginx和OpenResty的雲原生微服務網關》是人民郵電出版社出版的圖書,作者是閆觀濤
基本介紹
- 作者:閆觀濤
- 出版社:人民郵電出版社
- 出版時間:2021年2月
- 頁數:388 頁
- 定價:109 元
- 裝幀:平裝
- ISBN:9787115554901
內容簡介,圖書目錄,
內容簡介
本書是一本關於雲原生微服務網關Kong的入門與實戰的書,內容全面務實、由淺入深,幾乎涵蓋Kong相關的所有知識點。全書共12章,包括Kong的基礎知識點概述、安裝和基本概念、管理運維、基本功能、配置詳解、Lua語言、日誌收集與分析、指標監控與報警、Kong的高級進階、內置外掛程式與自定義外掛程式、高級案例實戰。本書配有大量的實戰示例,尤其是第12章的九大新穎場景案例,使讀者從理論到實戰學以致用。 本書適合軟體開發人員、測試人員、運維人員、安全人員、架構師、技術經理等IT資深人士閱讀。 閆觀濤 架構師,Kong項目貢獻者,擁有多年IT行業從業經驗,目前就職於北森雲計算股份有限公司,專注於雲原生分散式SaaS/PaaS系統的架構和研發,擁有多項國家發明專利。
圖書目錄
第1章 基礎知識點概述 1
1.1 網關 1
1.2 微服務 1
1.3 Nginx 2
1.4 OpenResty 3
1.5 Kong 5
1.6 Kong的外掛程式 5
1.7 服務格線 7
1.8 小結 8
第2章 Kong的安裝和基本概念 9
2.1 Kong的安裝部署 9
2.1.1 環境介紹 10
2.1.2 直接安裝 10
2.1.3 容器安裝 10
2.1.4 Kubernetes安裝 11
2.2 Kong資料庫的安裝部署 11
2.2.1 PostgreSQL 11
2.2.2 Cassandra 12
2.2.3 DB-less 12
2.3 Kong基礎配置 15
2.4 Kong的啟動和停止 16
2.5 Kong的基礎對象 17
2.5.1 路由 18
2.5.2 服務 19
2.5.3 上游 20
2.5.4 目標 22
2.5.5 消費者 22
2.5.6 外掛程式 22
2.5.7 證書 24
2.5.8 SNI 24
2.5.9 對象之間的關係 24
2.6 小結 26
第3章 Kong的管理運維 27
3.1 Konga介紹 27
3.2 源碼安裝 28
3.2.1 安裝Git和Node.js 28
3.2.2 安裝Konga 28
3.2.3 配置Konga 28
3.2.4 啟動Konga 29
3.3 容器安裝 29
3.4 連線Konga與Kong 30
3.5 Konga模組與功能 31
3.5.1 首頁儀錶盤 32
3.5.2 集群節點信息 33
3.5.3 服務管理 34
3.5.4 路由管理 36
3.5.5 消費者管理 36
3.5.6 外掛程式管理 38
3.5.7 上游管理 39
3.5.8 目標節點管理 39
3.5.9 證書管理 40
3.5.10 用戶管理 41
3.5.11 快照管理 41
3.5.12 系統設定 42
3.6 All-In-One 43
3.7 小結 45
第4章 Kong 的基本功能 46
4.1 路由轉發 46
4.1.1 配置服務 46
4.1.2 配置路由 47
4.1.3 測試轉發請求 48
4.2 負載均衡 48
4.2.1 案例準備 49
4.2.2 配置服務 52
4.2.3 配置路由 53
4.2.4 配置上游 54
4.2.5 添加目標節點 55
4.2.6 驗證結果 56
4.3 灰度發布 58
4.4 藍綠部署 60
4.5 正則路由 60
4.6 HTTPS 跳轉 61
4.7 混合模式 63
4.7.1 案例準備 63
4.7.2 部署格線集群 64
4.7.3 驗證格線集群 65
4.7.4 配置路由及限速 65
4.7.5 驗證 67
4.8 TCP 流代理 67
4.9 小結 70
第5 章 Kong 的配置詳解 71
5.1 常規通用配置 71
5.2 Nginx 通用配置 72
5.2.1 代理/ 監聽類 72
5.2.2 工作進程類 74
5.2.3 請求類 74
5.2.4 SSL/TLS 類 75
5.2.5 真實IP 類 75
5.2.6 其他類 76
5.3 指令注入配置 77
5.4 數據存儲配置 78
5.5 存儲快取配置 80
5.6 DNS 解析配置 81
5.7 路由同步配置 82
5.8 Lua 綜合配置 83
5.9 混合模式配置 83
5.10 小結 84
第6 章 Lua 語言 85
6.1 簡介 85
6.2 環境 85
6.3 注釋 86
6.4 變數 86
6.5 數據類型 87
6.6 字元串 87
6.7 運算符 88
6.7.1 算術運算符 88
6.7.2 關係運算符 89
6.7.3 邏輯運算符 89
6.7.4 連線運算符 89
6.8 控制語句 90
6.8.1 分支語句 90
6.8.2 循環語句 91
6.8.3 中斷語句 92
6.9 函式 93
6.9.1 可變參數 94
6.9.2 多值返回 94
6.9.3 命名參數 95
6.10 表 95
6.10.1 表的構造 95
6.10.2 表的引用 97
6.10.3 表的疊代 97
6.10.4 表的操作 98
6.10.5 元表 99
6.10.6 類對象 100
6.11 模組 101
6.11.1 模組定義 101
6.11.2 載入函式 101
6.11.3 載入機制 102
6.12 小結 103
第7 章 日誌收集與分析 104
7.1 日誌的分類與配置 104
7.1.1 訪問日誌的屬性 104
7.1.2 訪問日誌的配置 105
7.1.3 錯誤日誌的配置 106
7.2 ELK+Filebeat 的選擇 107
7.3 Filebeat 107
7.3.1 安裝 107
7.3.2 配置 107
7.3.3 啟動 109
7.4 Elasticsearch 109
7.4.1 安裝 109
7.4.2 配置 109
7.4.3 啟動 110
7.5 Logstash 111
7.5.1 安裝 111
7.5.2 配置 111
7.5.3 啟動 111
7.6 Kibana 112
7.6.1 安裝 112
7.6.2 配置 112
7.6.3 啟動 112
7.6.4 套用 113
7.7 Elasticsearch 的輔助工具 116
7.8 小結 118
第8 章 指標監控與報警 119
8.1 Kong 的監控指標 119
8.2 Prometheus 122
8.2.1 安裝 122
8.2.2 配置 122
8.2.3 啟動 123
8.2.4 驗證 123
8.3 Grafana 125
8.3.1 安裝 125
8.3.2 配置 125
8.3.3 啟動 125
8.4 監控指標的可視化 126
8.5 監控指標的報警 129
8.5.1 郵件報警 129
8.5.2 企業微信報警 133
8.6 小結 135
第9 章 高級進階 136
9.1 負載均衡的原理 136
9.1.1 基於DNS 的負載均衡 136
9.1.2 基於環形均衡器的負載均衡 137
9.2 健康檢測的原理 140
9.2.1 健康檢測的原理 140
9.2.2 健康檢測的類型 142
9.3 集群機制的原理 143
9.3.1 單節點Kong 144
9.3.2 多節點Kong 集群 144
9.3.3 資料庫快取 144
9.4 快取管理 145
9.4.1 lua_shared_dict 145
9.4.2 lua-resty-lrucache 149
9.4.3 lua-resty-mlcache 150
9.5 定時器 155
9.5.1 ngx.timer.at 155
9.5.2 ngx.timer.every 156
9.5.3 參數控制和最佳化 157
9.6 進程管理 157
9.6.1 主/ 工作進程 158
9.6.2 單進程 158
9.6.3 輔助進程 158
9.6.4 信號進程 159
9.6.5 特權代理進程 159
9.7 協程管理 159
9.7.1 ngx.thread.spawn 159
9.7.2 ngx.thread.wait 160
9.7.3 ngx.thread.kill 161
9.8 Kong 參數最佳化 161
9.8.1 驚群效應 161
9.8.2 參數最佳化 162
9.9 Kong 與HTTP2 165
9.10 Kong 與WebSocket 167
9.11 Kong 與gRPC 171
9.12 Kong 與LVS 173
9.12.1 基本概念 173
9.12.2 LVS 的三種模式 175
9.12.3 LVS 負載均衡算法 178
9.12.4 Keepalived+LVS+Kong實踐 179
9.13 Kong 與Consul 184
9.13.1 整體框架結構圖 185
9.13.2 Kong+Consul 實踐 186
9.14 Kong 與Kubernetes 192
9.14.1 基本概念 192
9.14.2 安裝Kong Ingress Controller 193
9.14.3 驗證Kong Ingress Controller 194
9.15 Kong 的安全 198
9.15.1 通過3 層或者4 層網路控制 198
9.15.2 Kong API 本地迴環 199
9.16 火焰圖 199
9.16.1 概念 199
9.16.2 安裝火焰圖工具 200
9.16.3 生成火焰圖 201
9.17 小結 203
第10 章 內置外掛程式 204
10.1 外掛程式分類 204
10.2 環境準備 204
10.3 身份驗證 207
10.3.1 基本身份驗證 207
10.3.2 密鑰身份驗證 211
10.3.3 HMAC 身份驗證 213
10.3.4 OAuth 2.0 216
10.4 安全防護 223
10.4.1 IP 限制 223
10.4.2 機器人檢測 224
10.4.3 CORS 227
10.5 流量控制 228
10.5.1 請求大小限制 228
10.5.2 終止請求 230
10.6 無伺服器架構 232
10.6.1 AWS Lambda 232
10.6.2 Azure Functions 235
10.6.3 Serverless Functions 237
10.7 分析監控 240
10.7.1 Prometheus 240
10.7.2 Zipkin 242
10.8 信息轉換器 244
10.8.1 請求轉換器 244
10.8.2 回響轉換器 246
10.8.3 Correlation ID 247
10.9 日誌記錄 249
10.9.1 UDP 日誌 249
10.9.2 HTTP 日誌 253
10.9.3 Kafka 日誌 255
10.9.4 MySQL 日誌 261
10.10 小結 264
第11 章 自定義外掛程式 265
11.1 簡介 265
11.1.1 基本外掛程式 265
11.1.2 高級外掛程式 266
11.2 原理 266
11.3 詳解PDK 269
11.3.1 單個屬性 269
11.3.2 kong.client 270
11.3.3 kong.ctx 273
11.3.4 kong.ip 274
11.3.5 kong.log 275
11.3.6 kong.nginx 277
11.3.7 kong.node 277
11.3.8 kong.request 278
11.3.9 kong.response 284
11.3.10 kong.router 288
11.3.11 kong.service 289
11.3.12 kong.service.request 290
11.3.13 kong.service.response 296
11.3.14 kong.table 298
11.4 外掛程式開發 299
11.5 外掛程式測試的運行環境 299
11.6 外掛程式的製作與安裝 300
11.7 外掛程式測試與運行 302
11.8 外掛程式與C 語言 304
11.9 外掛程式與Go 語言 306
11.9.1 Go 安裝 306
11.9.2 開發流程 307
11.9.3 開發示例 308
11.10 小結 311
第12 章 高級案例實戰 312
12.1 案例1:智慧型路由 312
12.1.1 外掛程式需求 313
12.1.2 外掛程式開發 313
12.1.3 外掛程式部署 315
12.1.4 外掛程式配置 316
12.1.5 外掛程式驗證 317
12.2 案例2:動態限頻 317
12.2.1 外掛程式需求 318
12.2.2 外掛程式開發 319
12.2.3 外掛程式部署 325
12.2.4 外掛程式配置 325
12.2.5 外掛程式驗證 327
12.3 案例3:下載限流 327
12.3.1 外掛程式需求 328
12.3.2 外掛程式開發 328
12.3.3 外掛程式部署 329
12.3.4 外掛程式配置 329
12.3.5 外掛程式驗證 330
12.4 案例4:流量鏡像 331
12.4.1 外掛程式需求 332
12.4.2 外掛程式開發 332
12.4.3 外掛程式部署 333
12.4.4 外掛程式配置 334
12.4.5 外掛程式驗證 334
12.5 案例5:動態快取 335
12.5.1 外掛程式需求 335
12.5.2 外掛程式開發 336
12.5.3 外掛程式部署 339
12.5.4 外掛程式配置 340
12.5.5 外掛程式驗證 341
12.6 案例6:IP 地址位置 342
12.6.1 外掛程式需求 342
12.6.2 外掛程式開發 343
12.6.3 外掛程式部署 345
12.6.4 外掛程式配置 345
12.6.5 外掛程式驗證 346
12.7 案例7:合併靜態檔案 347
12.7.1 外掛程式需求 347
12.7.2 外掛程式開發 348
12.7.3 外掛程式部署 350
12.7.4 外掛程式配置 351
12.7.5 外掛程式驗證 352
12.8 案例8:WAF 352
12.8.1 外掛程式需求 353
12.8.2 外掛程式開發 353
12.8.3 外掛程式部署 358
12.8.4 外掛程式配置 359
12.8.5 外掛程式驗證 360
12.9 案例9:跨數據中心 361
12.9.1 外掛程式需求 361
12.9.2 源碼調整 362
12.9.3 外掛程式開發 363
12.9.4 外掛程式部署 364
12.9.5 外掛程式配置 365
12.9.6 外掛程式驗證 365
12.10 小結 366
附錄A Kong CLI 367
附錄B Kong PDK 索引表 370