Mandeha Keycloak amin'ny fomba HA amin'ny Kubernetes

Mandeha Keycloak amin'ny fomba HA amin'ny Kubernetes

TL, DR: hisy ny famaritana ny Keycloak, rafitra fanaraha-maso ny fidirana amin'ny loharano misokatra, ny famakafakana ny rafitra anatiny, ny antsipirian'ny fanamafisana.

Fampidirana sy Hevi-dehibe

Ho hitantsika ato amin'ity lahatsoratra ity ny hevitra fototra tokony hotadidina rehefa mametraka cluster Keycloak eo an-tampon'ny Kubernetes.

Raha te hahalala bebe kokoa momba ny Keycloak ianao dia jereo ny rohy any amin'ny faran'ny lahatsoratra. Mba hidirana bebe kokoa amin'ny fampiharana dia afaka mianatra ianao ny fitehirizanay miaraka amin'ny maodely izay mampihatra ny hevi-dehibe amin'ity lahatsoratra ity (misy ny torolΓ lana fanombohana, ity lahatsoratra ity dia hanome topimaso ny fitaovana sy ny fanovana, eo ho eo MPANDIKA TENY).

Keycloak dia rafitra feno voasoratra amin'ny Java ary naorina teo an-tampon'ny mpizara fampiharana Wildfly. Raha fintinina dia rafitra iray ho an'ny fanomezan-dΓ lana izay manome ny federasiona sy SSO (single sign-on) ho an'ny mpampiasa fampiharana izany.

Manasa anao izahay hamaky ny ofisialy tranonkala na Wikipedia ho an'ny fahatakarana amin'ny antsipiriany.

Famoahana Keycloak

Keycloak dia mitaky loharano angon-drakitra roa maharitra mba handehanana:

  • Angon-drakitra ampiasaina hitehirizana angon-drakitra efa napetraka, toy ny mombamomba ny mpampiasa
  • Datagrid cache, izay ampiasaina amin'ny fitahirizana angon-drakitra avy amin'ny angon-drakitra, ary koa ny fitahirizana metadata tsy maharitra sy miova matetika, toy ny fivorian'ny mpampiasa. ampiharina Infinispan, izay matetika dia haingana kokoa noho ny angon-drakitra. Na izany na tsy izany, ny angon-drakitra voatahiry ao amin'ny Infinispan dia ephemeral - ary tsy mila tehirizina na aiza na aiza rehefa averina ny cluster.

Keycloak dia miasa amin'ny fomba efatra samihafa:

  • tsotra - dingana iray ary tokana, namboarina tamin'ny alΓ lan'ny rakitra standalone.xml
  • cluster tsy tapaka (safidy avo lenta) - ny dingana rehetra dia tsy maintsy mampiasa tefy mitovy, izay tsy maintsy ampiarahina amin'ny tanana. Voatahiry ao anaty rakitra ny Settings standalone-ha.xml, ho fanampin'izany dia mila manao fidirana ifampizarana amin'ny angon-drakitra sy mpandrindra entana ianao.
  • Vondrom-paritra - Ny fanombohana cluster amin'ny fomba mahazatra dia lasa asa mahazatra sy mankaleo rehefa mitombo ny cluster, satria isaky ny miova ny fanovana dia tsy maintsy atao amin'ny node cluster tsirairay ny fanovana rehetra. Ny fomba fiasan'ny sehatra dia mamaha ity olana ity amin'ny alΓ lan'ny fametrahana toerana fitehirizana ifampizarana sy famoahana ny fanitsiana. Voatahiry ao anaty rakitra ireo fanovana ireo domain.xml
  • Replication eo anelanelan'ny foibe angona - raha te hampandeha ny Keycloak ao anaty vondron'ny ivontoerana data maromaro ianao, matetika any amin'ny toerana ara-jeografika samihafa. Amin'ity safidy ity, ny foibe angon-drakitra tsirairay dia hanana ny cluster ny mpizara Keycloak manokana.

