
現在、次のような設定になっています。
[Client] -> [haproxy] -> [Nginx] -> [App Servers]
Nginx は現在、Cookie を設定することで、アプリケーション サーバーに Cookie アフィニティを設定します。public-client
ただし、HAProxy の導入により、Cookie はクライアント側に存在せず、アプリケーション サーバーへのセッション アフィニティが壊れてしまいます。
ドキュメントを読んでいて、次のような属性を見つけました。アプリセッションうまくいったかもしれないが、廃止されたようだ。推奨されるのはスティックテーブルしかし、その属性を持つ Cookie を保存する方法がよくわかりません。
これを実現する方法を知っている人はいますか?
注記: リバース プロキシの重複については十分承知していますが、当社のアーキテクチャではそれが必須です。
問題が発見されました
そこで、以下のコメントに基づいて、tcdump
HAProxy および Nginx サーバー上で実行し、Cookie が設定/渡されていない場所を検証しました。
参考までに実行したコマンド:
sudo /usr/sbin/tcpdump -A -l dst port 80 -i any | grep "^Cookie: "
これにより、HAProxy サーバーと Nginx サーバー上のアプリケーション クッキーが表示されました。ただし、Nginx が設定するはずのクッキーは HAProxy へのトラフィック フローに存在しなかったため、問題は Nginx がクッキーを設定していないことに起因していることが判明しました。