Ruith Keycloak ann am modh HA air Kubernetes

Ruith Keycloak ann am modh HA air Kubernetes

TL; DR: bidh tuairisgeul air Keycloak, siostam smachd ruigsinneachd fosgailte, mion-sgrùdadh air an inneal a-staigh, mion-fhiosrachadh rèiteachaidh.

Ro-ràdh agus prìomh bheachdan

San artaigil seo, chì sinn na prìomh bheachdan a bu chòir a chumail nad inntinn nuair a bhios tu a ’cleachdadh cruinneachadh Keycloak air mullach Kubernetes.

Ma tha thu airson barrachd fhaighinn a-mach mu Keycloak, thoir sùil air na ceanglaichean aig deireadh an artaigil. Gus do bhogadh nas doimhne ann an cleachdadh, faodaidh tu sgrùdadh ar n-ionad-tasgaidh le modal a chuireas an gnìomh prìomh bheachdan an artaigil seo (tha an stiùireadh tòiseachaidh ann, san artaigil seo bidh sealladh farsaing air an inneal agus na roghainnean, mu thuairmeas. eadar-theangair).

Tha Keycloak na shiostam iom-fhillte a chaidh a sgrìobhadh ann an Java agus a chaidh a thogail air mullach frithealaiche tagraidh. Fiadh-bheatha. Ann an ùine ghoirid, is e frèam ùghdarrais a th’ ann a bheir comas do luchd-cleachdaidh tagradh co-chaidreachas agus SSO (soidhnigeadh singilte).

Tha sinn a’ toirt cuireadh dhut an t-oifigeach a leughadh làrach-lìn no Uicipeid airson tuigse mhionaideach.

Tòisich Keycloak

Feumaidh Keycloak dà thùs dàta leantainneach airson a ruith:

  • Stòr-dàta air a chleachdadh gus dàta leantainneach a stòradh, leithid fiosrachadh mu luchd-cleachdaidh
  • Tasgadh Datagrid, a thathas a’ cleachdadh airson dàta a thasgadh bhon stòr-dàta, a bharrachd air a bhith a’ stòradh meata-dàta geàrr-ùine agus air atharrachadh gu tric, leithid seiseanan luchd-cleachdaidh. Air fhoillseachadh Infinispan, a tha mar as trice gu math nas luaithe na an stòr-dàta. Ach co-dhiù, tha an dàta a chaidh a shàbhaladh ann an Infinispan neo-sheasmhach - agus chan fheumar a shàbhaladh an àiteigin nuair a thèid an cruinneachadh ath-thòiseachadh.

Bidh Keycloak ag obair ann an ceithir modhan eadar-dhealaichte:

  • àbhaisteach - aon phròiseas agus dìreach aon, air a rèiteachadh tro fhaidhle leis fhèin.xml
  • cruinneachadh cunbhalach (roghainn gu math ri fhaighinn) - Feumaidh a h-uile pròiseas an aon rèiteachadh a chleachdadh, a dh’ fheumar a shioncronachadh le làimh. Tha na roghainnean air an stòradh ann am faidhle leis fhèin-ha.xml, a bharrachd air an sin, feumaidh tu cothrom co-roinnte a dhèanamh air an stòr-dàta agus cothromachadh luchdan.
  • Buidheann fearainn - bidh tòiseachadh air a’ bhuidheann ann am modh àbhaisteach gu luath na ghnìomh àbhaisteach agus dòrainneach mar a bhios am buidheann a’ fàs, oir a h-uile uair a thèid an rèiteachadh atharrachadh, feumar a h-uile atharrachadh a dhèanamh air gach nód den bhuidheann. Bidh am modh obrachaidh fearainn a’ fuasgladh na cùise seo le bhith a’ stèidheachadh cuid de stòradh co-roinnte agus a’ foillseachadh an rèiteachaidh. Tha na roghainnean sin air an stòradh ann am faidhle àrainn.xml
  • Ath-riochdachadh eadar ionadan dàta - air eagal gu bheil thu airson Keycloak a ruith ann am buidheann de ghrunn ionadan dàta, mar as trice ann an diofar àiteachan cruinn-eòlasach. Anns an roghainn seo, bidh a bhuidheann fhèin de luchd-frithealaidh Keycloak aig gach ionad dàta.

