使用 OpenResty Edge 配置一個最簡單的反向代理和負載均衡器
今天我來演示一下如何用 OpenResty Edge 配置最簡單的反向代理和負載均衡器。
我們在一個集中的地方管理所有的閘道器伺服器節點及其配置,即 Edge Admin 網路控制檯。
建立示例應用
讓我們進入 OpenResty Edge 的網路控制檯。這是我們控制檯的一個示例部署。每個使用者都可以有自己的部署。
用我們的使用者名稱和密碼登入。
其他認證方式也可配置。 現在登入。
我們現在到了應用列表頁面。已經有很多我們之前建立的應用。每個應用程式對應同一閘道器中的虛擬主機或虛擬伺服器。
在這裡,我們將透過點選“新建應用程式”按鈕來建立一個新的應用。
就建立一個 HTTP 型別的。這是預設的。
我們為這個應用分配一個域名 test-edge.com
。
我們可以新增更多的域名,包括萬用字元域名。
在這個例子中,我們只關心 80 埠。
讓我們來建立這個應用!
現在我們已進入這個新的應用。它是空的。
為新應用建立上游
讓我們進入上游頁面。
顯然,我們目前還沒有定義任何上游。
點選“新建上游”按鈕,為我們的後端伺服器建立一個新的上游。
給這個上游取個名字,比如說,my_backend
。
為了簡單起見,我們這裡只用 HTTP 協議。
我們最終可能還是會想啟用 HTTPS 協議。
這裡我們需要後臺伺服器的 IP 地址。
我們已經在這個 IP 地址 54.213.103.191
準備了一個後臺伺服器的樣本。
它只是簡單地返回開源 OpenResty 伺服器軟體的預設主頁。
後端可以是任何使用 HTTP 協議來通訊的軟體。
現在我們可以填寫後臺伺服器的主機欄位了。
保持 80 埠不變。
未來我們可以透過點選“新增新的上游伺服器”按鈕在這個上游中新增更多的伺服器。
現在儲存一下這個上游。
我們可以看到這個 my_backend
上游已經有了。
建立頁面規則使用上游
現在讓我們建立一個新的頁面規則來實際利用這個上游。點選左側欄的上游連結。
我們目前沒有定義任何頁面規則。
建立一個新的頁面規則。點選“新建規則”按鈕。
對於這個頁面規則,我們不指定條件。這樣,它將適用於所有傳入的請求。
我們可以新增條件將該代理頁面規則限制在某些請求上。
我們先禁用條件。
我們在這裡新增一個代理目標。
選擇一個上游。
這裡有我們新建立的上游。
我們也有一些預先定義的全域性上游。它們可以被所有的應用程式複用,包括這個應用。
這裡先選擇我們的 my_backend
上游。
我們的上游只有一臺伺服器。所以負載均衡策略在這裡並不重要。
我們就保持預設的輪詢策略。
我們可能還想啟用響應的快取。我們將在另一個影片中介紹這個話題。
最後,真正地建立這條規則。
可以看到我們的代理頁面規則已經列在頁面規則列表中了。
配置的釋出
最後一步是進行新的配置釋出。它將把我們尚未完成的更改推送到所有的閘道器伺服器上。
我們可以點選此處的連結去進行釋出。
我們有機會檢查我們的變更,然後再推送出去。這是我們的第一個變更。
這是我們增加的 my_backend
上游。
這是我們的第二個變更。
這的確是我們的代理頁面規則。
現在我們向所有的閘道器伺服器釋出配置更新。
傳送!
我們可以實時觀察配置同步進度。它被推送到整個閘道器網路。
現在已經完全同步了。我們可以看到,這個示例部署在閘道器網路中有 13 臺伺服器。
我們在整個網路中進行增量的配置同步。
我們在請求粒度上實時更新配置。應用級別的配置更改都不需要伺服器過載、重啟或二進位制升級。所以,即使你有很多不同的使用者進行頻繁的釋出,它的可擴充套件性也很強。
測試
我們也可以按叢集來檢查所有的閘道器伺服器。
這是我們在全球的樣例部署。
我們的使用者可以自由地在任何地方部署他們的閘道器伺服器,或者跨越不同的雲和託管服務。
本列顯示各閘道器伺服器的配置同步狀態。
我們可以選擇舊金山附近的一個閘道器伺服器來測試.
它的公共 IP 地址是這個。
我們直接複製這個 IP 地址來測試這個伺服器。
在終端上,我們可以使用 curl
來測試這個舊金山閘道器伺服器。
curl -sS -H 'Host: test-edge.com' 'http://138.68.231.133/' | less
請注意,我們指定了 Host
請求頭。這是因為同一臺伺服器要為許多不同的虛擬主機服務。
傳送請求。
結果和預期一樣!我們得到了預設的 OpenResty 主頁,就像直接訪問後臺伺服器一樣。
我們也可以透過 curl
的 -I
選項檢查響應頭。
curl -I -H 'Host: test-edge.com' 'http://138.68.231.133/'
有一些響應頭是由 OpenResty Edge 閘道器軟體生成的。
另外,我們也可以在本地的 /etc/hosts
檔案中將 IP 地址繫結到主機名。那麼我們就可以直接將網頁瀏覽器指向這個域名了。
cat /etc/hosts
在真實的設定中,我們應該將閘道器伺服器的 IP 地址新增到我們的 DNS 名稱伺服器中。
dig test-edge.com
這裡我們還沒有配置這個域名的 DNS 記錄。我們將在另一個影片中演示。
OpenResty Edge 也可以同時作為一個權威的 DNS 伺服器網路。
當然,這是可選的。使用者仍然可以選擇使用第三方 DNS 名稱伺服器。這就是我今天要分享的內容。
關於 OpenResty Edge
OpenResty Edge 是一款專為微服務和分散式流量架構設計的全能型閘道器軟體,由我們自主研發。它集流量管理、私有 CDN 構建、API 閘道器、安全防護等功能於一體,幫助您輕鬆構建、管理和保護現代應用程式。OpenResty Edge 擁有業界領先的效能和可擴充套件性,能夠滿足高併發、高負載場景下的苛刻需求。它支援排程 K8s 等容器應用流量,並可管理海量域名,輕鬆滿足大型網站和複雜應用的需求。
如果你喜歡這個教程,請訂閱這個部落格網站和我們的 YouTube 頻道 或 B 站頻道。謝謝!
關於作者
章亦春是開源 OpenResty® 專案創始人兼 OpenResty Inc. 公司 CEO 和創始人。
章亦春(Github ID: agentzh),生於中國江蘇,現定居美國灣區。他是中國早期開源技術和文化的倡導者和領軍人物,曾供職於多家國際知名的高科技企業,如 Cloudflare、雅虎、阿里巴巴, 是 “邊緣計算“、”動態追蹤 “和 “機器程式設計 “的先驅,擁有超過 22 年的程式設計及 16 年的開源經驗。作為擁有超過 4000 萬全球域名使用者的開源專案的領導者。他基於其 OpenResty® 開源專案打造的高科技企業 OpenResty Inc. 位於美國矽谷中心。其主打的兩個產品 OpenResty XRay(利用動態追蹤技術的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最適合微服務和分散式流量的全能型閘道器軟體),廣受全球眾多上市及大型企業青睞。在 OpenResty 以外,章亦春為多個開源專案貢獻了累計超過百萬行程式碼,其中包括,Linux 核心、Nginx、LuaJIT、GDB、SystemTap、LLVM、Perl 等,並編寫過 60 多個開源軟體庫。
關注我們
如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:
翻譯
我們提供了英文版原文和中譯版(本文) 。我們也歡迎讀者提供其他語言的翻譯版本,只要是全文翻譯不帶省略,我們都將會考慮採用,非常感謝!