私は現在Tomcatサーバーにデプロイされているwebsocketアプリケーションを開発中です。膨大な数のユーザーのために、ワークロードを複数のTomcatインスタンスに配布したいと思います。私は負荷分散にApacheを使うことに決めました。Apacheロードバランスtomcat websocket
私はApacheロードバランシングとウェブセッション要求のためのスティッキセッションの実装に問題があります。
ProxyRequests off
SSLProxyEngine on
RewriteEngine On
<Proxy balancer://http-localhost/>
BalancerMember https://mcsgest1.desy.de:8443/Whiteboard/ route=jvm1 keepalive=On smax=1 connectiontimeout=10 retry=600 timeout=900 ttl=900
BalancerMember https://mcsgest1.desy.de:8444/Whiteboard/ route=jvm2 keepalive=On smax=1 connectiontimeout=10 retry=600 timeout=900 ttl=900
ProxySet lbmethod=byrequests
ProxySet stickysession=JSESSIONID|sid scolonpathdelim=On
</Proxy>
<Proxy balancer://ws-localhost/>
BalancerMember wss://mcsgest1.desy.de:8443/Whiteboard/ route=jvm1 keepalive=On smax=1 connectiontimeout=10 retry=600 timeout=900 ttl=900
BalancerMember wss://mcsgest1.desy.de:8444/Whiteboard/ route=jvm2 keepalive=On smax=1 connectiontimeout=10 retry=600 timeout=900 ttl=900
ProxySet lbmethod=byrequests
ProxySet stickysession=JSESSIONID|sid scolonpathdelim=On
</Proxy>
RewriteCond %{HTTP:Upgrade} =websocket
RewriteRule /jddd/(.*) balancer://ws-localhost/$1 [P,L]
ProxyPassReverse /jddd/ balancer://ws-localhost/
RewriteCond %{HTTP:Upgrade} !=websocket
RewriteRule /jddd/(.*) balancer://http-localhost/$1 [P,L]
ProxyPassReverse /jddd/ balancer://http-localhost/
最初のHTTPS要求がポート8443にバランスされたアップグレードWSS要求も8443秒HTTPS要求が最初の要求のセッションIDが含まれてい
に転送されます:これは私のApacheの設定である 私は、Apacheのログファイルで見ることができるようにhttps://...&sid=C28C13EEEC525D203F8CA4E827605E0B.jvm1
は、このセッションIDはstickySessionのために評価されます
...フン// HTTP-はlocalhost:労働者 (htttps://mcsgest1.desy.de:8443 /ホワイトボードstickysession SID
...見つかりルートJVM1
...バランサのd値C28C13EEEC525D203F8CA4E827605E0B.jvm1 //mcsgest1.desy.de::/) htttpsに書き換え?8443 /ホワイトボード//ファイル= octocenter.xml &アドレス= /// & SIDは= C28C13EEEC525D203F8CA4E827605E0B.jvm1
二HTTPS要求がまだありますws-balancerはwebsocketプロトコルにアップグレードした後、ws-balancerはセッションIDを評価し、8444に書き換えていない:
...バランサ:// localhostのWS-を:労働者 (WSS://mcsgest1.desy.de:8444 /ホワイトボード/) WSSに書き換え://mcsgest1.desy.de:8444/Whiteboard // whiteboardendpoint
wssプロトコルのstickysessionを有効にするには、Apacheの設定を変更する必要がありますか? Webソケットのバランスを取るために本当に2つのバランサ(httpとws)が必要ですか?