Rith Keycloak i mód HA ar Kubernetes

Rith Keycloak i mód HA ar Kubernetes

TL; DR: beidh cur síos ar Keycloak, córas rialaithe rochtana foinse oscailte, anailís ar an bhfeiste inmheánach, sonraí cumraíochta.

Réamhrá agus príomhsmaointe

San Airteagal seo, feicfimid na príomh-smaointe a choinneáil i gcuimhne agus braisle Keycloak á imscaradh ar bharr Kubernetes.

Más mian leat tuilleadh eolais a fháil faoi Keycloak, féach le do thoil ar na naisc ag deireadh an ailt. D'fhonn tú féin a thumadh níos doimhne i gcleachtas, is féidir leat staidéar a dhéanamh ár stór le modúl a chuireann príomhsmaointe an ailt seo i bhfeidhm (tá an treoir seolta ann, san Airteagal seo beidh forbhreathnú ar an bhfeiste agus ar na socruithe, thart. aistritheoir).

Is córas casta é Keycloak atá scríofa i Java agus tógtha ar bharr freastalaí feidhmchláir. Fiadhúlra. I mbeagán focal, is creat údaraithe é a thugann cumas cónaidhm agus SSO (síniú aonair) d’úsáideoirí feidhmchlár.

Tugaimid cuireadh duit an t-oifigeach a léamh сайтVicipéid le haghaidh tuiscint mhionsonraithe.

Tosaigh Keycloak

Teastaíonn dhá fhoinse sonraí leanúnacha ag Keycloak le rith:

  • Bunachar sonraí a úsáidtear chun sonraí marthanacha a stóráil, mar fhaisnéis faoi úsáideoirí
  • Taisce datagrid, a úsáidtear chun sonraí a thaisceadh ón mbunachar sonraí, chomh maith le roinnt meiteashonraí gearrshaolacha agus a athraítear go minic a stóráil, mar sheisiúin úsáideoirí. Scaoilte Infinispan, atá i bhfad níos tapúla de ghnáth ná an bunachar sonraí. Ach in aon chás, tá na sonraí a shábháiltear in Infinispan gearrshaolach - agus ní gá é a shábháil áit éigin nuair a atosófar an braisle.

Oibríonn Keycloak i gceithre mhodh éagsúla:

  • Gnáth - próiseas amháin agus gan ach próiseas amháin, cumraithe trí chomhad neamhspleách.xml
  • cnuasach rialta (rogha ar fáil go mór) - Ní mór do gach próiseas an chumraíocht chéanna a úsáid, a chaithfear a shioncrónú de láimh. Stóráiltear socruithe i gcomhad neamhspleách-ha.xml, ina theannta sin, ní mór duit rochtain roinnte a dhéanamh ar an mbunachar sonraí agus cothromóir ualaigh.
  • Cnuasach fearainn - déantar tasc gnáthamh agus leadránach a thosú go tapa ar an mbraisle i mód gnáth de réir mar a fhásann an braisle, ós rud é gach uair a athraítear an chumraíocht, ní mór gach athrú a dhéanamh ar gach nód den bhraisle. Réitíonn modh oibriúcháin an fhearainn an cheist seo trí roinnt stórála comhroinnte a shocrú agus an chumraíocht a fhoilsiú. Stóráiltear na socruithe seo i gcomhad fearainn.xml
  • Macasamhlú idir ionaid sonraí - ar eagla go dteastaíonn uait Keycloak a rith i mbraisle de roinnt ionad sonraí, go minic in áiteanna geografacha éagsúla. Sa rogha seo, beidh a bhraisle féin de fhreastalaithe Keycloak ag gach ionad sonraí.

San Airteagal seo, déanfaimid breathnú níos dlúithe ar an dara rogha, i.e. cnuasach rialta, chomh maith le teagmháil bheag ar an ábhar macasamhlú idir ionaid sonraí, ós rud é go ndéanann sé ciall an dá rogha seo a reáchtáil i Kubernetes. Ar an ámharaí an tsaoil níl fadhb ag Kubernetes le socruithe na n-iliomad pods (nóid Keycloak) a shioncronú, mar sin braisle fearainn ní bheidh sé ró-dheacair é a dhéanamh.

