Keycloak-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ HA แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜ Kubernetes-แƒ–แƒ”

Keycloak-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ HA แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜ Kubernetes-แƒ–แƒ”

TL; DR: แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ Keycloak-แƒ˜แƒก แƒแƒฆแƒฌแƒ”แƒ แƒ, แƒฆแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ, แƒจแƒ˜แƒ“แƒ แƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒแƒœแƒแƒšแƒ˜แƒ–แƒ˜, แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜.

แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜ แƒ“แƒ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒ˜

แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“ แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฃแƒœแƒ“แƒ แƒ’แƒ•แƒแƒฎแƒกแƒแƒ•แƒ“แƒ”แƒก Kubernetes-แƒ˜แƒก แƒ—แƒแƒ•แƒ–แƒ” Keycloak แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒแƒก.

แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— แƒ’แƒแƒ˜แƒ’แƒแƒ— แƒ›แƒ”แƒขแƒ˜ Keycloak-แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ‘แƒแƒšแƒแƒก. แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒฃแƒคแƒ แƒ แƒ›แƒ”แƒขแƒแƒ“ แƒฉแƒแƒ”แƒคแƒšแƒ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒจแƒ˜, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒ แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒชแƒแƒ•แƒ˜ แƒ›แƒแƒ“แƒฃแƒšแƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ  แƒ˜แƒ“แƒ”แƒ”แƒ‘แƒก (แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ แƒ˜แƒฅ แƒแƒ แƒ˜แƒก, แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒ›แƒแƒ’แƒแƒฌแƒ•แƒ“แƒ˜แƒ— แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒฎแƒ˜แƒšแƒ•แƒแƒก, แƒ“แƒแƒแƒฎแƒš. แƒ›แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ”แƒšแƒ˜).

Keycloak แƒแƒ แƒ˜แƒก แƒฏแƒแƒ•แƒแƒจแƒ˜ แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒงแƒแƒ•แƒšแƒ˜แƒกแƒ›แƒแƒ›แƒชแƒ•แƒ”แƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ“แƒ แƒแƒ’แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒ’แƒแƒ แƒ”แƒฃแƒšแƒ˜ แƒ‘แƒฃแƒ“แƒ”. แƒ›แƒแƒ™แƒšแƒ”แƒ“, แƒ”แƒก แƒแƒ แƒ˜แƒก แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒฉแƒแƒ แƒฉแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒซแƒšแƒ”แƒ•แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก แƒคแƒ”แƒ“แƒ”แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ SSO (แƒ”แƒ แƒ—แƒฏแƒ”แƒ แƒแƒ“แƒ˜ แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก) แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒก.

แƒ’แƒ”แƒžแƒแƒขแƒ˜แƒŸแƒ”แƒ‘แƒ˜แƒ— แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒ— แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒœแƒแƒฎแƒ•แƒ แƒแƒœ แƒ•แƒ˜แƒ™แƒ˜แƒžแƒ”แƒ“แƒ˜แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒ’แƒแƒ’แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

Keycloak-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ

Keycloak แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒแƒ  แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ• แƒฌแƒงแƒแƒ แƒแƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“:

  • แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ
  • แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ“แƒ˜แƒก แƒฅแƒ”แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒ“แƒแƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“, แƒแƒกแƒ”แƒ•แƒ” แƒฎแƒแƒœแƒ›แƒแƒ™แƒšแƒ” แƒ“แƒ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒชแƒ•แƒแƒšแƒ”แƒ‘แƒแƒ“แƒ˜ แƒ›แƒ”แƒขแƒแƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ˜. แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ Infinispan, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒกแƒแƒ’แƒ แƒซแƒœแƒแƒ‘แƒšแƒแƒ“ แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜แƒ แƒ•แƒ˜แƒ“แƒ แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ  แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, Infinispan-แƒจแƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ”แƒคแƒ”แƒ›แƒ”แƒ แƒฃแƒšแƒ˜แƒ - แƒ“แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ แƒกแƒแƒ“แƒ›แƒ” แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ แƒ’แƒแƒ“แƒแƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ‘แƒ.