San artaigil seo, bheir sinn sùil nas mionaidiche air an dàrna roghainn, i.e. cruinneachadh cunbhalach, a bharrachd air beagan suathadh air cuspair ath-riochdachadh eadar ionadan dàta, leis gu bheil e ciallach an dà roghainn seo a ruith ann an Kubernetes. Gu fortanach chan eil duilgheadas aig Kubernetes le bhith a’ sioncronadh roghainnean ioma pods (nòtaichean Keycloak), mar sin buidheann fearainn cha bhith e ro dhoirbh a dhèanamh.

Thoir an aire cuideachd gu bheil am facal brabhsair gus nach bi deireadh an artaigil a’ buntainn ach ri buidheann de nodan Keycloak ag obair còmhla, chan fheumar iomradh a thoirt air cruinneachadh Kubernetes.

Cluster Keycloak cunbhalach

Gus Keycloak a ruith sa mhodh seo, feumaidh tu:

  • stèidhich stòr-dàta co-roinnte taobh a-muigh
  • stàlaich cothromachadh luchdan
  • tha lìonra a-staigh agad le taic ip multicast

Cha dèan sinn mion-sgrùdadh air rèiteachadh an stòr-dàta taobh a-muigh, leis nach e adhbhar an artaigil seo. Gabhamaid ris gu bheil stòr-dàta obrach an àiteigin - agus tha puing ceangail againn ris. Cuiridh sinn dìreach an dàta seo ri caochladairean na h-àrainneachd.

Gus tuigse nas fheàrr fhaighinn air mar a tha Keycloak ag obair ann am buidheann fàilligeadh (HA), tha e cudromach fios a bhith agad dè a tha e uile an urra ri comasan cruinneachadh Wildfly.

Bidh Wildfly a’ cleachdadh grunn fo-shiostaman, cuid dhiubh air an cleachdadh mar chothromachadh luchdan, cuid air an cleachdadh airson fàiligeadh. Bidh an cothromaiche luchdan a’ dèanamh cinnteach gu bheil an tagradh ri fhaighinn nuair a tha cus cuideim air an nód cnuasachaidh, agus bidh fàilligeadh a’ dèanamh cinnteach gu bheil an tagradh ri fhaighinn eadhon ged a dh’ fhailicheas cuid de na nodan cnuasachaidh. Is e cuid de na fo-shiostaman sin:

  • mod_cluster: ag obair ann an co-bhonn ri Apache mar chothromachadh luchdan HTTP, an urra ri TCP multicast airson lorg aoigheachd bunaiteach. Faodar cothromachadh taobh a-muigh a chuir na àite.

  • infinispan: tasgadan sgaoilte a’ cleachdadh seanalan JGroups mar ìre còmhdhail. Gu roghnach, faodaidh e protocol HotRod a chleachdadh gus conaltradh le buidheann Infinispan taobh a-muigh gus susbaint an tasgadan a shioncronachadh.

  • jgroups: A’ toirt taic do chomann buidhne airson seirbheisean a tha rim faighinn gu mòr stèidhichte air seanalan JGroups. Tha pìoban ainmichte a’ leigeil le suidheachaidhean tagraidh ann am brabhsair a bhith air an ceangal ann am buidhnean gus am bi feartan aig a’ cheangal leithid earbsachd, òrdugh agus cugallachd fàilligeadh.

cothromachadh luchdan

Nuair a bhios tu a’ stàladh cothromachadh mar rianadair ingress ann am buidheann Kubernetes, tha e cudromach na rudan a leanas a chumail nad inntinn:

Tha obair Keycloak a’ ciallachadh gur e seòladh iomallach an neach-dèiligidh a tha a’ ceangal tro HTTP ris an t-seirbheisiche dearbhaidh an fhìor sheòladh IP aig coimpiutair an neach-dèiligidh. Bu chòir do shuidheachaidhean cothromachaidh agus ingress cinn-cinn HTTP a shuidheachadh gu ceart X-Forwarded-For и X-Forwarded-Proto, agus cùm an tiotal tùsail HOST. tionndadh as ùire ingress-nginx (> 0.22.0) ga chur à comas gu bunaiteach

Gnìomhachadh bratach proxy-address-forwarding le bhith a’ suidheachadh caochladair àrainneachd PROXY_ADDRESS_FORWARDING в true a’ toirt tuigse do Keycloak gu bheil e a’ ruith air cùl neach-ionaid.

