古いサーバーを置き換える新しいサーバーを開発しており、テストの前後に並べて配置して、最終結果を比較して矛盾を見つけたいと考えています。
両方のサービス(古いものと新しいもの)への入力はHTTPリクエストです(ほとんどの場合、すべてのGETではなく、POSTもあります)。古いサーバーに着信するトラフィックを複製して送信する必要があります新しいサーバーにも =(代わりに)。もちろん、無限ループを回避するために、リクエストのホスト名とポートを少し書き換える必要があります。
古いサーバーはApache(PHP)で実行されており、新しいサーバーはJetty(Java、Dropwizard)です。
これを行う方法があるに違いありません、私は私が推測するグーグル検索のためのキーワードを見つけることができません...
最終的に選択したのはGor(現在はGorReplay) https://github.com/buger/goreplay を使用することでした。
このソリューションでは、元のホストにリスナーをインストールできます。リスナーは、着信HTTPリクエストを記録します。これは、リスナーを変更したり、運用サーバーによる処理をブロックしたりすることなく実行されます。
次に、これらのリクエストをGorリプレイサーバーにプッシュします。Gorリプレイサーバーは、着信リクエストに基づいて負荷を分割/増加するあらゆる種類の便利なロジックを処理できます。リクエストの一部を開発サーバーに送信するか、リクエストを乗算してシミュレートを作成できます。 (ただし実際のトラフィックから)ステージング環境への負荷、またはその両方...
残念ながら、これはサーバーレベルであるため、すべてのトラフィックを取得するには、各本番サーバーにインストールする必要がありますが、そうする必要はありません。これは、私の質問で説明した問題の優れたソリューションを提供します。
NodeJSで記述された別のツールがあり、それは無料です https://www.npmjs.com/package/duplicator またはgithub https://github.com/agnoster/duplicator ==
質問から時間が経ちすぎたので、少なくともこれが元の要求者ではなくても他の読者に役立つことを願っています。
あなたが求めているものではありませんが、新しいサーバーをテストするための別のアプローチを提案します。
両方のサーバーの前にロードバランサーを配置し、ロードバランシングアルゴリズムを試す場合は、同時に新しいサーバーをテストして、古いサーバーを徐々に置き換えます。要求の99%を古いサーバーに送信でき、残りの1%の要求は新しいサーバーに送信され、サービスが期待どおりに機能しているかどうかを詳細に確認できます。
すべてが正常に機能する場合は、負荷を徐々に増やすことができます。 90%-10%、80%-20%など。
ヒント:haproxyとweight
およびstatic-rr
オプションを確認してください。