Я рассматривал Keycloak как локальное решение IAM и SSO для своей компании. Из прочтения документации мне неясно, может ли кластерный режим Keycloak удовлетворить наши требования к федерации экземпляров между сайтами.
У нас есть несколько удаленных обслуживаемых объектов, которые время от времени запускают важные процессы сбора телеметрии. Наш домен AD реплицирован на эти сайты.
Проблема в том, что сайты ведут по одной интернет-ссылке. Если бы у нас был keycloak в главном офисе, а интернет-связь прервалась на день, любое программное обеспечение на удаленном сайте, использующее keycloak для аутентификации, не работало бы (что было бы большой проблемой).
Можем ли мы настроить Keycloak в кластерном режиме (т. е. разместить экземпляр на каждом сайте), чтобы в случае отключения этой ссылки удаленные пользователи могли автоматически подключаться к своему локальному экземпляру и аутентифицироваться с помощью локальных приложений? Что происходит, когда соединение восстанавливается, а базы данных не синхронизированы — восстанавливает ли keycloak это автоматически?
Ваше здоровье
В целом ответ «да», вы можете настроить два экземпляра keycloak в разных местах и связать их друг с другом через кластер (под капотом это будет репликация кеша infinispan). Но это зависит от деталей вашей инфраструктуры.
Основная цель кластера Keycloak — выполнять репликацию кэша сеансов между узлами. Таким образом, в простейшем случае вы можете настроить два узла, которые смотрят на один и тот же экземпляр БД, и когда первый узел выйдет из строя, второй будет обрабатывать всю работу, но если БД также выйдет из строя, второй узел будет бесполезен. В таком случае каждый сайт должен иметь как отдельный узел Keycloak, так и реплику БД (как добиться репликации БД выходит за рамки этой темы). Третий вариант — использовать функцию мультиарендности адаптера приложения keycloak, в этом случае вы защищаете приложение двумя отдельными экземплярами Keycloak, которые ничего не знают друг о друге.
Попробуйте начать с этой статьи документации: https://www.keycloak.org/docs/latest/server_installation/index.html#crossdc-mode