Apache-2.2
需要將 HTTP 請求復製到兩台伺服器
我們正在開發一種新伺服器來替換舊伺服器,並希望並排進行前後測試 - 這樣我們就可以比較最終結果並找出差異。
兩種服務(舊的和新的)的輸入都是 HTTP 請求(如果不是全部的話,大部分是 GET,但也可能是 POST),我們需要將流向舊伺服器的流量複製並發送到新伺服器(而不是代替)。當然,我們需要對請求中的主機名和埠進行一些輕微的重寫,以避免死循環。
舊伺服器在 Apache (PHP) 上執行,新伺服器是 Jetty (Java, Dropwizard)
一定有辦法做到這一點,我只是找不到Google搜尋的關鍵字我猜……
我們最終選擇的是使用 Gor(現在是 GorReplay)https://github.com/buger/goreplay
這個解決方案允許在原始主機上安裝一個監聽器,它所做的是記錄任何傳入的 HTTP 請求,這是在不修改它或阻止生產伺服器處理它的情況下完成的。
然後它將這些請求推送到 Gor 重放伺服器,該伺服器可以根據傳入的請求處理各種有用的拆分/增加負載的邏輯 - 您可以將一定百分比的請求發送到開發伺服器,或者將請求相乘以創建模擬(但來自真實流量)負載在您的暫存環境中,或兩者兼而有之……
可悲的是,這是在伺服器級別,因此您必須在每台生產伺服器上安裝才能獲得所有流量,但您不必這樣做,它為我的問題中提出的問題提供了一個很好的解決方案。