Keycloak แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒแƒ—แƒฎ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜:

  • แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ - แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜, แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜.xml
  • แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ (แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒแƒ‘แƒ˜แƒก แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜) - แƒงแƒ•แƒ”แƒšแƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ›แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฎแƒ”แƒšแƒ˜แƒ—. แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒคแƒแƒ˜แƒšแƒจแƒ˜ standalone-ha.xml, แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒฅแƒแƒœแƒ“แƒ”แƒ— แƒกแƒแƒ”แƒ แƒ—แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒ–แƒ” แƒ“แƒ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ แƒ˜.
  • แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ โ€” แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ  แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜ แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ แƒฃแƒขแƒ˜แƒœแƒฃแƒšแƒ˜ แƒ“แƒ แƒ›แƒแƒกแƒแƒฌแƒงแƒ”แƒœแƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ แƒ˜แƒ–แƒ แƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒงแƒแƒ•แƒ”แƒš แƒฏแƒ”แƒ แƒ–แƒ”, แƒ แƒแƒชแƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ, แƒงแƒ•แƒ”แƒšแƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒฃแƒš แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”. แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜ แƒแƒ› แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒก แƒฌแƒงแƒ•แƒ”แƒขแƒก แƒกแƒแƒ–แƒ˜แƒแƒ แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ”แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒคแƒแƒ˜แƒšแƒจแƒ˜ domain.xml
  • แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก โ€” แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— Keycloak-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜, แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒ”แƒแƒ’แƒ แƒแƒคแƒ˜แƒฃแƒš แƒแƒ“แƒ’แƒ˜แƒšแƒแƒก. แƒแƒ› แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒจแƒ˜, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒก แƒ”แƒฅแƒœแƒ”แƒ‘แƒ Keycloak แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜.

แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒแƒ“ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒ›แƒ”แƒแƒ แƒ” แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒก, แƒแƒœแƒฃ แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒชแƒแƒขแƒแƒ—แƒ˜ แƒจแƒ”แƒ•แƒ”แƒฎแƒ”แƒ‘แƒ˜แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ—แƒ”แƒ›แƒแƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒแƒ–แƒ แƒ˜ แƒแƒฅแƒ•แƒก แƒแƒ› แƒแƒ แƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก Kubernetes-แƒจแƒ˜. แƒกแƒแƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒแƒ“, Kubernetes-แƒจแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒแƒ“แƒ˜แƒก (Keycloak แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก) แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ แƒ—แƒฃแƒšแƒ˜.

แƒแƒกแƒ”แƒ•แƒ” แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒ—, แƒ แƒแƒ› แƒกแƒ˜แƒขแƒงแƒ•แƒ แƒ›แƒขแƒ”แƒ•แƒแƒœแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒœแƒแƒฌแƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ Keycloak แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒฏแƒ’แƒฃแƒคแƒ–แƒ”, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ”แƒœ แƒ”แƒ แƒ—แƒแƒ“, แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒ Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ–แƒ” แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ.

แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ Keycloak แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜

Keycloak แƒแƒ› แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜ แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ—:

  • แƒ’แƒแƒ แƒ” แƒกแƒแƒ”แƒ แƒ—แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ
  • แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ แƒ˜
  • แƒแƒฅแƒ•แƒก แƒจแƒ˜แƒ“แƒ แƒฅแƒกแƒ”แƒšแƒ˜ IP multicast แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒ—

แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒ’แƒแƒ แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ–แƒแƒœแƒ˜. แƒ“แƒแƒ•แƒฃแƒจแƒ•แƒแƒ—, แƒ แƒแƒ› แƒกแƒแƒ“แƒฆแƒแƒช แƒแƒ แƒ˜แƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ - แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ›แƒแƒกแƒ—แƒแƒœ แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ˜แƒก แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ˜. แƒฉแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ— แƒแƒ› แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒก.

แƒฃแƒ™แƒ”แƒ— แƒ แƒแƒ› แƒ’แƒแƒ•แƒ˜แƒ’แƒแƒ—, แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Keycloak แƒคแƒแƒ˜แƒšแƒ•แƒ”แƒ แƒ˜แƒก (HA) แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜, แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ แƒ•แƒ˜แƒชแƒแƒ“แƒ”แƒ—, แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒแƒ แƒ˜แƒก แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜ Wildfly-แƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ–แƒ”.

