在這個教程中,您將學習如何利用 OpenResty Edge 的灰度閘道器伺服器功能,對您閘道器配置的更改進行測試,再把它們推送到所有生產環境的閘道器伺服器上。

甚麼是灰度伺服器

我們知道,Edge Admin 負責管理和分發配置到 Edge 伺服器。但是直接向所有的 Edge 伺服器分發重大的改動可能會導致事故。

Embeded video

為了解決這個問題,我們可以將一些 Edge 伺服器標記為灰度伺服器。首先將改動釋出到這些灰度伺服器,經過測試之後再發布到所有伺服器。這就是我們今天的主題:灰度伺服器。

Embeded image

讓我們進入 OpenResty Edge 的 Admin Web 控制檯。這是我們控制檯的樣本部署。每個使用者都有自己的本地部署。

Screenshot

將閘道器伺服器設定為灰度伺服器

首先,讓我們看看如何將閘道器伺服器設定為灰度伺服器。

點選 Gateway Clusters 標籤頁,進入 Gateway Clusters 頁面。

Screenshot

我們有一個閘道器叢集,它有兩個閘道器伺服器。

Screenshot

現在我們要把這兩個閘道器伺服器設定為灰度伺服器。可以透過兩種方式實現這一目標。第一種是將整個閘道器叢集設定為一個灰度叢集。現在讓我們來看一下怎麼設定。

點選編輯這個叢集。

Screenshot

這裡有一個開關,是用來設定一個叢集是否是灰度叢集的。

Screenshot

這個開關現在是關閉的。

想要將這個閘道器叢集設定為灰度叢集,需要開啟這個開關。

Screenshot

點選儲存這個改動。

Screenshot

點選叢集的名字,進入伺服器列表頁。

Screenshot

從伺服器列表頁可以看到,這兩個伺服器現在已經被標識為灰度伺服器。

Screenshot

回到閘道器叢集頁面。

Screenshot

第二種方法是直接設定一個閘道器伺服器為灰度伺服器。

再次點選編輯按鈕。

Screenshot

關閉這個開關。

Screenshot

可以看到每臺伺服器下都有開關,用來設定該伺服器是否為灰度伺服器。

Screenshot

開啟這個開關。

Screenshot

點選儲存這個改動。

Screenshot

點選叢集名稱。

Screenshot

可以看到,第一臺伺服器仍然是一個灰度伺服器。

Screenshot

第二臺伺服器已經不是灰度伺服器了。

Screenshot

這樣做只是為了方便演示。實際上我們並不建議一個叢集同時擁有灰度伺服器和非灰度伺服器。否則在叢集層面上分發配置的時候會引發問題。

將改動釋出到灰度伺服器

現在讓我們回到應用列表頁,看看如何將改動釋出到灰度伺服器。

Screenshot

我們可以繼續使用之前的示例應用,test-edge.com。

Screenshot

進入這個應用。

Screenshot

建立一個新的頁面規則來測試灰度釋出。

Screenshot

單擊新建頁面規則。這個規則將在特定的 URI 下返回特定的內容。

Screenshot

首先,我們為這個規則新增一個條件。

Screenshot

條件的變數保持不變,即 URI。

Screenshot

選擇 String= 運算子。

Screenshot

Screenshot

輸入值 /test 作為指定的 URI。

Screenshot

條件設定完畢。

對於規則的動作部分,我們可以配置一個 Output response body 動作。請注意,我們選擇這個動作只是為了方便演示。灰度伺服器對於任何配置都是生效的。

Screenshot

這裡有許多動作可供選擇。

Screenshot

建議輸入 Output 進行搜尋。

Screenshot

選擇動作 “Output response body”。

Screenshot

選擇 text/plain 作為內容型別。

Screenshot

Screenshot

輸入 “Hello World” 作為輸出響應體。

Screenshot

單擊此選項,以確保在現有規則之前插入此規則。

Screenshot

單擊“建立”按鈕,建立這個規則。

Screenshot

可以看到這個規則已經出現在列表中。

Screenshot

最後一步是做一個新配置的釋出。它將推送我們剛才的改動到閘道器伺服器。

Screenshot

點選這個按鈕來做一個新的釋出。

Screenshot

為本次釋出新增一個評論。

Screenshot

要做一個灰度釋出,你需要開啟這個開關。

Screenshot

所有的灰度伺服器都顯示在這裡。

Screenshot

釋出。

Screenshot

現在已經完全同步了。

Screenshot

我們仍然可以在未釋出的變更列表中看到我們剛剛做的改動。這是因為改動沒有被髮布到所有的 Edge 節點,而只是釋出到灰度節點。

Screenshot

在釋出歷史的列表中可以看到我們剛剛做出的改動。

Screenshot

而且可以看到,釋出型別這裡顯示的是灰度釋出。

Screenshot

測試灰度伺服器上的改動

現在我們進入閘道器叢集列表,選擇用於測試的伺服器。

Screenshot

注意,IP 地址以 226 結尾的伺服器是一個灰度伺服器。點選複製這個地址。

Screenshot

使用這個灰度伺服器

Screenshot

來傳送請求。

Screenshot

為了讓輸出看起來更清晰,我們在這裡新增一個回車。

Screenshot

可以看到返回了 Hello World。

Screenshot

現在讓我們用一個非灰度伺服器進行測試。點選複製 IP 地址以 213 結尾的伺服器。

Screenshot

使用這個非灰度伺服器。

Screenshot

可以看到返回了 404。這意味著我們剛才的改動在這個伺服器上並沒有生效。

Screenshot

關於 OpenResty Edge

OpenResty Edge 是我們自主研發的一款最適合微服務和分散式流量的全能型閘道器軟體。它提供了諸如頁面規則、Web 應用防火牆(WAF)、負載均衡等各種功能。

如果你喜歡這個教程,請訂閱這個部落格網站和我們的 YouTube 頻道B 站頻道。謝謝!

關於作者

章亦春是開源 OpenResty® 專案創始人兼 OpenResty Inc. 公司 CEO 和創始人。

章亦春(Github ID: agentzh),生於中國江蘇,現定居美國灣區。他是中國早期開源技術和文化的倡導者和領軍人物,曾供職於多家國際知名的高科技企業,如 Cloudflare、雅虎、阿里巴巴, 是 “邊緣計算“、”動態追蹤 “和 “機器程式設計 “的先驅,擁有超過 22 年的程式設計及 16 年的開源經驗。作為擁有超過 4000 萬全球域名使用者的開源專案的領導者。他基於其 OpenResty® 開源專案打造的高科技企業 OpenResty Inc. 位於美國矽谷中心。其主打的兩個產品 OpenResty XRay(利用動態追蹤技術的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最適合微服務和分散式流量的全能型閘道器軟體),廣受全球眾多上市及大型企業青睞。在 OpenResty 以外,章亦春為多個開源專案貢獻了累計超過百萬行程式碼,其中包括,Linux 核心、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,並編寫過 60 多個開源軟體庫。

關注我們

如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:

我們的微信公眾號

翻譯

我們提供了英文版原文和中譯版(本文)。我們也歡迎讀者提供其他語言的翻譯版本,只要是全文翻譯不帶省略,我們都將會考慮採用,非常感謝!