Ato amin`ity lahatsoratra ity isika dia handinika amin`ny an-tsipiriany ny safidy faharoa, izany hoe cluster mahazatra, ary hikasika kely ihany koa ny lohahevitra momba ny replication eo amin'ny ivontoerana data, satria misy dikany ny mampandeha ireo safidy roa ireo amin'ny Kubernetes. Soa ihany fa ao amin'ny Kubernetes dia tsy misy olana amin'ny fampifanarahana ny firafitry ny pods maromaro (Keycloak nodes), noho izany cluster domain Tsy ho sarotra be ny hanaovana izany.

Mariho koa fa ny teny sampahom-boaloboka fa ny sisa amin'ny lahatsoratra dia mihatra irery amin'ny vondrona Keycloak nodes miara-miasa, tsy ilaina ny manondro vondrona Kubernetes.

Cluster Keycloak mahazatra

Mba hampandehanana Keycloak amin'ity fomba ity dia mila:

  • amboary ny angon-drakitra iombonana ivelany
  • mametraka load balancer
  • manana tambajotra anatiny miaraka amin'ny fanohanana IP multicast

Tsy hiresaka momba ny fametrahana angon-drakitra ivelany isika, satria tsy izany no tanjon'ity lahatsoratra ity. Andeha hatao hoe misy angon-drakitra miasa any ho any - ary manana teboka mifandray aminy isika. Hampianay fotsiny ity angona ity amin'ny fari-piainan'ny tontolo iainana.

Mba hahatakarana bebe kokoa ny fomba fiasan'i Keycloak amin'ny cluster failover (HA), dia zava-dehibe ny mahafantatra hoe miankina amin'ny fahaizan'ny Wildfly ny clustering.

Ny Wildfly dia mampiasa subsystems maromaro, ny sasany amin'izy ireo dia ampiasaina ho toy ny mpandrindra entana, ny sasany ho an'ny fandeferana diso. Ny mpanelanelana entana dia miantoka ny fisian'ny fampiharana rehefa be loatra ny node cluster, ary ny fandeferana ny fahadisoana dia miantoka ny fisian'ny fampiharana na dia tsy mahomby aza ny node cluster sasany. Ny sasany amin'ireto subsystem ireto:

  • mod_cluster: Miara-miasa amin'ny Apache ho mpifandanja entana HTTP, miankina amin'ny TCP multicast mba hahitana mpampiantrano amin'ny alΓ lan'ny default. Azo soloina mpanelanelana ivelany.

  • infinispan: Cache zaraina mampiasa fantsona JGroups ho sosona fitaterana. Fanampin'izany, afaka mampiasa ny protocol HotRod izy hifandraisana amin'ny cluster Infinispan ivelany mba hampifanaraka ny atiny cache.

  • jgroups: Manome fanohanana fifandraisana amin'ny vondrona ho an'ny serivisy azo ampiasaina miorina amin'ny fantsona JGroups. Ny fantsona nomena anarana dia ahafahan'ny ohatra fampiharana ao anaty cluster hifandray amin'ny vondrona mba hananan'ny fifandraisana ny toetra toy ny fahamendrehana, ny filaminana ary ny fahatsapana ny tsy fahombiazana.

Load Balancer

Rehefa mametraka balancer ho mpanara-maso ny fidirana ao amin'ny cluster Kubernetes dia zava-dehibe ny mitadidy ireto zavatra manaraka ireto:

Keycloak dia mihevitra fa ny adiresy lavitra an'ny mpanjifa mifandray amin'ny HTTP amin'ny mpizara fanamarinana no tena adiresy IP an'ny solosaina mpanjifa. Tokony hametraka tsara ny lohatenin'ny HTTP ny firafitry ny balancer sy ingress X-Forwarded-For ΠΈ X-Forwarded-Proto, ary tehirizo ihany koa ny lohateny voalohany HOST. Dika farany ingress-nginx (>0.22.0) manafoana izany amin'ny alΓ lan'ny default

Fampandehanana ny saina proxy-address-forwarding amin'ny alΓ lan'ny fametrahana fari-piainana manodidina PROXY_ADDRESS_FORWARDING Π² true manome Keycloak ny fahatakarana fa miasa ao ambadiky ny proxy.