Wildfly แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฅแƒ•แƒ”แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒก, แƒ–แƒแƒ’แƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒ›แƒแƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ‘แƒ”แƒšแƒ˜, แƒ–แƒแƒ’แƒ˜แƒช แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒขแƒแƒšแƒ”แƒ แƒแƒœแƒขแƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ แƒ˜ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒแƒ‘แƒแƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒฃแƒšแƒ˜แƒ, แƒฎแƒแƒšแƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒขแƒแƒšแƒ”แƒ แƒแƒœแƒขแƒแƒ‘แƒ แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒแƒ‘แƒแƒก แƒ›แƒแƒจแƒ˜แƒœแƒแƒช แƒ™แƒ˜, แƒ—แƒฃ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒ•แƒ”แƒ  แƒฎแƒ”แƒ แƒฎแƒ“แƒ”แƒ‘แƒ. แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒแƒ› แƒฅแƒ•แƒ”แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒ“แƒแƒœ:

  • mod_cluster: แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Apache-แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“, แƒ แƒแƒ’แƒแƒ แƒช HTTP แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ แƒ˜, แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ TCP multicast-แƒ–แƒ”, แƒ แƒแƒ—แƒ แƒ›แƒแƒ˜แƒซแƒ˜แƒแƒก แƒฐแƒแƒกแƒขแƒ”แƒ‘แƒ˜ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“. แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ˜แƒชแƒ•แƒแƒšแƒแƒก แƒ’แƒแƒ แƒ” แƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ แƒ˜แƒ—.

  • infinispan: แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฅแƒ”แƒจแƒ˜ JGroups แƒแƒ แƒฎแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒกแƒแƒขแƒ แƒแƒœแƒกแƒžแƒแƒ แƒขแƒ แƒคแƒ”แƒœแƒแƒ“. แƒ’แƒแƒ แƒ“แƒ แƒแƒ›แƒ˜แƒกแƒ, แƒ›แƒแƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก HotRod แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜ แƒ’แƒแƒ แƒ” Infinispan แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ—แƒแƒœ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฅแƒ”แƒจแƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜แƒก แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

  • jgroups: แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒฏแƒ’แƒฃแƒคแƒฃแƒ แƒ˜ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒแƒก JGroups แƒแƒ แƒฎแƒ”แƒ‘แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒฆแƒแƒš แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ“แƒแƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒแƒซแƒšแƒ”แƒ•แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ”แƒ‘แƒก แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒก แƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒแƒ“, แƒ แƒแƒ—แƒ แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒก แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒ˜แƒกแƒ”แƒ—แƒ˜ แƒ—แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒกแƒแƒ˜แƒ›แƒ”แƒ“แƒแƒแƒ‘แƒ, แƒ›แƒแƒฌแƒ”แƒกแƒ แƒ˜แƒ’แƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒ’แƒ แƒซแƒœแƒแƒ‘แƒ”แƒšแƒแƒ‘แƒ แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒšแƒแƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒ แƒ—.

แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ แƒ˜

แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ แƒ˜แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒจแƒ”แƒฆแƒฌแƒ”แƒ•แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜แƒ แƒ’แƒแƒฎแƒกแƒแƒ•แƒ“แƒ”แƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜:

Keycloak แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒก, แƒ แƒแƒ› แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ HTTP-แƒ˜แƒ— แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก, แƒแƒ แƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ™แƒแƒ›แƒžแƒ˜แƒฃแƒขแƒ”แƒ แƒ˜แƒก แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜ IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜. แƒ‘แƒแƒšแƒแƒœแƒกแƒ”แƒ แƒ˜แƒกแƒ แƒ“แƒ แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ›แƒ แƒกแƒฌแƒแƒ แƒแƒ“ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒงแƒ”แƒœแƒแƒœ HTTP แƒกแƒแƒ—แƒแƒฃแƒ แƒ”แƒ‘แƒ˜ X-Forwarded-For ะธ X-Forwarded-Protoแƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒ”แƒ— แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒฃแƒ แƒ˜ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜ HOST. แƒฃแƒแƒฎแƒšแƒ”แƒกแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ ingress-nginx (>0.22.0) แƒ’แƒแƒ›แƒแƒ แƒ—แƒแƒ•แƒก แƒแƒ›แƒแƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“

แƒ“แƒ แƒแƒจแƒ˜แƒก แƒ’แƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ”แƒ‘แƒ proxy-address-forwarding แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— PROXY_ADDRESS_FORWARDING ะฒ true แƒแƒซแƒšแƒ”แƒ•แƒก Keycloak-แƒก แƒ˜แƒ›แƒ˜แƒก แƒ’แƒแƒ’แƒ”แƒ‘แƒแƒก, แƒ แƒแƒ› แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒžแƒ แƒแƒฅแƒกแƒ˜แƒก แƒ›แƒ˜แƒฆแƒ›แƒ.

แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒกแƒ”แƒ•แƒ” แƒฃแƒœแƒ“แƒ แƒฉแƒแƒ แƒ—แƒแƒ— แƒฌแƒ”แƒ‘แƒแƒ•แƒแƒœแƒ˜ แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ›แƒแƒกแƒ•แƒšแƒ˜แƒกแƒแƒก. Keycloak แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒš Infinispan แƒฅแƒ”แƒจแƒก, แƒ แƒแƒ—แƒ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ›แƒ“แƒ˜แƒœแƒแƒ แƒ” แƒกแƒ”แƒกแƒ˜แƒแƒกแƒ—แƒแƒœ แƒ“แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒ”แƒกแƒ˜แƒแƒกแƒ—แƒแƒœ. แƒฅแƒ”แƒจแƒ”แƒ‘แƒ˜ แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒœแƒ˜แƒ แƒ”แƒ‘แƒก แƒ”แƒ แƒ— แƒ›แƒคแƒšแƒแƒ‘แƒ”แƒšแƒ—แƒแƒœ, แƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ”แƒก แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒกแƒ”แƒกแƒ˜แƒ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ— แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ” แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ›แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ›แƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒœ แƒ˜แƒ’แƒ˜ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒแƒ“, แƒ—แƒฃ แƒ›แƒแƒ— แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒแƒ› แƒกแƒ”แƒกแƒ˜แƒแƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒ.

แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒแƒ“, แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒกแƒแƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’แƒแƒ“, แƒกแƒ”แƒกแƒ˜แƒ˜แƒก แƒ›แƒ˜แƒ›แƒแƒ’แƒ แƒ”แƒ‘แƒ แƒฅแƒฃแƒฅแƒ˜-แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜แƒ— แƒแƒ  แƒ’แƒแƒ›แƒแƒ’แƒ•แƒแƒ“แƒ’แƒ”แƒ‘แƒ AUTH_SESSION_ID. Keycloak-แƒก แƒแƒฅแƒ•แƒก แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒก แƒชแƒ˜แƒ™แƒšแƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ’แƒ˜แƒ แƒฉแƒ”แƒ•แƒ— แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ— แƒกแƒฎแƒ•แƒ แƒฅแƒฃแƒฅแƒ˜-แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒฌแƒ”แƒ‘แƒแƒ•แƒแƒœแƒ˜ แƒกแƒ”แƒกแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

Keycloak แƒแƒกแƒ”แƒ•แƒ” แƒแƒœแƒ˜แƒญแƒ”แƒ‘แƒก แƒ˜แƒ› แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒฃแƒžแƒแƒกแƒฃแƒฎแƒ AUTH_SESSION_IDแƒ“แƒ แƒ แƒแƒ“แƒ’แƒแƒœ แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒ›แƒแƒฆแƒแƒš แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ› แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒจแƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ”แƒ แƒ—แƒกแƒ แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒก, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜ แƒฃแƒœแƒ“แƒ แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒชแƒแƒšแƒ™แƒ” แƒ“แƒ แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜ แƒขแƒ แƒแƒœแƒ–แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฉแƒแƒกแƒ›แƒ JAVA_OPTS แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜ jboss.node.name ะธ jboss.tx.node.id แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก - แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ—, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒฉแƒแƒกแƒ•แƒแƒ— แƒžแƒแƒ“แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜. แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ— pod แƒกแƒแƒฎแƒ”แƒšแƒก, แƒแƒ  แƒ“แƒแƒ˜แƒ•แƒ˜แƒฌแƒงแƒแƒ— jboss แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒก 23 แƒกแƒ˜แƒ›แƒ‘แƒแƒšแƒแƒก แƒšแƒ˜แƒ›แƒ˜แƒขแƒ˜, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— StatefulSet แƒ•แƒ˜แƒ“แƒ แƒ” Deployment.

แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒกแƒแƒ™แƒแƒ›แƒ˜แƒกแƒ˜แƒ - แƒ—แƒฃ แƒžแƒแƒ“แƒ˜ แƒฌแƒแƒ˜แƒจแƒšแƒ”แƒ‘แƒ แƒแƒœ แƒ’แƒแƒ“แƒแƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ‘แƒ, แƒ›แƒ˜แƒกแƒ˜ แƒฅแƒ”แƒจแƒ˜ แƒ˜แƒ™แƒแƒ แƒ’แƒ”แƒ‘แƒ. แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒฆแƒ˜แƒ แƒก แƒงแƒ•แƒ”แƒšแƒ แƒฅแƒ”แƒจแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฅแƒ”แƒจแƒ˜แƒก แƒ›แƒคแƒšแƒแƒ‘แƒ”แƒšแƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒแƒ แƒ–แƒ”, แƒ แƒแƒ—แƒ แƒ“แƒแƒ แƒฉแƒ”แƒก แƒฅแƒ”แƒจแƒ˜แƒก แƒแƒกแƒšแƒ˜. แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ แƒกแƒ˜แƒ แƒ‘แƒ˜แƒšแƒ˜แƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜ Wildfly-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒžแƒแƒ“แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒ’แƒแƒœแƒแƒ—แƒแƒ•แƒกแƒ”แƒ— แƒ˜แƒ’แƒ˜ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ /opt/jboss/startup-scripts แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜:

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜

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

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒแƒงแƒ”แƒœแƒ”แƒ— แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ CACHE_OWNERS แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒแƒ›แƒ“แƒ”.

แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ IP แƒ›แƒฃแƒšแƒขแƒ˜แƒ™แƒแƒกแƒขแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒ—

แƒ—แƒฃ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— Weavenet-แƒก, แƒ แƒแƒ’แƒแƒ แƒช CNI, Multicast แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ“แƒแƒฃแƒงแƒแƒ•แƒœแƒ”แƒ‘แƒšแƒ˜แƒ• - แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ Keycloak แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ˜แƒœแƒแƒฎแƒแƒ•แƒ”แƒœ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒ˜ แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒ.