Chomh maith leis sin tabhair faoi deara go bhfuil an focal braisle go dtí deireadh an ailt ach amháin maidir le grúpa de nóid Keycloak ag obair le chéile, ní gá tagairt a dhéanamh do bhraisle Kubernetes.

Braisle Keycloak Rialta

Chun Keycloak a rith sa mhód seo, ní mór duit:

  • bunachar sonraí seachtrach roinnte a bhunú
  • shuiteáil cothromóir ualach
  • líonra inmheánach a bheith agat le tacaíocht ip multicast

Ní dhéanfaimid anailís ar chumraíocht an bhunachair shonraí sheachtraigh, ós rud é nach é cuspóir an ailt seo é. Glacaimid leis go bhfuil bunachar sonraí oibre áit éigin - agus tá pointe nasctha againn leis. Go simplí, cuirfimid na sonraí seo leis na hathróga comhshaoil.

Chun tuiscint níos fearr a fháil ar an gcaoi a n-oibríonn Keycloak i mbraisle failover (HA), tá sé tábhachtach go mbeadh a fhios agat cé mhéad a bhraitheann sé go léir ar chumas cnuasaithe Wildfly.

Úsáideann Wildfly roinnt fochóras, úsáidtear cuid acu mar chothromóir ualaigh, úsáidtear cuid acu le haghaidh teipthe. Cinntíonn an cothromóir ualaigh infhaighteacht an fheidhmchláir nuair a bhíonn an nód braisle ró-ualaithe, agus cinntíonn failover infhaighteacht an fheidhmchláir fiú má theipeann ar chuid de na nóid bhraisle. Seo cuid de na fochórais seo:

  • mod_cluster: oibríonn sé i gcomhar le Apache mar chothromóir ualach HTTP, ag brath ar TCP multicast le haghaidh fionnachtain óstach réamhshocraithe. Is féidir cothromóir seachtrach a chur in ionad.

  • infinispan: taisce dáilte ag baint úsáide as cainéil JGroups mar chiseal iompair. Roghnach, is féidir leis an prótacal HotRod a úsáid chun cumarsáid a dhéanamh le braisle seachtrach Infinispan chun inneachar an taisce a shioncrónú.

  • jgroups: Soláthraíonn tacaíocht do chomhlachas grúpa le haghaidh seirbhísí atá ar fáil go mór bunaithe ar chainéil JGroups. Ligeann píopaí ainmnithe cásanna iarratais i mbraisle a nascadh i ngrúpaí ionas go mbeidh airíonna mar iontaofacht, ordúlacht agus íogaireacht teip ag an nasc.

cothromóir ualaigh

Agus cothromóir á shuiteáil mar rialtóir isteach i mbraisle Kubernetes, tá sé tábhachtach na rudaí seo a leanas a choinneáil i gcuimhne:

Tugann obair Keycloak le tuiscint gurb é seoladh iargúlta an chliaint a nascann trí HTTP leis an bhfreastalaí fíordheimhnithe fíorsheoladh IP ríomhaire an chliaint. Ba cheart do shocruithe cothromaíochta agus iontráil ceanntásca HTTP a shocrú i gceart X-Forwarded-For и X-Forwarded-Proto, agus coinnigh an bunteideal HOST. leagan is déanaí ingress-nginx (> 0.22.0) díchumasaítear é de réir réamhshocraithe

Gníomhachtaithe bratach proxy-address-forwarding trí athróg timpeallachta a shocrú PROXY_ADDRESS_FORWARDING в true tugann Keycloak an tuiscint go bhfuil sé ag rith taobh thiar de seachfhreastalaí.

