Apache APISIX實(shí)戰(zhàn)
定 價(jià):129 元
- 作者:王院生張晉濤屠正松朱欣欣等著
- 出版時(shí)間:2023/4/1
- ISBN:9787111722502
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.1
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
這是一本從設(shè)計(jì)理念、功能使用、工作原理、二次開發(fā)、插件擴(kuò)展、企業(yè)實(shí)踐等多個(gè)維度全面講解Apache APISIX的著作。本書由Apache APISIX官方出品,由創(chuàng)始團(tuán)隊(duì)和核心開發(fā)團(tuán)隊(duì)成員撰寫,同時(shí)融入了大量Apache APISIX典型客戶的經(jīng)驗(yàn)和案例,
全書內(nèi)容分為三部分:
首先,簡單介紹API和 APISIX的概念與背景,通過一些API網(wǎng)關(guān)的基礎(chǔ)功能介紹,幫助讀者更快速地從理論和操作方面來理解APISIX。
其次,著重講解APISIX在多個(gè)功能層面(安全、服務(wù)治理、可觀測性、二次開發(fā)等)的實(shí)踐場景與操作細(xì)節(jié),以及二次開發(fā)擴(kuò)展的插件使用。
蕞后,介紹APISIX在Ingress和服務(wù)網(wǎng)格領(lǐng)域的方案和產(chǎn)品呈現(xiàn),同時(shí)通過多個(gè)不同業(yè)務(wù)類型與風(fēng)格的企業(yè)用戶案例講解,帶來更多關(guān)于APISIX在實(shí)際生產(chǎn)環(huán)境中的應(yīng)用流程。
(1)作者背景資深:作者是APISIX的創(chuàng)始人,是Apache APISIX PMC成員,負(fù)責(zé)APISIX的開發(fā)和維護(hù)。
(2)作者經(jīng)驗(yàn)豐富:作者是資深的高性能網(wǎng)絡(luò)編程專家、云原生技術(shù)專家、安全技術(shù)專家,對(duì)網(wǎng)關(guān)技術(shù)有十分深入的研究。
(3)內(nèi)容全面系統(tǒng):從架構(gòu)設(shè)計(jì)、功能使用、工作原理、二次開發(fā)、插件擴(kuò)展、企業(yè)實(shí)踐等多個(gè)維度全面講解Apache APISIX,解決生產(chǎn)環(huán)境各種難題。
(4)注重工程實(shí)戰(zhàn):分享了愛奇藝(音視頻)、新浪微博(社交媒體)、有贊(PaaS平臺(tái))、Airwallex(跨國金融)、保險(xiǎn)等企業(yè)和行業(yè)的企業(yè)級(jí)APISIX實(shí)踐。
為什么要寫這本書
隨著現(xiàn)代技術(shù)的發(fā)展,我們的工作和生活已經(jīng)無法離開移動(dòng)互聯(lián)網(wǎng)、手機(jī)和各種應(yīng)用。在這些技術(shù)或設(shè)備帶來便利的背后,API起到關(guān)鍵的作用。目前,全球有超過96%的企業(yè)在使用API,超過80%的互聯(lián)網(wǎng)流量是通過API傳輸?shù)。API已經(jīng)成為數(shù)字世界的基礎(chǔ)設(shè)施,就像物理世界的自來水管道和電網(wǎng)一樣,雖然我們感覺不到它們的存在,但它們卻無比重要。
作為API的使用者,全球幾十億的終端用戶并不關(guān)心它的穩(wěn)定、安全和高效。但對(duì)于通過API提供數(shù)據(jù)的企業(yè)來說,如何選擇一個(gè)合適的API網(wǎng)關(guān),讓它來保證數(shù)千乃至數(shù)萬的API一直提供快速和安全的服務(wù),是企業(yè)的技術(shù)團(tuán)隊(duì)需要考慮的關(guān)鍵問題之一。
從2015年開始,我就投身到API相關(guān)的開源項(xiàng)目和開源社區(qū)中。我發(fā)現(xiàn),隨著API的快速發(fā)展,很多公司和開發(fā)者在API的使用上都有動(dòng)態(tài)、集群管理和可觀測性等方面的需求。于是,我和溫銘決定成立一家商業(yè)化公司API7.ai,并開源了APISIX這個(gè)云原生API網(wǎng)關(guān),以期解決企業(yè)的這些痛點(diǎn)。
為了實(shí)現(xiàn)這個(gè)目標(biāo),我們?cè)?019年10月把APISIX捐贈(zèng)給Apache軟件基金會(huì)。APISIX于2020年7月畢業(yè),成為Apache頂級(jí)項(xiàng)目。
Apache APISIX從開源的第一天開始,就堅(jiān)持每個(gè)月發(fā)布一個(gè)新版本,3年來從未間斷;钴S的開源社區(qū)賦予了APISIX無限可能,APISIX的當(dāng)前版本不僅可以處理南北向流量,還可以處理東西向流量,并且擁有近100個(gè)插件。
同時(shí),APISIX在全球也收獲了龐大的用戶群,涵蓋互聯(lián)網(wǎng)、智能制造、電信、保險(xiǎn)、券商、遠(yuǎn)程辦公、航空航天和新消費(fèi)等行業(yè),積累了大量的實(shí)踐經(jīng)驗(yàn)。讓APISIX的這些經(jīng)驗(yàn)和場景沉淀,幫助工程師更好地使用API網(wǎng)關(guān),是我們寫本書的初衷。
讀者對(duì)象
本書適合想要了解和使用Apache APISIX的用戶:
從零開始學(xué)習(xí)Apache APISIX的用戶。
想要為Apache APISIX貢獻(xiàn)代碼的社區(qū)參與者。
想通過Apache APISIX了解API網(wǎng)關(guān)領(lǐng)域的一些功能實(shí)踐的學(xué)習(xí)者。
如何閱讀本書
本書分為三部分。
第一部分為APISIX入門,簡單介紹了API和Apache APISIX的概念與背景,并通過API網(wǎng)關(guān)的基礎(chǔ)功能介紹,幫助讀者快速地從理論和操作方面來理解APISIX。
第二部分為APISIX進(jìn)階,著重講解APISIX在多個(gè)功能層面(安全、服務(wù)治理、可觀測性、二次開發(fā)等)的實(shí)踐場景與操作細(xì)節(jié)。同時(shí),為了方便一些基于APISIX進(jìn)行二次開發(fā)的讀者使用,本部分還提供了針對(duì)二次開發(fā)進(jìn)行擴(kuò)展的內(nèi)容,比如APISIX多語言插件。
第三部分為基于APISIX的綜合實(shí)踐,介紹了APISIX在Ingress和服務(wù)網(wǎng)格領(lǐng)域的方案和產(chǎn)品呈現(xiàn)。另外,這部分還講解了多個(gè)不同業(yè)務(wù)類型與風(fēng)格的企業(yè)用戶案例,讓讀者了解更多關(guān)于APISIX在實(shí)際生產(chǎn)環(huán)境中的應(yīng)用流程。
附錄為Apache APISIX PMC主席溫銘從個(gè)人角度對(duì)APISIX項(xiàng)目的探索及未來發(fā)展的闡述。
如果你是一名經(jīng)驗(yàn)豐富的資深用戶,已經(jīng)了解APISIX的相關(guān)基礎(chǔ)知識(shí)和使用技巧,那么你可以直接閱讀第二部分。但如果你是一名初學(xué)者,請(qǐng)一定從第1章的基礎(chǔ)理論知識(shí)開始學(xué)習(xí)。第三部分相比于前兩部分更加獨(dú)立,如果你對(duì)Ingress和服務(wù)網(wǎng)格方案更感興趣,可以直接閱讀第三
部分。
勘誤和支持
參加本書寫作的還有錢勇、張超、羅澤軒、趙士瑞、白澤平、金衛(wèi)、楊陶、江晨煒、彭業(yè)奇、帥進(jìn)超、莊浩潮、榮鑫、溫銘。由于作者的水平有限,書中難免會(huì)出現(xiàn)一些錯(cuò)誤或者不準(zhǔn)確的地方,懇請(qǐng)讀者批評(píng)指正。讀者可以將問題發(fā)布到Apache APISIX的GitHub Issue置頂問題中。期待能夠得到讀者的真摯反饋。
致謝
感謝本書的作者團(tuán)隊(duì)對(duì)于Apache APISIX項(xiàng)目的持續(xù)貢獻(xiàn),感謝大家對(duì)本書投入的精力。
感謝我的家人以及朋友。有了你們的支持與鼓勵(lì),我才有機(jī)會(huì)在工作上投入大量的時(shí)間。
Apache APISIX是站在巨人的肩膀上建立的。有了NGINX、LuaJIT、OpenResty這些偉大的開源項(xiàng)目,APISIX才得以在短短幾年內(nèi)成為API網(wǎng)關(guān)的首選。
感謝Apache APISIX社區(qū)400多位代碼貢獻(xiàn)者,以及無數(shù)提交過Issue、反饋過意見的工程師和布道師,是你們讓APISIX得到了更快的發(fā)展和更多的關(guān)注。
王院生
2022年8月
前 言
第一部分 APISIX入門
第1章 初識(shí)API 2
1.1 API:萬物互聯(lián)的起源 2
1.1.1 什么是API 2
1.1.2 利用API可以做什么 4
1.2 API網(wǎng)關(guān):連接與管理并行 5
1.2.1 什么是API網(wǎng)關(guān) 5
1.2.2 API 網(wǎng)關(guān)的作用 7
第2章 Apache APISIX介紹 10
2.1 Apache APISIX概述 10
2.1.1 誕生背景:API的崛起 10
2.1.2 Apache APISIX能做什么 13
2.2 Apache APISIX的設(shè)計(jì)理念與項(xiàng)目
優(yōu)勢 16
2.2.1 設(shè)計(jì)理念 16
2.2.2 項(xiàng)目優(yōu)勢 19
第3章 快速上手 Apache APISIX 23
3.1 安裝APISIX 23
3.1.1 使用RPM安裝 23
3.1.2 使用Docker安裝 25
3.1.3 使用Helm安裝 27
3.2 APISIX相關(guān)概念 28
3.2.1 反向代理 28
3.2.2 請(qǐng)求限制 30
3.2.3 身份驗(yàn)證 33
3.3 APISIX 架構(gòu) 35
3.3.1 思考:API網(wǎng)關(guān)的形態(tài)演進(jìn) 35
3.3.2 探索:Apache APISIX技術(shù)
選型 37
3.3.3 確認(rèn):Apache APISIX架構(gòu) 39
第4章 Apache APISIX部署與配置 42
4.1 公有云部署 42
4.1.1 在AWS EKS上部署APISIX 42
4.1.2 在 Google GKE 上部署
APISIX 43
4.1.3 在阿里云ACK上部署
APISIX 45
4.2 配置文件 46
4.2.1 Standalone模式 46
4.2.2 集群模式 47
4.2.3 Debug模式 54
4.3 安全性配置 54
4.3.1 控制面和數(shù)據(jù)面獨(dú)立部署 54
4.3.2 插件 54
4.4 多種配置中心選擇 55
第5章 Apache APISIX的基礎(chǔ)功能 57
5.1 流量切分 57
5.1.1 原理 58
5.1.2 參數(shù) 59
5.1.3 應(yīng)用場景 59
5.2 健康檢查 65
5.2.1 原理 66
5.2.2 參數(shù) 67
5.2.3 應(yīng)用場景 68
5.3 負(fù)載均衡 70
5.3.1 加權(quán)輪詢 71
5.3.2 一致性哈!72
5.3.3 加權(quán)最少連接數(shù) 73
5.3.4 指數(shù)加權(quán)移動(dòng)平均 75
5.4 跨域資源共享 77
5.4.1 原理 77
5.4.2 參數(shù) 77
5.4.3 使用方法 78
5.4.4 應(yīng)用場景 79
5.5 IP黑白名單 79
5.5.1 原理 80
5.5.2 參數(shù) 80
5.5.3 應(yīng)用場景 81
5.6 啟用與禁用插件 82
5.6.1 插件簡介 82
5.6.2 啟用插件 83
5.6.3 禁用插件 84
第二部分 APISIX進(jìn)階
第6章 身份認(rèn)證與鑒權(quán) 86
6.1 JWT 認(rèn)證 86
6.1.1 插件簡介 86
6.1.2 配置示例 87
6.1.3 應(yīng)用場景 88
6.1.4 與Vault集成 90
6.2 關(guān)鍵字認(rèn)證 98
6.2.1 插件簡介 98
6.2.2 配置示例 98
6.2.3 應(yīng)用場景 99
6.3 OpenID 認(rèn)證 102
6.3.1 背景介紹 102
6.3.2 原理 104
6.3.3 集成第三方使用場景 105
6.4 LDAP 認(rèn)證 123
6.4.1 插件簡介 123
6.4.2 配置示例 124
6.4.3 應(yīng)用場景 125
6.5 forward-auth插件 127
6.5.1 插件簡介 127
6.5.2 配置示例 127
6.5.3 應(yīng)用場景 128
6.6 consumer-restriction插件 131
6.6.1 插件簡介 131
6.6.2 參數(shù) 132
6.6.3 應(yīng)用場景 132
第7章 API和服務(wù)治理 139
7.1 數(shù)據(jù)面服務(wù)發(fā)現(xiàn) 139
7.1.1 集成Eureka 139
7.1.2 集成Consul 143
7.1.3 集成Nacos 146
7.2 控制面服務(wù)發(fā)現(xiàn) 150
7.2.1 原理 150
7.2.2 集成Nacos 151
7.2.3 集成ZooKeeper 154
7.3 服務(wù)熔斷 156
7.3.1 原理 156
7.3.2 參數(shù) 157
7.3.3 應(yīng)用場景 158
7.4 流量鏡像 160
7.4.1 插件簡介 160
7.4.2 參數(shù) 161
7.4.3 應(yīng)用場景 161
7.5 故障注入 165
7.5.1 插件簡介 165
7.5.2 參數(shù) 166
7.5.3 應(yīng)用場景 166
7.6 DNS配置 170
7.6.1 原理 170
7.6.2 應(yīng)用場景 171
第8章 SSL證書配置 177
8.1 SSL證書配置簡介 177
8.1.1 單域名 177
8.1.2 泛域名 179
8.1.3 多域名 180
8.1.4 單域名,多證書 181
8.2 同域名RSA與ECC雙證書配置 181
8.2.1 原理 181
8.2.2 使用示例 181
8.3 TLS雙向認(rèn)證 183
8.3.1 原理 184
8.3.2 應(yīng)用場景 184
第9章 可觀測性 189
9.1 鏈路追蹤 189
9.1.1 集成Apache SkyWalking 189
9.1.2 集成OpenTelemetry 194
9.2 指標(biāo) 200
9.2.1 集成Datadog 200
9.2.2 集成Prometheus 205
9.3 日志 211
9.3.1 訪問日志 211
9.3.2 錯(cuò)誤日志 241
9.3.3 日志文件自動(dòng)切分 246
第10章 運(yùn)維管理 249
10.1 命令行交互 249
10.2 Admin API 253
10.2.1 配置Admin API 254
10.2.2 功能介紹 256
10.3 Control API 259
10.3.1 配置Control API 259
10.3.2 功能介紹 261
10.4 單機(jī)模式 262
10.4.1 相關(guān)配置 263
10.4.2 應(yīng)用場景 263
10.5 etcd通信安全 265
10.5.1 相關(guān)配置 265
10.5.2 開啟mTLS雙向認(rèn)證 266
10.5.3 配置etcd RBAC 267
10.6 證書輪轉(zhuǎn) 268
10.7 Public API 270
10.7.1 插件簡介 270
10.7.2 應(yīng)用場景 272
第11章 二次開發(fā)與擴(kuò)展操作 276
11.1 自定義插件 276
11.1.1 加載自定義插件 276
11.1.2 啟動(dòng)自定義插件 278
11.1.3 自定義插件的使用 281
11.2 插件熱加載 284
11.3 多語言插件開發(fā) 285
11.3.1 實(shí)現(xiàn)方式 285
11.3.2 使用Go開發(fā)插件 286
11.3