Mila mamela ihany koa ianao fivoriana miraikitra amin'ny fidirana. Keycloak dia mampiasa cache Infinispan zaraina mba hitahiry angon-drakitra mifandraika amin'ny fotoam-pivorian'ny fanamarinana sy ny fivorian'ny mpampiasa ankehitriny. Ny cache dia miasa amin'ny tompony tokana amin'ny alΓ lan'ny default, amin'ny teny hafa, io session manokana io dia voatahiry amin'ny node sasany ao amin'ny cluster, ary ny node hafa dia tsy maintsy manontany azy lavitra raha mila miditra amin'io fivoriana io izy ireo.

Mifanohitra amin'ny antontan-taratasy manokana, ny fametahana fivoriana miaraka amin'ny anarana cookie dia tsy nety taminay AUTH_SESSION_ID. Keycloak dia manana loop redirect, noho izany dia manoro hevitra izahay hisafidy anarana cookie hafa ho an'ny fivoriana mipetaka.

Keycloak koa dia apetaka ny anaran'ilay node namaly voalohany AUTH_SESSION_ID, ary satria ny node tsirairay ao amin'ny dikan-teny tena misy dia mampiasa tahiry mitovy, ny tsirairay amin'izy ireo tsy maintsy famantarana node miavaka sy miavaka amin'ny fitantanana ny fifampiraharahana. Izany no nanolorana azy ho hametraka JAVA_OPTS masontsivana jboss.node.name ΠΈ jboss.tx.node.id tokana ho an'ny node tsirairay - azonao atao, ohatra, ny mametraka ny anaran'ny pod. Raha mametraka anarana pod ianao dia aza adino ny fetran'ny tarehintsoratra 23 ho an'ny variable jboss, noho izany dia tsara kokoa ny mampiasa StatefulSet fa tsy Deployment.

Fikarakarana hafa - raha voafafa na averina ny pod, dia very ny cache. Raha raisina izany, dia ilaina ny mametraka ny isan'ny tompon'ny cache ho an'ny cache rehetra ho roa farafahakeliny, mba hijanonana ny dika mitovy amin'ny cache. Ny vahaolana dia ny mihazakazaka script ho an'ny Wildfly rehefa manomboka ny pod, mametraka azy ao amin'ny lahatahiry /opt/jboss/startup-scripts ao anaty container:

Ny votoatin'ny script

embed-server --server-config=standalone-ha.xml --std-out=echo
batch

echo * Setting CACHE_OWNERS to "${env.CACHE_OWNERS}" in all cache-containers

/subsystem=infinispan/cache-container=keycloak/distributed-cache=sessions:write-attribute(name=owners, value=${env.CACHE_OWNERS:1})
/subsystem=infinispan/cache-container=keycloak/distributed-cache=authenticationSessions:write-attribute(name=owners, value=${env.CACHE_OWNERS:1})
/subsystem=infinispan/cache-container=keycloak/distributed-cache=actionTokens:write-attribute(name=owners, value=${env.CACHE_OWNERS:1})
/subsystem=infinispan/cache-container=keycloak/distributed-cache=offlineSessions:write-attribute(name=owners, value=${env.CACHE_OWNERS:1})
/subsystem=infinispan/cache-container=keycloak/distributed-cache=clientSessions:write-attribute(name=owners, value=${env.CACHE_OWNERS:1})
/subsystem=infinispan/cache-container=keycloak/distributed-cache=offlineClientSessions:write-attribute(name=owners, value=${env.CACHE_OWNERS:1})
/subsystem=infinispan/cache-container=keycloak/distributed-cache=loginFailures:write-attribute(name=owners, value=${env.CACHE_OWNERS:1})

run-batch
stop-embedded-server

dia apetraho ny sandan'ny fari-piainan'ny tontolo iainana CACHE_OWNERS amin'izay ilaina.

Tambajotra tsy miankina miaraka amin'ny fanohanana IP multicast

Raha mampiasa Weavenet ho CNI ianao, dia hiasa avy hatrany ny multicast - ary hifankahita ny node Keycloak-nao raha vao manomboka izy ireo.