Feumaidh tu cuideachd a chomasachadh seiseanan steigeach ann an dol a-steach. Bidh Keycloak a’ cleachdadh tasgadan sgaoilte Infinispan gus dàta a stòradh co-cheangailte ris an t-seisean dearbhaidh gnàthach agus seisean an neach-cleachdaidh. Is e sealbhadair singilte a th’ ann an tasgadan gu bunaiteach, ann am faclan eile gu bheil an seisean sònraichte sin air a stòradh air cuid de nód cnuasachaidh agus feumaidh nodan eile iarraidh air astar ma tha feum aca air cothrom air an t-seisean sin.

Gu sònraichte, an aghaidh na sgrìobhainnean, cha do dh’ obraich seisean le ainm a’ bhriosgaid dhuinn AUTH_SESSION_ID. Tha Keycloak air an ath-sheòladh a lùbadh, agus mar sin tha sinn a’ moladh ainm briosgaid eadar-dhealaichte a thaghadh airson an t-seisein steigeach.

Bidh Keycloak cuideachd a’ ceangal ainm an aoigh a fhreagair an toiseach AUTH_SESSION_ID, agus leis gu bheil gach nód san dreach a tha ri fhaighinn gu mòr a’ cleachdadh an aon stòr-dàta, gach fear dhiubh bu chòir a bhith ID nód sònraichte agus sònraichte airson gnothaichean a riaghladh. Thathas a’ moladh a chuir a-steach JAVA_OPTS paramadairean jboss.node.name и jboss.tx.node.id gun samhail airson gach nód - mar eisimpleir, faodaidh tu ainm a’ phoit a shuidheachadh. Ma chuireas tu ainm a 'phoit - na dì-chuimhnich mun chrìoch caractar 23 airson caochladairean jboss, agus mar sin tha e nas fheàrr StatefulSet a chleachdadh, chan e Deployment.

Aon ràcan eile - ma thèid pod a dhubhadh às no ath-thòiseachadh, tha an tasgadan aige air chall. Le seo san amharc, is fhiach an àireamh de shealbhadairean tasgadan airson a h-uile tasgadan a shuidheachadh gu co-dhiù dhà, agus mar sin bidh leth-bhreac den tasgadan ann. Is e am fuasgladh a bhith a 'ruith An sgriobt airson wildfly nuair a thòisicheas tu air a’ pod, ga chuir san eòlaire /opt/jboss/startup-scripts ann an soitheach:

Sgriobt susbaint

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

an uairsin suidhich luach caochladair na h-àrainneachd CACHE_OWNERS ris an fheum.

Lìonra prìobhaideach le taic ip multicast

Ma tha thu a’ cleachdadh Weavenet mar an CNI agad, obraichidh multicast sa bhad - agus chì na nodan Keycloak agad a chèile cho luath ‘s a bhios iad ag obair.

Mura h-eil taic ip multicast agad anns a’ bhuidheann Kubernetes agad, faodaidh tu JGroups a rèiteachadh gus obrachadh le protocolaidhean eile gus nodan a lorg.

Tha a 'chiad roghainn a chleachdadh KUBE_DNSa bhios a ’cleachdadh headless service gus nodan Keycloak a lorg, bidh thu dìreach a’ dol seachad air JGroups ainm na seirbheis a thèid a chleachdadh gus na nodan a lorg.

Is e roghainn eile an dòigh-obrach a chleachdadh KUBE_PING, a bhios ag obair leis an API airson nodan a lorg (feumaidh tu rèiteachadh serviceAccount le còirichean list и get, agus an uairsin rèitich na pods gus obrachadh le seo serviceAccount).

Tha mar a thathar a’ lorg nodan airson JGroups air a rèiteachadh le bhith a’ suidheachadh caochladairean àrainneachd JGROUPS_DISCOVERY_PROTOCOL и JGROUPS_DISCOVERY_PROPERTIES. airson KUBE_PING feumaidh tu pods a thaghadh le bhith a’ faighneachd namespace и labels.

️ Ma chleachdas tu multicast agus ma ruitheas tu dà chlàr Keycloak no barrachd anns an aon bhuidheann Kubernetes (canaidh sinn fear ann an namespace production, an dàrna - staging) - faodaidh nodan bho aon bhuidheann Keycloak a dhol còmhla ri buidheann eile. Dèan cinnteach gun cleachd thu seòladh multicast sònraichte airson gach buidheann le bhith a’ suidheachadh chaochladaireanjboss.default.multicast.address и jboss.modcluster.multicast.address в JAVA_OPTS.

Ath-riochdachadh eadar ionadan dàta

Ruith Keycloak ann am modh HA air Kubernetes