แƒ—แƒฃ แƒแƒ  แƒ’แƒแƒฅแƒ•แƒ— ip multicast แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— JGroups แƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ”แƒ‘แƒ—แƒแƒœ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒแƒซแƒ”แƒ‘แƒœแƒแƒ“.

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜ แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ KUBE_DNSแƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก headless service Keycloak แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒžแƒแƒ•แƒœแƒ”แƒšแƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒกแƒชแƒ”แƒ›แƒ— JGroups แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒแƒซแƒ”แƒ‘แƒœแƒแƒ“.

แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜แƒ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ KUBE_PING, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก API-แƒกแƒ—แƒแƒœ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒแƒซแƒ”แƒ‘แƒœแƒแƒ“ (แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— serviceAccount แƒฃแƒคแƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒ— list ะธ get, แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ— แƒžแƒแƒ“แƒ”แƒ‘แƒ˜, แƒ แƒแƒ› แƒ˜แƒ›แƒฃแƒจแƒแƒแƒœ แƒ›แƒแƒกแƒ—แƒแƒœ serviceAccount).

JGroups แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒ•แƒœแƒ˜แƒก แƒ’แƒ–แƒ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— JGROUPS_DISCOVERY_PROTOCOL ะธ JGROUPS_DISCOVERY_PROPERTIES. แƒ˜แƒงแƒ˜แƒ“แƒ”แƒ‘แƒ KUBE_PING แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒแƒ˜แƒ แƒฉแƒ˜แƒแƒ— pods แƒ™แƒ˜แƒ—แƒฎแƒ•แƒ˜แƒ— namespace ะธ labels.

๏ธ แƒ—แƒฃ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— multicast แƒ“แƒ แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— แƒแƒ  แƒแƒœ แƒ›แƒ”แƒข Keycloak แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒก แƒ”แƒ แƒ— Kubernetes แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ (แƒ•แƒ—แƒฅแƒ•แƒแƒ— แƒ”แƒ แƒ—แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ”แƒจแƒ˜ production, แƒ›แƒ”แƒแƒ แƒ” - staging) - แƒ”แƒ แƒ—แƒ˜ Keycloak แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒฃแƒ”แƒ แƒ—แƒ“แƒœแƒ”แƒœ แƒ›แƒ”แƒแƒ แƒ” แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒก. แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ— แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒฃแƒšแƒขแƒ˜แƒ™แƒแƒกแƒขแƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒชแƒ•แƒšแƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—jboss.default.multicast.address ะธ jboss.modcluster.multicast.address ะฒ JAVA_OPTS.

แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก

Keycloak-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ HA แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜ Kubernetes-แƒ–แƒ”

แƒšแƒ˜แƒœแƒ™แƒ”แƒ‘แƒ˜

Keycloak แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ›แƒ แƒแƒ•แƒแƒš แƒชแƒแƒšแƒ™แƒ”แƒฃแƒš Infinispan แƒฅแƒ”แƒจแƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒกแƒแƒ“แƒแƒช แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก Keycloak แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ แƒ˜ Keycloack แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ  แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ Keycloak แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒจแƒ˜.

Keycloak แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ แƒ’แƒแƒ แƒ” Java Data Grid-แƒก (Infinispan แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜) แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ™แƒแƒ›แƒฃแƒœแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Infinispan HotRod.

Infinispan แƒฅแƒ”แƒจแƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒขแƒ แƒ˜แƒ‘แƒฃแƒขแƒ˜แƒ— remoteStoreแƒ˜แƒกแƒ”, แƒ แƒแƒ› แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒแƒ“ แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ (แƒกแƒฎแƒ•แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒจแƒ˜, แƒ“แƒแƒแƒฎแƒš. แƒ›แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ”แƒšแƒ˜) แƒฅแƒ”แƒจแƒ”แƒ‘แƒ˜. JDG แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒชแƒแƒšแƒ™แƒ” infinispan แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ—แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ JDG1-แƒ–แƒ” แƒกแƒแƒ˜แƒขแƒ–แƒ” site1 แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ“แƒ”แƒ‘แƒ JDG2-แƒ–แƒ” แƒแƒ“แƒ’แƒ˜แƒšแƒ–แƒ” site2.

แƒ“แƒ แƒ‘แƒแƒšแƒแƒก, แƒ›แƒ˜แƒ›แƒฆแƒ”แƒ‘แƒ˜ JDG แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒแƒชแƒœแƒแƒ‘แƒ”แƒ‘แƒก Keycloak แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒก แƒ›แƒ˜แƒกแƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒช HotRod แƒžแƒ แƒแƒขแƒแƒ™แƒแƒšแƒ˜แƒก แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. Keycloak แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜ แƒฉแƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ site2 แƒ’แƒแƒœแƒแƒแƒฎแƒšแƒ”แƒ— แƒ›แƒแƒ—แƒ˜ Infinispan แƒฅแƒ”แƒจแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒกแƒ”แƒกแƒ˜แƒ แƒแƒกแƒ”แƒ•แƒ” แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜ แƒ’แƒแƒฎแƒ“แƒ”แƒ‘แƒ Keycloak แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ–แƒ” site2.

แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒฅแƒ”แƒจแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒแƒ  แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒแƒกแƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒ—แƒšแƒ˜แƒแƒœแƒแƒ“ แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒ˜แƒชแƒ˜แƒšแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒฌแƒ”แƒ แƒ Infinispan แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒฌแƒแƒจแƒแƒšแƒแƒ— แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ remote-store แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ Infinispan แƒฅแƒ”แƒจแƒ˜ (แƒคแƒแƒ˜แƒšแƒจแƒ˜ standalone-ha.xml), แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ replicated-cache แƒแƒกแƒ”แƒ•แƒ” แƒแƒฆแƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒกแƒแƒญแƒ˜แƒ แƒ Infinispan แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ”แƒก.

แƒฅแƒ”แƒจแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ

Keycloak-แƒจแƒ˜ แƒแƒ แƒ˜ แƒขแƒ˜แƒžแƒ˜แƒก แƒฅแƒ”แƒจแƒ˜แƒ:

  • แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜. แƒ˜แƒก แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ˜แƒ— แƒ“แƒ แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒแƒก, แƒแƒกแƒ”แƒ•แƒ” แƒ แƒ”แƒแƒ’แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒงแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒแƒก. แƒแƒ› แƒขแƒ˜แƒžแƒ˜แƒก แƒฅแƒ”แƒจแƒ˜ แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒกแƒคแƒ”แƒ แƒแƒก, แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก, แƒ แƒแƒšแƒ”แƒ‘แƒก แƒ“แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒ›แƒ”แƒขแƒแƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก. แƒแƒ› แƒขแƒ˜แƒžแƒ˜แƒก แƒฅแƒ”แƒจแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ›แƒแƒจแƒ˜แƒœแƒแƒช แƒ™แƒ˜, แƒ—แƒฃ แƒฅแƒ”แƒจแƒ˜ แƒแƒ แƒ˜แƒก Keycloak แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜. แƒ—แƒฃ แƒฅแƒ”แƒจแƒจแƒ˜ แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒ˜แƒชแƒ•แƒšแƒ”แƒ‘แƒ, แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒ“แƒแƒ แƒฉแƒ”แƒœแƒ˜แƒš แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ–แƒ”, แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช แƒฉแƒแƒœแƒแƒฌแƒ”แƒ แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒ แƒ˜แƒชแƒฎแƒ”แƒ‘แƒ แƒฅแƒ”แƒจแƒ˜แƒ“แƒแƒœ. แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒแƒฆแƒฌแƒ”แƒ แƒ work แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒžแƒ แƒแƒชแƒ”แƒ“แƒฃแƒ แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒแƒฆแƒฌแƒ”แƒ แƒ.

  • แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒฃแƒšแƒ˜. แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒก, แƒแƒคแƒšแƒแƒ˜แƒœ แƒขแƒแƒ™แƒ”แƒœแƒ”แƒ‘แƒก แƒ“แƒ แƒแƒกแƒ”แƒ•แƒ” แƒแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ”แƒ‘แƒก, แƒ แƒแƒ—แƒ แƒแƒฆแƒ›แƒแƒแƒฉแƒ˜แƒœแƒแƒก แƒžแƒแƒ แƒแƒšแƒ˜แƒก แƒคแƒ˜แƒจแƒ˜แƒœแƒ’แƒ˜แƒก แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒจแƒ”แƒขแƒ”แƒ•แƒ”แƒ‘แƒ˜. แƒแƒ› แƒฅแƒ”แƒจแƒ”แƒ‘แƒจแƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒแƒ”แƒ‘แƒ˜แƒ—แƒ˜แƒ, แƒ˜แƒœแƒแƒฎแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ RAM-แƒจแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒ แƒแƒ•แƒšแƒ“แƒ”แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜.

Infinispan แƒฅแƒ”แƒจแƒ”แƒ‘แƒ˜

แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ˜ - แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ Keycloak-แƒจแƒ˜, แƒชแƒแƒšแƒ™แƒ” แƒฅแƒ”แƒจแƒ”แƒ‘แƒ˜ แƒ”.แƒฌ authenticationSessions, แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒ˜ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“. แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒแƒ› แƒฅแƒ”แƒจแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒ˜แƒกแƒ แƒ“แƒ Keycloak แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒแƒ แƒ แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒฅ แƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ แƒฌแƒ”แƒ‘แƒแƒ•แƒแƒœ แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ–แƒ” แƒ“แƒ แƒ—แƒแƒ•แƒแƒ“ แƒแƒกแƒ”แƒ—แƒ˜ แƒฅแƒ”แƒจแƒ”แƒ‘แƒ˜ แƒแƒ  แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒก แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒแƒก, แƒ—แƒฃแƒœแƒ“แƒแƒช แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜-แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜ แƒ แƒ”แƒŸแƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜.

