Apache-2.2

需要將 HTTP 請求復製到兩台伺服器

  • April 11, 2020

我們正在開發一種新伺服器來替換舊伺服器,並希望並排進行前後測試 - 這樣我們就可以比較最終結果並找出差異。

兩種服務(舊的和新的)的輸入都是 HTTP 請求(如果不是全部的話,大部分是 GET,但也可能是 POST),我們需要將流向舊伺服器的流量複製並發送到新伺服器(而不是代替)。當然,我們需要對請求中的主機名和埠進行一些輕微的重寫,以避免死循環。

舊伺服器在 Apache (PHP) 上執行,新伺服器是 Jetty (Java, Dropwizard)

一定有辦法做到這一點,我只是找不到Google搜尋的關鍵字我猜……

我們最終選擇的是使用 Gor(現在是 GorReplay)https://github.com/buger/goreplay

這個解決方案允許在原始主機上安裝一個監聽器,它所做的是記錄任何傳入的 HTTP 請求,這是在不修改它或阻止生產伺服器處理它的情況下完成的。

然後它將這些請求推送到 Gor 重放伺服器,該伺服器可以根據傳入的請求處理各種有用的拆分/增加負載的邏輯 - 您可以將一定百分比的請求發送到開發伺服器,或者將請求相乘以創建模擬(但來自真實流量)負載在您的暫存環境中,或兩者兼而有之……

可悲的是,這是在伺服器級別,因此您必須在每台生產伺服器上安裝才能獲得所有流量,但您不必這樣做,它為我的問題中提出的問題提供了一個很好的解決方案。

引用自:https://serverfault.com/questions/569283