Raha tsy manana fanohanana ip multicast ianao ao amin'ny cluster Kubernetes dia azonao atao ny manitsy ny JGroups mba hiara-miasa amin'ny protocols hafa hahitana nodes.

Ny safidy voalohany dia ny fampiasana KUBE_DNSizay mampiasa headless service Raha te hahita nodes Keycloak ianao dia ampitao fotsiny amin'ny JGroups ny anaran'ny serivisy izay hampiasaina hitadiavana ireo nodes.

Safidy iray hafa dia ny fampiasana ny fomba KUBE_PING, izay miasa miaraka amin'ny API hitadiavana nodes (mila configure serviceAccount miaraka amin'ny zo list ΠΈ get, ary amboary ny pods mba hiasa amin'izany serviceAccount).

Ny fomba hitan'ny JGroups nodes dia amboarina amin'ny alΓ lan'ny fametrahana ny fari-piainan'ny tontolo iainana JGROUPS_DISCOVERY_PROTOCOL ΠΈ JGROUPS_DISCOVERY_PROPERTIES. for KUBE_PING mila mifidy pods ianao amin'ny fangatahana namespace ΠΈ labels.

️ Raha mampiasa multicast ianao ary mitantana cluster Keycloak roa na maromaro ao amin'ny cluster Kubernetes iray (atao hoe iray ao amin'ny namespace production, ny faharoa - staging) - node amin'ny kluster Keycloak iray dia afaka miditra kluster hafa. Ataovy azo antoka fa mampiasa adiresy multicast tokana ho an'ny kluster tsirairay amin'ny alàlan'ny fametrahana fari-pahalalanajboss.default.multicast.address и jboss.modcluster.multicast.address в JAVA_OPTS.

Replication eo anelanelan'ny foibe angona

Mandeha Keycloak amin'ny fomba HA amin'ny Kubernetes

rohy

Keycloak dia mampiasa cluster cache Infinispan samihafa ho an'ny foibe data tsirairay izay misy ny cluster Keycloack misy ny node Keycloak. Saingy tsy misy fahasamihafana eo amin'ny Keycloak nodes amin'ny foibe data samihafa.

Keycloak nodes dia mampiasa Java Data Grid ivelany (server Infinispan) ho an'ny fifandraisana eo amin'ny foibe data. Ny fifandraisana dia miasa araka ny protocol Infinispan HotRod.

Ny cache Infinispan dia tsy maintsy amboarina miaraka amin'ny toetra remoteStore, mba ho azo tehirizina lavitra ny angon-drakitra (ao amin'ny foibe data hafa, eo ho eo MPANDIKA TENY) caches. Misy cluster infinispan misaraka amin'ireo mpizara JDG, ka ny angona voatahiry ao amin'ny JDG1 eo amin'ny tranokala. site1 dia haverina amin'ny JDG2 eo an-toerana site2.

Ary farany, ny mpizara JDG mandray dia mampahafantatra ny mpizara Keycloak amin'ny cluster azy amin'ny alΓ lan'ny fifandraisan'ny mpanjifa, izay singa iray amin'ny protocol HotRod. Nodes keycloak mandeha site2 manavao ny cache Infinispan ary ny fotoam-piasan'ny mpampiasa manokana dia ho hita ao amin'ny Keycloak nodes on site2.

Ho an'ny cache sasany dia azo atao ihany koa ny tsy manao backup ary misoroka ny fanoratana data amin'ny alΓ lan'ny server Infinispan manontolo. Mba hanaovana izany dia mila manala ny toe-javatra ianao remote-store cache Infinispan manokana (ao amin'ny rakitra standalone-ha.xml), ary avy eo dia misy zavatra voafaritra replicated-cache dia tsy ilaina intsony amin'ny lafiny mpizara Infinispan.

Fametrahana cache