Ní mór duit a chumasú freisin seisiúin greamaitheacha ag teacht isteach. Úsáideann Keycloak taisce dáilte Infinispan chun sonraí a bhaineann leis an seisiún fíordheimhnithe reatha agus leis an seisiún úsáideora a stóráil. Is úinéir aonair iad na taisce de réir réamhshocraithe, is é sin le rá go stóráiltear an seisiún áirithe sin ar nód braisle éigin agus ní mór do nóid eile é a iarraidh go cianda má theastaíonn rochtain uathu ar an seisiún sin.

Go sonrach, contrártha leis na doiciméid, níor oibrigh seisiún a cheangal le hainm an fhianán dúinn AUTH_SESSION_ID. Tá an t-atreorú lúbtha ag Keycloak, mar sin molaimid ainm fianán difriúil a roghnú don seisiún greamaitheach.

Cuireann Keycloak ainm an óstaigh a d’fhreagair ar dtús leis AUTH_SESSION_ID, agus ós rud é go n-úsáideann gach nód sa leagan atá ar fáil go mór an bunachar sonraí céanna, gach ceann acu Ba chóir go mbeadh ID nód uathúil agus uathúil chun idirbhearta a bhainistiú. Moltar a chur isteach JAVA_OPTS paraiméadair jboss.node.name и jboss.tx.node.id uathúil do gach nód - mar shampla, is féidir leat ainm an pod a shocrú. Má chuireann tú ainm an pod - ná déan dearmad faoin teorainn 23 carachtar le haghaidh athróga jboss, mar sin is fearr StatefulSet a úsáid, ní Imscaradh.

Raca amháin eile - má scriostar nó má atosaítear pod, cailltear a thaisce. Agus é seo san áireamh, is fiú líon na n-úinéirí taisce do gach taisce a shocrú go dtí dhá cheann ar a laghad, agus mar sin beidh cóip den taisce ann. Is é an réiteach a reáchtáil Script le haghaidh wildfly nuair a thosaíonn an pod, é a chur san eolaire /opt/jboss/startup-scripts i gcoimeádán:

Ábhar scripte

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

ansin socraigh luach an athróg timpeallachta CACHE_OWNERS chuig an teastáil.

Líonra príobháideach le tacaíocht ip multicast

Má tá Weavenet á úsáid agat mar do CNI, oibreoidh multicast láithreach - agus feicfidh do nóid Keycloak a chéile chomh luath agus a bheidh siad ar bun.

Mura bhfuil tacaíocht ip multicast agat i do bhraisle Kubernetes, is féidir leat JGroups a chumrú chun oibriú le prótacail eile chun nóid a aimsiú.

Is é an chéad rogha a úsáid KUBE_DNSa úsáideann headless service chun nóid Keycloak a aimsiú, ní gá duit ach ainm na seirbhíse a úsáidfear chun na nóid a aimsiú a chur ar aghaidh chuig JGroups.

Rogha eile ná an modh a úsáid KUBE_PING, a oibríonn leis an API chun nóid a aimsiú (ní mór duit a chumrú serviceAccount le cearta list и get, agus ansin na pods a chumrú chun oibriú leis seo serviceAccount).

Déantar an chaoi a ndéantar cuardach ar nóid do JGroups a chumrú trí athróga timpeallachta a shocrú JGROUPS_DISCOVERY_PROTOCOL и JGROUPS_DISCOVERY_PROPERTIES. Chun KUBE_PING ní mór duit pods a roghnú trí iarraidh namespace и labels.

️ Má úsáideann tú ilchraoladh agus má ritheann tú dhá bhraisle Keycloak nó níos mó sa bhraisle Kubernetes céanna (abair ceann san ainmspás production, an dara - staging) - is féidir le nóid ó bhraisle Keycloak amháin dul isteach i mbraisle eile. Bí cinnte seoladh ilchraolacháin uathúil a úsáid do gach braisle trí athróga a shocrújboss.default.multicast.address и jboss.modcluster.multicast.address в JAVA_OPTS.

Macasamhlú idir ionaid sonraí

Rith Keycloak i mód HA ar Kubernetes

Cumarsáid

