上下文
我使用Jhipster(v4.1.0)创建了一个Monolithic应用程序,并包含以下功能:
当我运行应用程序的单个实例时,一切都按预期工作。我可以登录,并在不登出的情况下使用该应用程序。
问题和我尝试的内容:
然而,当我启动应用程序的第二个实例(使用docker-compose scale)时,我会遇到以下情况:
成员2 {
Member [172.18.0.3]:5701 - 782c21f9-5065-4bfc-bc13-23dfb42cf6f7 Member [172.18.0.5]:5701 - d4fcf306-e20a-497b-a6b8-000341881419 this }
我最初的想法是使用Hazelcast的Clustered HTTP会话无法正常工作,但是当我实现一个简单的控制器来检查会话详细信息时(完全按照this example中的建议),我发现了以下内容:
我的结论是使用Hazelcast的群集HTTP会话正常工作。我还在两个实例之间实现了负载均衡器(HAProxy),但是当我登录时我立即再次注销。我后来更新了HAProxy以使用粘性会话,然后允许应用程序运行,但是当处理会话的实例失败(停止)时,用户被注销而不会移动到另一个实例,从而打败了分配会议的目的。
最后,我的问题:
更新
我上传了一个包含完整应用程序的存储库:
只有使用jhipster生成后进行的更改才能添加loadbalancer到src / main / docker / app.yml,并添加控制器和html来查看会话详细信息
应用程序以
开始 ./mvnw package -Pprod docker:build
docker-compose -f src/main/docker/app.yml up -d
用
缩放`docker-compose -f src/main/docker/app.yml scale jhipster3-app=2`