Связь

Bidh Keycloak a’ cleachdadh grunn Chruinneachaidhean Cache Infinispan fa leth airson gach ionad dàta a’ toirt aoigheachd do chruinneachaidhean Keycloack air an dèanamh suas de nodan Keycloak. Ach aig an aon àm, chan eil eadar-dhealachadh sam bith eadar nodan Keycloak ann an diofar ionadan dàta.

Bidh nodan cloak a’ cleachdadh Grid Dàta Java taobh a-muigh (frithealaichean Infinispan) gus conaltradh eadar ionadan dàta. Bidh conaltradh ag obair a rèir a’ phròtacal Hotrod gun chrìoch.

Feumaidh caches Infinispan a bhith air an rèiteachadh leis a 'ghnè remoteStore, gus an tèid an dàta a stòradh aig astar (ann an ionad dàta eile, mu thuairmeas. eadar-theangair) tasgadan. Tha cruinneachaidhean infinispan fa leth am measg luchd-frithealaidh JDG, mar sin dàta air a stòradh air JDG1 air an làrach site1 Thèid ath-aithris gu JDG2 air an làrach site2.

Mu dheireadh, bidh am frithealaiche JDG a tha a’ faighinn a’ toirt fios do na frithealaichean Keycloak mun bhuidheann aca tro cheanglaichean teachdaiche, a tha na fheart den phròtacal HotRod. Tha nodan meur-chlàr air site2 ùraich na caches Infinispan aca agus bidh an seisean cleachdaiche sònraichte ri fhaighinn air na nodan Keycloak air site2.

Tha e comasach cuideachd gun a bhith a’ faighinn cùl-taic de chuid de tasgadan agus diùltadh gu tur dàta a sgrìobhadh tron ​​​​t-seirbheisiche Infinispan. Gus seo a dhèanamh, feumaidh tu an suidheachadh a thoirt air falbh remote-store tasgadan Infinispan sònraichte (ann am faidhle leis fhèin-ha.xml), às deidh sin cuid sònraichte replicated-cache cha bhith feum air tuilleadh air taobh frithealaiche Infinispan.

A 'suidheachadh caches

Tha dà sheòrsa caches ann an Keycloak:

  • Ionadail. Tha e suidhichte ri taobh a 'bhunait, a' frithealadh gus an luchd air an stòr-dàta a lùghdachadh, a bharrachd air a bhith a 'lùghdachadh latency freagairt. Bidh an seòrsa tasgadan seo a’ stòradh na rìoghachd, teachdaichean, dreuchdan, agus meata-dàta luchd-cleachdaidh. Chan eil an seòrsa tasgadan seo air ath-aithris eadhon ged a tha an tasgadan seo mar phàirt de chruinneachadh Keycloak. Ma dh’ atharraicheas cuid a-steach don tasgadan, thèid teachdaireachd atharrachaidh a chuir chun chòrr de na frithealaichean sa bhuidheann, agus às deidh sin tha an inntrig air a dùnadh a-mach às an tasgadan. faic tuairisgeul work gu h-ìosal airson tuairisgeul nas mionaidiche air a’ mhodh-obrach.

  • Replicable. Pròiseas seiseanan luchd-cleachdaidh, comharran far-loidhne, agus a’ cumail sùil air fàilligidhean logadh a-steach gus oidhirpean fiasgaich facal-faire agus ionnsaighean eile a lorg. Tha an dàta a tha air a stòradh anns na caches sin sealach, air a stòradh ann an RAM a-mhàin, ach faodar ath-aithris air feadh a’ bhuidheann.

Tasgaidhean Infinispan

Seiseanan - bun-bheachd ann an Keycloak, caches air leth, ris an canar authenticationSessions, air an cleachdadh gus dàta luchd-cleachdaidh sònraichte a stòradh. Mar as trice bidh feum air iarrtasan bho na caches sin leis a’ bhrabhsair agus frithealaichean Keycloak, chan e tagraidhean. Seo far a bheil an eisimeileachd air seiseanan steigeach ga nochdadh fhèin, agus chan fheum na caches sin iad fhèin a bhith air an ath-aithris, eadhon a thaobh modh Active-Active.