Misy karazana cache roa ao amin'ny Keycloak:

  • eo an-toerana. Eo akaikin'ny angon-drakitra no misy azy io ary ampiasaina amin'ny fampihenana ny enta-mavesatra ao amin'ny angon-drakitra, ary koa ny fampihenana ny faharetan'ny valiny. Ity karazana cache ity dia mitahiry fanjakana, mpanjifa, andraikitra ary metadata mpampiasa. Ity karazana cache ity dia tsy averina, na dia ao anatin'ny cluster Keycloak aza ny cache. Raha miova ny fidirana ao amin'ny cache, dia alefa any amin'ireo mpizara sisa ao amin'ny cluster ny hafatra momba ny fanovana, ary avy eo dia nesorina tao amin'ny cache ny fidirana. Jereo ny famaritana work Jereo eto ambany raha mila fanazavana misimisy kokoa momba ny fomba fiasa.

  • Replika. Mandrindra ny fotoam-piasan'ny mpampiasa, marika an-tserasera, ary manara-maso ihany koa ny lesoka amin'ny fidirana mba hamantarana ny andrana phishing tenimiafina sy fanafihana hafa. Ny angon-drakitra voatahiry ao anatin'ireo cache ireo dia vonjimaika, voatahiry ao anaty RAM ihany, fa azo averina manerana ny cluster.

Infinispan caches

Fotoam-pivoriana - hevitra iray ao amin'ny Keycloak, cache misaraka antsoina authenticationSessions, dia ampiasaina hitahiry angon'ny mpampiasa manokana. Ny fangatahana avy amin'ireo cache ireo dia matetika ilain'ny mpizara sy ny mpizara Keycloak, fa tsy ny fampiharana. Eo no miditra an-tsehatra ny fiankinan-doha amin'ny fotoam-pivoriana mipetaka, ary ny cache toy izany dia tsy mila averina, na dia amin'ny tranga Active-Active aza.

Action Token. Hevitra iray hafa, matetika ampiasaina amin'ny toe-javatra isan-karazany rehefa, ohatra, ny mpampiasa dia tsy maintsy manao zavatra asynchronously amin'ny alalan'ny mailaka. Ohatra, mandritra ny dingana forget password cache actionTokens ampiasaina hanaraha-maso ny metadata amin'ireo famantarana mifandraika - ohatra, efa nampiasaina ny famantarana iray ary tsy azo velomina indray. Ity karazana cache ity matetika dia mila adika eo amin'ny foibe data.

Caching sy fahanterana ny angona voatahiry miasa hanamaivana ny enta-mavesatra amin'ny angon-drakitra. Ity karazana caching ity dia manatsara ny fahombiazany, saingy manampy olana mazava. Raha manavao data ny mpizara Keycloak iray, dia tsy maintsy ampandrenesina ireo mpizara hafa mba hahafahan'izy ireo manavao ny angona ao amin'ny cache. Keycloak dia mampiasa cache eo an-toerana realms, users ΠΈ authorization ho an'ny cache data avy amin'ny database.

Misy ihany koa ny cache manokana work, izay averina amin'ny foibe data rehetra. Izy io dia tsy mitahiry angona avy amin'ny angon-drakitra, fa mandefa hafatra momba ny fahanterana angon-drakitra ho an'ny kluster nodes eo anelanelan'ny ivontoerana data. Raha lazaina amin'ny teny hafa, raha vantany vao nohavaozina ny angon-drakitra, ny node Keycloak dia mandefa hafatra amin'ny node hafa ao amin'ny foibe data, ary koa ny nodes ao amin'ny foibe data hafa. Rehefa avy nahazo hafatra toy izany, ny node tsirairay dia mamafa ny angon-drakitra mifandraika amin'ny cache eo an-toerana.

Fivorian'ny mpampiasa. Caches misy anarana sessions, clientSessions, offlineSessions ΠΈ offlineClientSessions, dia averina matetika eo anelanelan'ny foibe angona ary ampiasaina hitahiry ny angona momba ny fivorian'ny mpampiasa izay mazoto rehefa mavitrika ao amin'ny navigateur ny mpampiasa. Ireo cache ireo dia miara-miasa amin'ny fanodinana ny fangatahana HTTP avy amin'ny mpampiasa farany, noho izany dia mifandray amin'ny fotoam-pivoriana mipetaka izy ireo ary tsy maintsy averina eny anelanelan'ny foibe angona.