Úsáideann Keycloak Braislí Taisce Infinispan iolracha do gach ionad sonraí a óstáil braislí Keycloack comhdhéanta de nóid Keycloak. Ach ag an am céanna, níl aon difríocht idir nóid Keycloak in ionaid sonraí éagsúla.

Úsáideann nóid eochrach Greille Sonraí Java seachtrach (freastalaithe Infinispan) chun cumarsáid a dhéanamh idir ionaid sonraí. Oibríonn cumarsáid de réir an phrótacail HotRod Infinispan.

Ní mór caches Infinispan a chumrú leis an tréith remoteStore, ionas gur féidir na sonraí a stóráil i gcianionad (i lárionad sonraí eile, thart. aistritheoir) taisce. Tá braislí infinispan ar leith i measc na bhfreastalaithe JDG, mar sin sonraí atá stóráilte ar JDG1 ar an suíomh site1 a mhacasamhlú go JDG2 ar an suíomh site2.

Ar deireadh, cuireann an freastalaí JDG glactha in iúl do fhreastalaithe Keycloak a bhraisle trí naisc chliaint, ar gné é de phrótacal HotRod. Nóid eochrach ar site2 nuashonrú a dhéanamh ar a gcuid taisce Infinispan agus beidh an seisiún úsáideora ar leith ar fáil ar na nóid Keycloak ar site2.

Is féidir freisin nach ndéanfaí cúltaca ar roinnt taisce agus diúltú go hiomlán sonraí a scríobh tríd an bhfreastalaí Infinispan. Chun seo a dhéanamh, ní mór duit an socrú a bhaint remote-store taisce Infinispan ar leith (i gcomhad neamhspleách-ha.xml), tar éis a roinnt ar leith replicated-cache ní bheidh sé ag teastáil a thuilleadh ar thaobh an fhreastalaí Infinispan.

Cásanna a shocrú

Tá dhá chineál taisce in Keycloak:

  • Áitiúil. Tá sé suite in aice leis an mbonn, feidhmíonn sé chun an t-ualach ar an mbunachar sonraí a laghdú, chomh maith le latency freagartha a laghdú. Stórálann an cineál seo taisce an réimse, na cliaint, na róil agus na meiteashonraí úsáideora. Ní dhéantar an cineál seo taisce a mhacasamhlú fiú más cuid de bhraisle Keycloak é an taisce seo. Má athraíonn iontráil éigin sa taisce, seoltar teachtaireacht athraithe chuig an gcuid eile de na freastalaithe sa bhraisle, agus ina dhiaidh sin fágtar an iontráil as an taisce. féach cur síos work thíos le haghaidh cur síos níos mionsonraithe ar an nós imeachta.

  • Inchurtha. Próiseálann sé seisiúin úsáideora, comharthaí as líne, agus déanann monatóireacht ar theipeanna logáil isteach chun iarrachtaí fioscaireachta pasfhocail agus ionsaithe eile a bhrath. Tá na sonraí atá stóráilte sna caches seo sealadach, stóráilte i RAM amháin, ach is féidir iad a mhacasamhlú ar fud an bhraisle.

Taisce Infinispan

Seisiúin - coincheap i Keycloak, caches ar leith, ar a dtugtar authenticationSessions, a úsáidtear chun sonraí úsáideoirí sonracha a stóráil. Is gnách go mbíonn iarratais ó na taisceanna seo ag teastáil ón mbrabhsálaí agus ó na freastalaithe Keycloak, ní feidhmchláir. Seo an áit a léiríonn an spleáchas ar sheisiúin ghreamaitheacha é féin, agus ní gá na caches sin iad féin a mhacasamhlú, fiú i gcás modh Gníomhach-Gníomhach.

Comharthaí gnímh. Coincheap eile, a úsáidtear de ghnáth le haghaidh cásanna éagsúla, nuair, mar shampla, is gá don úsáideoir rud éigin a dhéanamh go neamhshioncronach tríd an bpost. Mar shampla, le linn an nós imeachta forget password taisce actionTokens a úsáidtear chun meiteashonraí na ndearbhuithe gaolmhara a rianú - mar shampla, tá an comhartha in úsáid cheana féin agus ní féidir é a athghníomhú. Ba cheart an cineál seo taisce a mhacasamhlú de ghnáth idir datacenters.

