Проблема с настройкой встроенного кластера Keycloak с использованием кеша Infinispan с TCPPING.JAVA

Программисты JAVA общаются здесь
Anonymous
Проблема с настройкой встроенного кластера Keycloak с использованием кеша Infinispan с TCPPING.

Сообщение Anonymous »

Выполнили шаги, упомянутые в документации Readme
embedded-spring-boot-keycloak-server, чтобы настроить кластер Keycloak из двух узлов с использованием встроенного кэша Infinispan с TCPPING. Узлы подключились, и на двух узлах были обнаружены следующие журналы.
Узел 1:

Код: Выделить всё

2024-09-19 13:57:45.500  INFO 1998000 --- [           main] c.g.t.k.embedded.EmbeddedKeycloakConfig  : Using infinispan configuration from jar:file:/home/ubuntu/thomas_keycloak/embedded-keycloak-server-custom-undertow-1.0.0-SNAPSHOT-INFO.jar!/BOOT-INF/classes!/infinispan.xml
2024-09-19 13:57:46.409  WARN 1998000 --- [           main] org.infinispan.PERSISTENCE               : ISPN000554: jboss-marshalling is deprecated and planned for removal
2024-09-19 13:57:46.457  INFO 1998000 --- [           main] org.infinispan.CONTAINER                 : ISPN000556: Starting user marshaller 'org.infinispan.commons.marshall.ImmutableProtoStreamMarshaller'
2024-09-19 13:57:46.613  INFO 1998000 --- [           main] org.infinispan.CONTAINER                 : ISPN000128: Infinispan version: Infinispan 'Triskaidekaphobia' 13.0.8.Final
2024-09-19 13:57:46.858  INFO 1998000 --- [           main] org.infinispan.CLUSTER                   : ISPN000078: Starting JGroups channel `ISPN` with stack `jgroups`
2024-09-19 13:57:46.943  WARN 1998000 --- [           main] org.jgroups.stack.Configurator           : JGRP000014: STABLE.stability_delay has been deprecated: always 0

-------------------------------------------------------------------
GMS: address=ip-172-31-27-116-412, cluster=ISPN, physical address=172.31.27.116:7600
-------------------------------------------------------------------
2024-09-19 13:57:48.502  INFO 1998000 --- [           main] org.jgroups.protocols.pbcast.GMS         : ip-172-31-27-116-412: no members discovered after 1502 ms: creating cluster as coordinator
2024-09-19 13:57:48.512  INFO 1998000 --- [           main] org.infinispan.CLUSTER                   : ISPN000094: Received new cluster view for channel ISPN: [ip-172-31-27-116-412|0] (1) [ip-172-31-27-116-412]
2024-09-19 13:57:48.574 ERROR 1998000 --- [           main] org.jgroups.JChannel                     : JGRP000016: exception in channelConnected callback: java.lang.NullPointerException: Cannot invoke "org.infinispan.metrics.impl.MetricsCollector.registerMetrics(Object, java.util.Collection, String, String)" because "mc" is null
2024-09-19 13:57:48.575  INFO 1998000 --- [           main] org.infinispan.CLUSTER                   : ISPN000079: Channel `ISPN` local address is `ip-172-31-27-116-412`, physical addresses are `[172.31.27.116:7600]`
Узел 2:

Код: Выделить всё

2024-09-19 13:59:48.236  INFO 43876 --- [           main] c.g.t.k.embedded.EmbeddedKeycloakConfig  : Using infinispan configuration from jar:file:/home/ubuntu/thomas_keycloak/embedded-keycloak-server-custom-undertow-1.0.0-SNAPSHOT-INFO.jar!/BOOT-INF/classes!/infinispan.xml
2024-09-19 13:59:49.270  WARN 43876 --- [           main] org.infinispan.PERSISTENCE               : ISPN000554: jboss-marshalling is deprecated and planned for removal
2024-09-19 13:59:49.319  INFO 43876 --- [           main] org.infinispan.CONTAINER                 : ISPN000556: Starting user marshaller 'org.infinispan.commons.marshall.ImmutableProtoStreamMarshaller'
2024-09-19 13:59:49.477  INFO 43876 --- [           main] org.infinispan.CONTAINER                 : ISPN000128: Infinispan version: Infinispan 'Triskaidekaphobia' 13.0.8.Final
2024-09-19 13:59:49.758  INFO 43876 --- [           main] org.infinispan.CLUSTER                   : ISPN000078: Starting JGroups channel `ISPN` with stack `jgroups`
2024-09-19 13:59:49.842  WARN 43876 --- [           main] org.jgroups.stack.Configurator           : JGRP000014: STABLE.stability_delay has been deprecated: always 0