Fiarovana ny herisetra. Cache loginFailures Ampiasaina hanaraha-maso ny angona diso amin'ny fidirana, toy ny hoe impiry ny mpampiasa no niditra tenimiafina diso. Ny famerenan'ity cache ity dia andraikitry ny mpitantana. Fa ho an'ny kajikajy marina, dia mendrika ny hampavitrika replication eo amin'ny angona foibe. Saingy amin'ny lafiny iray, raha tsy mamerina an'io data io ianao dia hanatsara ny fampandehanana, ary raha mipoitra ity olana ity dia mety tsy hihetsika ny replication.

Rehefa mamoaka kluster Infinispan ianao dia mila manampy famaritana cache amin'ny fisie fika:

<replicated-cache-configuration name="keycloak-sessions" mode="ASYNC" start="EAGER" batching="false">
</replicated-cache-configuration>

<replicated-cache name="work" configuration="keycloak-sessions" />
<replicated-cache name="sessions" configuration="keycloak-sessions" />
<replicated-cache name="offlineSessions" configuration="keycloak-sessions" />
<replicated-cache name="actionTokens" configuration="keycloak-sessions" />
<replicated-cache name="loginFailures" configuration="keycloak-sessions" />
<replicated-cache name="clientSessions" configuration="keycloak-sessions" />
<replicated-cache name="offlineClientSessions" configuration="keycloak-sessions" />

Tsy maintsy manamboatra sy manomboka ny cluster Infinispan ianao alohan'ny hanombohana ny cluster Keycloak

Avy eo dia mila manamboatra ianao remoteStore ho an'ny cache Keycloak. Mba hanaovana izany, dia ampy ny script, izay atao mitovy amin'ny teo aloha, izay ampiasaina hametrahana ny fari-piainana CACHE_OWNERS, mila mitahiry izany amin'ny rakitra ianao ary mametraka azy ao anaty lahatahiry /opt/jboss/startup-scripts:

Ny votoatin'ny script

embed-server --server-config=standalone-ha.xml --std-out=echo
batch

echo *** Update infinispan subsystem ***
/subsystem=infinispan/cache-container=keycloak:write-attribute(name=module, value=org.keycloak.keycloak-model-infinispan)

echo ** Add remote socket binding to infinispan server **
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=remote-cache:add(host=${remote.cache.host:localhost}, port=${remote.cache.port:11222})

echo ** Update replicated-cache work element **
/subsystem=infinispan/cache-container=keycloak/replicated-cache=work/store=remote:add( 
    passivation=false, 
    fetch-state=false, 
    purge=false, 
    preload=false, 
    shared=true, 
    remote-servers=["remote-cache"], 
    cache=work, 
    properties={ 
        rawValues=true, 
        marshaller=org.keycloak.cluster.infinispan.KeycloakHotRodMarshallerFactory, 
        protocolVersion=${keycloak.connectionsInfinispan.hotrodProtocolVersion} 
    } 
)

/subsystem=infinispan/cache-container=keycloak/replicated-cache=work:write-attribute(name=statistics-enabled,value=true)

echo ** Update distributed-cache sessions element **
/subsystem=infinispan/cache-container=keycloak/distributed-cache=sessions/store=remote:add( 
    passivation=false, 
    fetch-state=false, 
    purge=false, 
    preload=false, 
    shared=true, 
    remote-servers=["remote-cache"], 
    cache=sessions, 
    properties={ 
        rawValues=true, 
        marshaller=org.keycloak.cluster.infinispan.KeycloakHotRodMarshallerFactory, 
        protocolVersion=${keycloak.connectionsInfinispan.hotrodProtocolVersion} 
    } 
)
/subsystem=infinispan/cache-container=keycloak/distributed-cache=sessions:write-attribute(name=statistics-enabled,value=true)

echo ** Update distributed-cache offlineSessions element **
/subsystem=infinispan/cache-container=keycloak/distributed-cache=offlineSessions/store=remote:add( 
    passivation=false, 
    fetch-state=false, 
    purge=false, 
    preload=false, 
    shared=true, 
    remote-servers=["remote-cache"], 
    cache=offlineSessions, 
    properties={ 
        rawValues=true, 
        marshaller=org.keycloak.cluster.infinispan.KeycloakHotRodMarshallerFactory, 
        protocolVersion=${keycloak.connectionsInfinispan.hotrodProtocolVersion} 
    } 
)
/subsystem=infinispan/cache-container=keycloak/distributed-cache=offlineSessions:write-attribute(name=statistics-enabled,value=true)

