Кластеризация WSO2 IdentityServer без (распределенного) кеша

Из-за утечек памяти после включения распределенное кеширование в WSO2 Identity Server 5.1.0 (аналогично: WSO2 JIRA IDENTITY-5050) на основе Руководство по кластеризации WSO2 я подумал, что попробую другой подход для моего кластера из нескольких активных экземпляров (для высокой доступности), отключив кеширование и доверие к базе данных будет достаточно масштабным для моих целей.

Я отключил довольно много кешей через identity.xml ниже:

<CacheConfig>
    <CacheManager name = "IdentityApplicationManagementCacheManager">
        <Cache name = "AppAuthFrameworkSessionContextCache"
                                                 enable = "false" timeout = "300" capacity = "5000" isDistributed = "false"/>
        <Cache name = "AuthenticationContextCache" enable = "true" timeout = "300" capacity = "5000" isDistributed = "false"/>
        <Cache name = "AuthenticationRequestCache" enable = "true" timeout = "300" capacity = "5000" isDistributed = "false"/>
        <Cache name = "AuthenticationResultCache"  enable = "true" timeout = "300" capacity = "5000" isDistributed = "false"/>
        <Cache name = "AppInfoCache"               enable = "true"  timeout = "900" capacity = "5000" isDistributed = "false"/>
        <Cache name = "AuthorizationGrantCache"    enable = "false" timeout = "300" capacity = "5000" isDistributed = "false"/>
        <Cache name = "OAuthCache"                 enable = "true" timeout = "300" capacity = "5000" isDistributed = "false"/>
        <Cache name = "OAuthScopeCache"            enable = "true"  timeout = "300" capacity = "5000" isDistributed = "false"/>
        <Cache name = "OAuthSessionDataCache"      enable = "true" timeout = "300" capacity = "5000" isDistributed = "false"/>
        <Cache name = "SAMLSSOParticipantCache"    enable = "true" timeout = "300" capacity = "5000" isDistributed = "false"/>
        <Cache name = "SAMLSSOSessionIndexCache"   enable = "true" timeout = "300" capacity = "5000" isDistributed = "false"/>
        <Cache name = "SAMLSSOSessionDataCache"    enable = "true" timeout = "300" capacity = "5000" isDistributed = "false"/>
        <Cache name = "ServiceProviderCache"       enable = "true"  timeout = "900" capacity = "5000" isDistributed = "false"/>
        <Cache name = "ProvisioningConnectorCache" enable = "true"  timeout = "900" capacity = "5000" isDistributed = "false"/>
        <Cache name = "ProvisioningEntityCache"    enable = "true" timeout = "900" capacity = "5000" isDistributed = "false"/>
        <Cache name = "ServiceProviderProvisioningConnectorCache"
                                                 enable = "true"  timeout = "900" capacity = "5000" isDistributed = "false"/>
        <Cache name = "IdPCacheByAuthProperty"     enable = "false"  timeout = "900" capacity = "5000" isDistributed = "false"/>
        <Cache name = "IdPCacheByHRI"              enable = "false"  timeout = "900" capacity = "5000" isDistributed = "false"/>
        <Cache name = "IdPCacheByName"             enable = "false"  timeout = "900" capacity = "5000" isDistributed = "false"/>
    </CacheManager>
    <CacheManager name = "IDENTITY_LOGIN_DATA_CACHE_MANAGER">
        <Cache name = "IDENTITY_LOGIN_DATA_CACHE"  enable = "false" timeout = "1" capacity = "5000" isDistributed = "false"/>
    </CacheManager>
</CacheConfig>

Но мне не удалось отключить кеш JDBCIdentityDataStore, который использует IDENTITY_LOGIN_DATA_CACHE (определенный в родительском классе InMemoryIdentityDataStore). Это имеет решающее значение для информации о блокировке учетной записи в то время, когда пользователи используют другое подключение к Интернету для своего ноутбука (WIFI), затем они получают письмо активации (соединение для передачи данных по сотовой сети) и после его активации задаются вопросом, почему их учетная запись все еще отключена.

Я открыт для предложений, помимо моих:

  1. отключить IDENTITY_LOGIN_DATA_CACHE (пока не знаю, как это сделать)
  2. переключитесь с активного-активного на активно-пассивный, чтобы уменьшить вероятность проблем (вредит горизонтальной масштабируемости)
  3. перейти из JDBCIdentityDataStore по умолчанию в UserStoreBasedIdentityDataStore на основе документов в https://docs.wso2.com/display/IS520/User+Account+Locking+and+Account+Отключение (надеясь, что у него нет кеша или его можно отключить через конфигурацию)
  4. Измените DefaultCacheTimeout с 15 до 1 минуты (надеясь, что пользователю потребуется больше времени для активации учетной записи и входа в систему)

попробуйте использовать IP-адреса в конфигурации кластера hazelcast вместо имен хостов, это нам помогло

gusto2 18.04.2018 09:47

Спасибо за ваше предложение. Однако в нашем случае, согласно netstat и tcpdump -i any port 4000, у нас были активные соединения через порт кластера 4000 между узлами (после того, как мы убедились, что мы использовали полное доменное имя для WKA, который был разрешен, и была включена переадресация порта Docker), но затем мы закончили с утечкой памяти, и я не уверен, были ли согласованы все разные кеши в кластере - и я понятия не имею, как это проверить. Этот вопрос посвящен тому, как запускать кластеры wso2 без включенных кешей.

JohannesB 18.04.2018 12:56

Имхо, ваша установка будет работать без некоторых функций (отзыв токена между узлами ..). У нас была утечка памяти на wso2is 5.1.0, и использование ip вместо fqdn помогло. Я считаю, что в текущей версии wso2is проблема решена (это было что-то с именованием соединений hazelcast)

gusto2 18.04.2018 14:50
УГЛЕРОДА-14573 поддерживает как лучшую практику использование адресов вместо имен DNS. Однако множество других (исправленных) ошибок, таких как УГЛЕРОДА-15926 и 16074, не очень обнадеживают.
JohannesB 19.04.2018 12:59

Вы придумали, как остановить кеш IDENTITY_LOGIN_DATA_CACHE? Это тоже меня беспокоит

maggiomj 13.01.2021 20:15

Нет, мы реализовали активный / пассивный кластер вместо активного / активного с нашим балансировщиком нагрузки, чтобы обойти проблему.

JohannesB 14.01.2021 05:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
6
287
0

Другие вопросы по теме