แƒ›แƒแƒฅแƒ›แƒ”แƒ“แƒ”แƒ‘แƒ˜แƒก แƒœแƒ˜แƒจแƒœแƒ”แƒ‘แƒ˜. แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒ™แƒแƒœแƒชแƒ”แƒคแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒกแƒชแƒ”แƒœแƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ“แƒ”แƒกแƒแƒช, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ›แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒก แƒ แƒแƒ˜แƒ›แƒ” แƒแƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒฃแƒšแƒแƒ“ แƒคแƒแƒกแƒขแƒ˜แƒ—. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒžแƒ แƒแƒชแƒ”แƒ“แƒฃแƒ แƒ˜แƒก แƒ“แƒ แƒแƒก forget password แƒฅแƒ”แƒจแƒ˜ actionTokens แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒแƒกแƒแƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒขแƒแƒ™แƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ”แƒขแƒแƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒงแƒฃแƒ แƒ˜แƒก แƒ“แƒ”แƒ•แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก - แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒŸแƒ”แƒขแƒแƒœแƒ˜ แƒฃแƒ™แƒ•แƒ” แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ’แƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒฃแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. แƒแƒ› แƒขแƒ˜แƒžแƒ˜แƒก แƒฅแƒ”แƒจแƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒกแƒแƒญแƒ˜แƒ แƒแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ.

แƒจแƒ”แƒœแƒแƒฎแƒฃแƒšแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒฅแƒ”แƒจแƒ˜แƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒ“แƒแƒซแƒ•แƒ”แƒšแƒ”แƒ‘แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒแƒ–แƒ” แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒกแƒฃแƒ‘แƒฃแƒฅแƒ”แƒ‘แƒšแƒแƒ“. แƒแƒ›แƒ’แƒ•แƒแƒ แƒ˜ แƒฅแƒ”แƒจแƒ˜แƒ แƒ”แƒ‘แƒ แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒแƒขแƒ”แƒ‘แƒก แƒแƒจแƒ™แƒแƒ แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒแƒก. แƒ—แƒฃ แƒ”แƒ แƒ—แƒ˜ Keycloak แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ’แƒแƒœแƒแƒแƒฎแƒšแƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก, แƒกแƒฎแƒ•แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒก แƒฃแƒœแƒ“แƒ แƒ”แƒชแƒœแƒแƒ‘แƒแƒก, แƒ แƒแƒ—แƒ แƒ›แƒแƒ— แƒจแƒ”แƒซแƒšแƒแƒœ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒ แƒ—แƒแƒ•แƒ˜แƒแƒœแƒ— แƒฅแƒ”แƒจแƒ”แƒ‘แƒจแƒ˜. Keycloak แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒฅแƒ”แƒจแƒ”แƒ‘แƒก realms, users ะธ authorization แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒ“แƒแƒœ แƒฅแƒ”แƒจแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒแƒกแƒ”แƒ•แƒ” แƒแƒ แƒ˜แƒก แƒชแƒแƒšแƒ™แƒ” แƒฅแƒ”แƒจแƒ˜ work, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ”แƒแƒ แƒ“แƒ”แƒ‘แƒ แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒจแƒ˜. แƒ˜แƒก แƒ—แƒแƒ•แƒ˜แƒกแƒ—แƒแƒ•แƒแƒ“ แƒแƒ  แƒ˜แƒœแƒแƒฎแƒแƒ•แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒ“แƒแƒœ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ“แƒแƒ‘แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒฃแƒš แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒจแƒ˜. แƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒ— แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ แƒแƒ’แƒแƒ แƒช แƒ™แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ’แƒแƒœแƒแƒฎแƒšแƒ“แƒ”แƒ‘แƒ, Keycloak แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ˜แƒก แƒกแƒฎแƒ•แƒ แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒก, แƒ˜แƒกแƒ”แƒ•แƒ” แƒ แƒแƒ’แƒแƒ แƒช แƒกแƒฎแƒ•แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒก. แƒแƒกแƒ”แƒ—แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒแƒกแƒฃแƒคแƒ—แƒแƒ•แƒ”แƒ‘แƒก แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ• แƒฅแƒ”แƒจแƒ”แƒ‘แƒจแƒ˜.

แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ˜. แƒฅแƒ”แƒจแƒ”แƒ‘แƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒ— sessions, clientSessions, offlineSessions ะธ offlineClientSessions, แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ• แƒ›แƒ”แƒแƒ แƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒ“แƒ แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒœแƒแƒฎแƒแƒ“, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜แƒ, แƒกแƒแƒœแƒแƒ› แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ˜แƒ แƒ‘แƒ แƒแƒฃแƒ–แƒ”แƒ แƒจแƒ˜. แƒ”แƒก แƒฅแƒ”แƒจแƒ”แƒ‘แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ—แƒแƒœ, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒœ HTTP แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒก แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฌแƒ”แƒ‘แƒแƒ•แƒแƒœ แƒกแƒ”แƒกแƒ˜แƒ”แƒ‘แƒ—แƒแƒœ แƒ“แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ“แƒ”แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก.

แƒฃแƒฎแƒ”แƒจแƒ˜ แƒซแƒแƒšแƒ˜แƒก แƒ“แƒแƒชแƒ•แƒ. แƒฅแƒ”แƒจแƒ˜ loginFailures แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒ•แƒšแƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ—แƒ•แƒแƒšแƒงแƒฃแƒ แƒ˜แƒก แƒ“แƒ”แƒ•แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ แƒแƒ›แƒ“แƒ”แƒœแƒฏแƒ”แƒ  แƒจแƒ”แƒ˜แƒงแƒ•แƒแƒœแƒ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ”แƒšแƒ›แƒ แƒแƒ แƒแƒกแƒฌแƒแƒ แƒ˜ แƒžแƒแƒ แƒแƒšแƒ˜. แƒแƒ› แƒฅแƒ”แƒจแƒ˜แƒก แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ แƒแƒ แƒ˜แƒก แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ–แƒฃแƒกแƒขแƒ˜ แƒ’แƒแƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒฆแƒ˜แƒ แƒก แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ”แƒแƒ แƒ”แƒก แƒ›แƒฎแƒ แƒ˜แƒ•, แƒ—แƒฃ แƒแƒ  แƒ’แƒแƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ— แƒแƒ› แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก, แƒ’แƒแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒ— แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก แƒ“แƒ แƒ—แƒฃ แƒ”แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ, แƒ แƒ”แƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒแƒ  แƒ’แƒแƒแƒฅแƒขแƒ˜แƒฃแƒ แƒ“แƒ”แƒก.

Infinispan แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒจแƒšแƒ˜แƒกแƒแƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— แƒฅแƒ”แƒจแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ แƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒก:

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

แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— แƒ“แƒ แƒ“แƒแƒ˜แƒฌแƒงแƒแƒ— Infinispan แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ Keycloak แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒแƒ›แƒ“แƒ”

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— remoteStore Keycloak แƒฅแƒ”แƒจแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜แƒ แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ™แƒ”แƒ—แƒ“แƒ”แƒ‘แƒ แƒฌแƒ˜แƒœแƒแƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒ“แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“. CACHE_OWNERS, แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒ˜แƒœแƒแƒฎแƒแƒ— แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒจแƒ˜ แƒ“แƒ แƒฉแƒแƒ“แƒแƒ— แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ /opt/jboss/startup-scripts:

แƒกแƒ™แƒ แƒ˜แƒžแƒขแƒ˜แƒก แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜

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

แƒแƒ  แƒ“แƒแƒ’แƒแƒ•แƒ˜แƒฌแƒงแƒ“แƒ”แƒ— แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ JAVA_OPTS Keycloak แƒ™แƒ•แƒแƒœแƒซแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก HotRod-แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“: remote.cache.host, remote.cache.port แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ jboss.site.name.

แƒ‘แƒ›แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ

แƒกแƒขแƒแƒขแƒ˜แƒ แƒ—แƒแƒœแƒแƒ›แƒจแƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ›แƒ แƒ—แƒแƒ แƒ’แƒ›แƒœแƒ”แƒก แƒ“แƒ แƒ›แƒแƒแƒ›แƒ–แƒแƒ“แƒ”แƒก แƒฐแƒแƒ‘แƒ แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก Slurm แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒชแƒ”แƒœแƒขแƒ แƒ˜ - แƒ˜แƒœแƒขแƒ”แƒœแƒกแƒ˜แƒฃแƒ แƒ˜ แƒ™แƒฃแƒ แƒกแƒ”แƒ‘แƒ˜, แƒ•แƒ˜แƒ“แƒ”แƒ แƒ™แƒฃแƒ แƒกแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ™แƒแƒ แƒžแƒแƒ แƒแƒขแƒ˜แƒฃแƒšแƒ˜ แƒขแƒ แƒ”แƒœแƒ˜แƒœแƒ’แƒ˜ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒแƒกแƒ˜ แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒ˜แƒกแƒขแƒ”แƒ‘แƒ˜แƒกแƒ’แƒแƒœ (Kubernetes, DevOps, Docker, Ansible, Ceph, SRE)

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