echo ** Update distributed-cache clientSessions element **
/subsystem=infinispan/cache-container=keycloak/distributed-cache=clientSessions/store=remote:add( 
    passivation=false, 
    fetch-state=false, 
    purge=false, 
    preload=false, 
    shared=true, 
    remote-servers=["remote-cache"], 
    cache=clientSessions, 
    properties={ 
        rawValues=true, 
        marshaller=org.keycloak.cluster.infinispan.KeycloakHotRodMarshallerFactory, 
        protocolVersion=${keycloak.connectionsInfinispan.hotrodProtocolVersion} 
    } 
)
/subsystem=infinispan/cache-container=keycloak/distributed-cache=clientSessions:write-attribute(name=statistics-enabled,value=true)

echo ** Update distributed-cache offlineClientSessions element **
/subsystem=infinispan/cache-container=keycloak/distributed-cache=offlineClientSessions/store=remote:add( 
    passivation=false, 
    fetch-state=false, 
    purge=false, 
    preload=false, 
    shared=true, 
    remote-servers=["remote-cache"], 
    cache=offlineClientSessions, 
    properties={ 
        rawValues=true, 
        marshaller=org.keycloak.cluster.infinispan.KeycloakHotRodMarshallerFactory, 
        protocolVersion=${keycloak.connectionsInfinispan.hotrodProtocolVersion} 
    } 
)
/subsystem=infinispan/cache-container=keycloak/distributed-cache=offlineClientSessions:write-attribute(name=statistics-enabled,value=true)

echo ** Update distributed-cache loginFailures element **
/subsystem=infinispan/cache-container=keycloak/distributed-cache=loginFailures/store=remote:add( 
    passivation=false, 
    fetch-state=false, 
    purge=false, 
    preload=false, 
    shared=true, 
    remote-servers=["remote-cache"], 
    cache=loginFailures, 
    properties={ 
        rawValues=true, 
        marshaller=org.keycloak.cluster.infinispan.KeycloakHotRodMarshallerFactory, 
        protocolVersion=${keycloak.connectionsInfinispan.hotrodProtocolVersion} 
    } 
)
/subsystem=infinispan/cache-container=keycloak/distributed-cache=loginFailures:write-attribute(name=statistics-enabled,value=true)

echo ** Update distributed-cache actionTokens element **
/subsystem=infinispan/cache-container=keycloak/distributed-cache=actionTokens/store=remote:add( 
    passivation=false, 
    fetch-state=false, 
    purge=false, 
    preload=false, 
    shared=true, 
    cache=actionTokens, 
    remote-servers=["remote-cache"], 
    properties={ 
        rawValues=true, 
        marshaller=org.keycloak.cluster.infinispan.KeycloakHotRodMarshallerFactory, 
        protocolVersion=${keycloak.connectionsInfinispan.hotrodProtocolVersion} 
    } 
)
/subsystem=infinispan/cache-container=keycloak/distributed-cache=actionTokens:write-attribute(name=statistics-enabled,value=true)

echo ** Update distributed-cache authenticationSessions element **
/subsystem=infinispan/cache-container=keycloak/distributed-cache=authenticationSessions:write-attribute(name=statistics-enabled,value=true)

echo *** Update undertow subsystem ***
/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=proxy-address-forwarding,value=true)

run-batch
stop-embedded-server

Aza adino ny mametraka JAVA_OPTS ho an'ny node Keycloak hampandehanana HotRod: remote.cache.host, remote.cache.port ary ny anaran'ny serivisy jboss.site.name.

Rohy sy antontan-taratasy fanampiny

Nadika sy nomanin'ny mpiasa ho an'ny Habr ilay lahatsoratra Foibe fanofanana Slurm - fampianarana mafonja, fampianarana video ary fanofanana orinasa avy amin'ny manam-pahaizana manokana (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE)

Source: www.habr.com

Add a comment