Taiscí agus dul in éag sonraí stóráilte oibríonn sé chun an t-ualach a bhaint den bhunachar sonraí. Feabhsaíonn an taisceadh seo feidhmíocht ach cuireann sé fadhb shoiléir leis. Má dhéanann freastalaí Keycloak amháin na sonraí a nuashonrú, ní mór an chuid eile de na freastalaithe a chur ar an eolas ionas gur féidir leo a gcuid caches a nuashonrú. Úsáideann Keycloak caches áitiúla realms, users и authorization chun sonraí a thaisceadh ón mbunachar sonraí.

Tá taisce ar leith ann freisin work, a dhéantar a mhacasamhlú ar fud na n-ionad sonraí go léir. Ní stórálann sé aon sonraí ón mbunachar sonraí, ach cuireann sé teachtaireachtaí aosaithe sonraí chuig nóid bhraisle idir ionaid sonraí. I bhfocail eile, a luaithe a nuashonraítear na sonraí, seolann nód Keycloak teachtaireacht chuig nóid eile ina lárionad sonraí, chomh maith le nóid in ionaid sonraí eile. Nuair a fhaightear teachtaireacht den sórt sin, glanann gach nód na sonraí comhfhreagracha ina taisce áitiúil.

Seisiúin úsáideora. Taisce le hainmneacha sessions, clientSessions, offlineSessions и offlineClientSessions, a mhacasamhlú de ghnáth idir ionaid sonraí agus freastalaíonn siad chun sonraí a stóráil faoi sheisiúin úsáideora atá gníomhach agus an t-úsáideoir gníomhach sa bhrabhsálaí. Oibríonn na caches seo leis an bhfeidhmchlár a láimhseálann iarratais HTTP ó úsáideoirí deiridh, mar sin tá baint acu le seisiúin greamaitheacha agus ní mór iad a mhacasamhlú idir datacenters.

cosaint fórsa brute. Taisce loginFailures a úsáidtear chun sonraí earráide logáil isteach a rianú, mar shampla an líon uaireanta a chuir úsáideoir pasfhocal mícheart isteach. Is faoin riarthóir atá sé an taisce seo a mhacasamhlú. Ach le haghaidh ríomh cruinn, is fiú macasamhlú a ghníomhachtú idir ionaid sonraí. Ach ar an láimh eile, mura ndéanann tú na sonraí seo a mhacasamhlú, beidh tú in ann feidhmíocht a fheabhsú, agus má thagann an cheist seo chun cinn, ní féidir macasamhlú a chur i ngníomh.

Agus braisle Infinispan á rolladh amach, ní mór duit sainmhínithe taisce a chur leis an gcomhad socruithe:

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

Caithfidh tú braisle Infinispan a chumrú agus a thosú sula ritheann tú braisle Keycloak

Ansin ní mór duit a shocrú remoteStore le haghaidh caches Keycloak. Chun seo, is leor script, a dhéantar mar an gcéanna leis an gceann roimhe seo, a úsáidtear chun an athróg a shocrú CACHE_OWNERS, ní mór duit é a shábháil i gcomhad agus é a chur in eolaire /opt/jboss/startup-scripts:

Ábhar scripte

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

Ná déan dearmad a shuiteáil JAVA_OPTS le haghaidh nóid Keycloak a bheith ag obair HotRod: remote.cache.host, remote.cache.port agus ainm na seirbhíse jboss.site.name.

Naisc agus doiciméadú breise....

D'aistrigh agus d'ullmhaigh fostaithe an t-alt do Habr Ionad traenála slurm — dianchúrsaí, físchúrsaí agus oiliúint chorparáideach ó chleachtóirí (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE)

Foinse: will.com

Add a comment