iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0
Cloud Native

與雲原生精靈共舞:APISIX使用者的兩年旅程系列 第 22

幕間3 - 工程師的告白:換掉 Nginx,其實是為了實現一個「小小的私心」

  • 分享至 

  • xImage
  •  

今天想來聊聊,為什麼SSO服務的反向代理工具,從Nginx換成了Apache APISIX?

從Nginx換成APISIX的,不只是在SSO服務提供架構上。客戶的入口網站也替換成使用APISIX提供服務;目前在進行的新MES系統導入,其架構也在原本設計上做過調整,包含進APISIX做整體的高可用性設計考量。

不過在此前,Nginx在公司內部系統已經穩定地使用了幾年應該有了。Nginx真的是一個很好、很穩定的工具。那是什麼原因,逐步將新舊服務的架構中Nginx換成了APISIX?

會接觸到Apache APISIX,作爲楔子的原因,是我想更進一步實際看看斷路器的機制。Nginx似乎也有相關辦法[^1] [^2],不過在中文文件上,APISIX看起來更容易入門。

[^1]: GitHub - nginx-circuit-breaker
[^2]: Nginx 中实现熔断降级

隨者接觸到APISIX,也開始發現更多新東西。除了限流,印象中可觀測性相關的OpenTelemetry和SkyWalking工具也是此時開始接觸,此外也逐漸發現一些使用APISIX的優點。

在「百貨公司-負載平衡」的一章例子中,除了Nginx同樣地可以分配不同上游權重外,還可以設定第二階、第三階的使用節點,這在Nginx相對是受限的。

(nginx範例)

upstream stores {
        server 192.168.56.3:8081 weight=30 ;
        server 192.168.56.3:8082 weight=30 ;
        server 192.168.56.3:8083 weight=25 backup;
        server 192.168.56.3:8084 weight=15 backup;
}

server {
    listen       9081;
    listen  [::]:9081;

    location / {
        proxy_pass  http://stores;
    }
}

https://ithelp.ithome.com.tw/upload/images/20251006/2011247062KOFdE7hQ.png

在「健康檢查」一章,提供了主動檢查和被動檢查的方式。初階的Nginx僅提供被動檢查:

(nginx範例)

upstream stores {
        server 192.168.56.3:8081 weight=30 max_fails=3 fail_timeout=30s;
        server 192.168.56.3:8082 weight=30 max_fails=3 fail_timeout=30s;
        server 192.168.56.3:8083 weight=25 max_fails=3 fail_timeout=30s;
        server 192.168.56.3:8084 weight=15 max_fails=3 fail_timeout=30s;
}

server {
    listen       9081;
    listen  [::]:9081;
    #server_name  localhost;

    location / {
        proxy_pass  http://stores;
    }
}

https://ithelp.ithome.com.tw/upload/images/20251006/20112470WB2beVyN42.png

此外,在實際應用環境,為了避免「單點失效」,並不會只準備一個Nginx服務節點。也就是說每次的路由變更,都需要在每一個服務節點進行調整。儘管依然可以利用Ansible等類似工具,做到一次一起調整。但APISIX本身設計上有包含類似設定中心的概念,且Admin API可以更動態的將變更套用到多個服務節點。

https://ithelp.ithome.com.tw/upload/images/20251006/2011247012gciIx5xt.png

最後最後...其實還是有一些私心原因,但讓我留到系列最後再來揭祕。


上一篇
Ch15 - APISIX 部署解密:全面解析「傳統」、「解耦」、「無中心獨立」部署策略
系列文
與雲原生精靈共舞:APISIX使用者的兩年旅程22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言