-------------------------------------------------------------------
GMS: address=ip-172-31-27-189-65026, cluster=ISPN, physical address=172.31.27.189:7600
-------------------------------------------------------------------
2024-09-19 13:59:49.960  INFO 43876 --- [           main] org.infinispan.CLUSTER                   : ISPN000094: Received new cluster view for channel ISPN: [ip-172-31-27-116-412|1] (2) [ip-172-31-27-116-412, ip-172-31-27-189-65026]
2024-09-19 13:59:50.019 ERROR 43876 --- [           main] org.jgroups.JChannel                     : JGRP000016: exception in channelConnected callback: java.lang.NullPointerException: Cannot invoke "org.infinispan.metrics.impl.MetricsCollector.registerMetrics(Object, java.util.Collection, String, String)" because "mc" is null
2024-09-19 13:59:50.021  INFO 43876 --- [           main] org.infinispan.CLUSTER                   : ISPN000079: Channel `ISPN` local address is `ip-172-31-27-189-65026`, physical addresses are `[172.31.27.189:7600]`
Перед двумя узлами был установлен балансировщик сетевой нагрузки, и был доступен доступ к консоли администратора. При попытке входа в журналы были обнаружены исключения, и вход не увенчался успехом.

Код: Выделить всё

2024-09-19 13:19:57.764 DEBUG 1996782 --- [  XNIO-1 task-4] o.k.a.DefaultAuthenticationFlow          : invoke authenticator.authenticate: auth-username-password-form
2024-09-19 13:19:57.771 ERROR 1996782 --- [  XNIO-1 task-4] io.undertow.request                      : UT005023: Exception handling request to /auth/realms/master/protocol/openid-connect/auth

java.lang.NullPointerException: Cannot invoke "org.keycloak.models.RealmModel.getSsoSessionMaxLifespan()" because "realm" is null
at org.keycloak.models.sessions.infinispan.util.SessionTimeouts.getUserSessionLifespanMs(SessionTimeouts.java:54) ~[keycloak-model-infinispan-18.0.0.jar!/:18.0.0]
at org.keycloak.models.sessions.infinispan.changes.InfinispanChangelogBasedTransaction.commitImpl(InfinispanChangelogBasedTransaction.java:165) ~[keycloak-model-infinispan-18.0.0.jar!/:18.0.0]
at org.keycloak.models.AbstractKeycloakTransaction.commit(AbstractKeycloakTransaction.java:48) ~[keycloak-server-spi-18.0.0.jar!/:18.0.0]
at org.keycloak.services.DefaultKeycloakTransactionManager.commit(DefaultKeycloakTransactionManager.java:146) ~[keycloak-services-18.0.0.jar!/:18.0.0]
at org.keycloak.services.filters.AbstractRequestFilter.close(AbstractRequestFilter.java:64) ~[keycloak-services-18.0.0.jar!/:18.0.0]
at org.keycloak.services.filters.AbstractRequestFilter.filter(AbstractRequestFilter.java:49) ~[keycloak-services-18.0.0.jar!/:18.0.0]
at com.github.thomasdarimont.keycloak.embedded.support.KeycloakUndertowRequestFilter.doFilter(KeycloakUndertowRequestFilter.java:23) ~[embedded-keycloak-server-spring-boot-support-999-SNAPSHOT.jar!/:999-SNAPSHOT]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.2.17.Final.jar!/:2.2.17.Final]
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.2.17.Final.jar!/:2.2.17.Final]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.19.jar!/:5.3.19]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.19.jar!/:5.3.19]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.2.17.Final.jar!/:2.2.17.Final]
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.2.17.Final.jar!/:2.2.17.Final]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.19.jar!/:5.3.19]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.19.jar!/:5.3.19]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.2.17.Final.jar!/:2.2.17.Final]
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.2.17.Final.jar!/:2.2.17.Final]
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) ~[spring-boot-actuator-2.6.7.jar!/:2.6.7]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.19.jar!/:5.3.19]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.2.17.Final.jar!/:2.2.17.Final]
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.2.17.Final.jar!/:2.2.17.Final]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.19.jar!/:5.3.19]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.19.jar!/:5.3.19]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) ~[undertow-servlet-2.2.17.Final.jar!/:2.2.17.Final]
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) ~[undertow-servlet-2.2.17.Final.jar!/:2.2.17.Final]
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) ~[undertow-servlet-2.2.17.Final.jar!/:2.2.17.Final]
Из журналов видно, что область имеет нулевое значение, но доступ к консоли администратора осуществляется с использованием имени хоста:порт/аутентификация, что является контекстным путем для приложения. Маловероятно, что браузер вызывает какие-либо проблемы с отправкой правильного запроса.
Существует ли обновленная документация и конфигурация для кластерной установки со встроенным Keycloak? В частности, необходим рабочий пример JDBCPING со встроенным Keycloak, поскольку мы намерены настроить кластер в AWS Elastic Container Service, где IP-адреса будут меняться и не останутся статическими (для использования TCPPING).
Удален один из узлов из кластера, который содержал два узла, и вход в консоль администратора работает без проблем. Учитывая это наблюдение, вполне вероятно, что настройка кластера вызывает проблему. Кроме того, используется балансировщик сетевой нагрузки, и тот факт, что с одним узлом все работает нормально, доказывает, что с балансировщиком нагрузки проблем нет.

Подробнее здесь: https://stackoverflow.com/questions/790 ... th-tcpping

Вернуться в «JAVA»