Comharran gnìomh. Bun-bheachd eile, mar as trice air a chleachdadh airson diofar shuidheachaidhean, nuair, mar eisimpleir, feumaidh an neach-cleachdaidh rudeigin a dhèanamh asyncronach tron ​​​​phost. Mar eisimpleir, rè a 'mhodh-obrachaidh forget password tasgadan actionTokens air a chleachdadh gus meata-dàta comharran co-cheangailte a leantainn - mar eisimpleir, chaidh an tòcan a chleachdadh mu thràth agus chan urrainnear a chuir an gnìomh a-rithist. Bu chòir an seòrsa seo de thasg mar as trice a bhith air ath-aithris eadar datacenters.

Tasgadh agus tighinn gu crìch dàta air a stòradh ag obair gus an luchd a thoirt far an stòr-dàta. Bidh an tasgadh seo a’ leasachadh coileanadh ach a’ cur duilgheadas follaiseach ris. Ma dh’ ùraicheas aon fhrithealaiche Keycloak an dàta, feumar fios a chuir chun chòrr de na frithealaichean gus an urrainn dhaibh na tasgadan aca ùrachadh. Bidh Keycloak a’ cleachdadh caches ionadail realms, users и authorization airson dàta a thasgadh bhon stòr-dàta.

Tha garaids air leth ann cuideachd work, a tha air ath-aithris thar gach ionad dàta. Cha bhith e fhèin a’ stòradh dàta sam bith bhon stòr-dàta, ach bidh e a’ cur teachdaireachdan aois dàta gu nodan cnuasachaidh eadar ionadan dàta. Ann am faclan eile, cho luath ‘s a thèid an dàta ùrachadh, bidh an nód Keycloak a’ cur teachdaireachd gu nodan eile san ionad dàta aige, a bharrachd air nodan ann an ionadan dàta eile. Nuair a gheibhear a leithid de theachdaireachd, bidh gach nód a’ glanadh an dàta co-fhreagarrach anns na caches ionadail aige.

Seiseanan luchd-cleachdaidh. Tasglannan le ainmean sessions, clientSessions, offlineSessions и offlineClientSessions, mar as trice air an ath-aithris eadar ionadan dàta agus bidh iad a’ stòradh dàta mu sheiseanan luchd-cleachdaidh a tha gnìomhach fhad ‘s a tha an neach-cleachdaidh gnìomhach sa bhrobhsair. Bidh na caches sin ag obair leis an aplacaid a làimhsicheas iarrtasan HTTP bho luchd-cleachdaidh deireannach, agus mar sin tha iad co-cheangailte ri seiseanan steigeach agus feumar an ath-aithris eadar datacenters.

dìon feachd brùideil. Tasgadh loginFailures air a chleachdadh gus sùil a chumail air dàta mearachd logadh a-steach, leithid an àireamh de thursan a chuir neach-cleachdaidh a-steach facal-faire ceàrr. Tha e an urra ris an rianaire ath-riochdachadh an tasgadan seo. Ach airson àireamhachadh ceart, is fhiach ath-riochdachadh a chuir an gnìomh eadar ionadan dàta. Ach air an làimh eile, mura dèan thu ath-riochdachadh air an dàta seo, bidh e comasach dhut coileanadh a leasachadh, agus ma dh ’èiricheas a’ cheist seo, is dòcha nach tèid ath-riochdachadh a chuir an gnìomh.

Nuair a bhios tu a’ sgaoileadh cruinneachadh Infinispan, feumaidh tu mìneachaidhean tasgadan a chur ris an fhaidhle roghainnean:

<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" />

Feumaidh tu an cruinneachadh Infinispan a rèiteachadh agus a thòiseachadh mus ruith thu am brabhsair Keycloak

An uairsin feumaidh tu a shuidheachadh remoteStore airson Keycloak caches. Airson seo, tha sgriobt gu leòr, a tha air a dhèanamh coltach ris an fhear roimhe, a tha air a chleachdadh gus an caochladair a shuidheachadh CACHE_OWNERS, feumaidh tu a shàbhaladh gu faidhle agus a chuir ann an eòlaire /opt/jboss/startup-scripts:

Sgriobt susbaint

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

Na dìochuimhnich a stàladh JAVA_OPTS airson nodan Keycloak a bhith ag obair HotRod: remote.cache.host, remote.cache.port agus ainm seirbheis jboss.site.name.

Ceanglaichean agus sgrìobhainnean a bharrachd

Chaidh an artaigil eadar-theangachadh agus ullachadh dha Habr le luchd-obrach Ionad trèanaidh slurm - dian-chùrsaichean, cùrsaichean bhidio agus trèanadh corporra bho chleachdaichean (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE)

Source: www.habr.com

Cuir beachd ann