--- title: Lab Meeting Minutes 2021/10/20 tags: lab_meeting --- > Outline > [TOC] --- # PERAL Lab Meeting - 時間:110年10月20日15:00 - 地點:[Online - Gather town](https://gather.town/app/YlaBHzNoYKzSYK8M/NCNULibrary%20VIP%20Room) - 出席者:吳坤熹老師、謝萬霖、周以恆、吳騰然、陳嘉瑋、劉怡君、田蕙瑜、劉又聖、洪胤勛、莊才賢、丘世宇 - 會議主題: [WebAPI Gateway](http://ms15.voip.edu.tw/~webmaster/meeting/1101/PPT/1031_API_Gateway.odp) - 主講者: 洪胤勛 - 主記: 丘世宇 ## 會議內容 ### API Gateway ![](https://i.imgur.com/ArdalL3.png) - 不用 Gateway 時,client 可能會需要跟好幾個 server 溝通 - 有 Gateway 時只需要跟 Gateway 溝通 - 只有 Gateway 需要 public IP address. 不必每台 Server 都一個 public IP address. ### Kong - 以 Nginx 為基底, 資料庫用 PostgreSQL - route - client 在 8000 port 連上 - service - 判斷要導去哪台伺服器 - 163.22.21.125 account: jerry or chofin pwd:(lab) - 建立用 scripts - 0_database.sh - 1_dataInit.sh - 2_kong.sh - 查看有什麼 service - `curl -X POST localhost:<uid>1/services` - 建立 service ``` curl -X POST localhost:8001/services -d "name=sun" \ -d "url=https://api.sunrise-sunset.org" ``` - 建立 route ``` curl -X POST localhost:8001/services/sun/routes \ -d "name=sun-route" -d "paths[ ]=/sun" ``` - Access with api-key ``` curl localhost:10110/sun --header "apikey: branko-key" ``` ### 建議&問題 1. WebAPI Gateway 跑在 Application-layer?[name=Jerry] Ans: [name=] 2. Any mechanism about Load balancing? [name=Jerry] Ans: I only know one service can map to a server. 3. Why Jerry said the function of this WebAPI is similar to Load Balancing. Ans: Popular load balancer are Nginx and HA Proxy. My feeling is that WebAPI Gateway simply maps URLs to different servers. 4. Chopin: What special features using port (id -u)7? Branko: Default: user:8000, mgmt:8081. Those (id -u)7 are non-default port which I choose to avoid conflict. 5. 可以透過 Kong 觀察到 API 流量嗎? [name= Angela] 目前還只能從 container log 觀察,所以還不能有效觀察到流量。[name=Branko] 6. P.3 WebAPI Gateway 與防火牆的差異? [name= Jeffery] Ans: 防火牆是讓你過或讓你不過,gateway 是導去不同 url[name= Phoebe] 7. 一個 service 只能設定一個 route 嗎? [name=Phoebe] 一個 service 下可以有很多個 route 8. service 跟 gateway 可以在不同台嗎 [name=Johnson] service 就是在遠端 9. 有沒有任何保護如果別人打下 gateway,因為看剛剛在設定時沒有任何認證[name=Henry] 目前沒有 10. key 是產生在 service or route [name=Toby] 都可以 11. TODO: - https with Lets Encrypt - Load Balancing based on Nginx - API代管 (使用量統計) ## 待追蹤事項 1. [name=] ## 臨時動議 - 無 --- 散會結束時間: 16:30