Kubernetes рд╡рд░ HA рдореЛрдбрдордзреНрдпреЗ рдХреАрдХреНрд▓реЛрдХ рдЪрд╛рд▓рд╡рдд рдЖрд╣реЗ

Kubernetes рд╡рд░ HA рдореЛрдбрдордзреНрдпреЗ рдХреАрдХреНрд▓реЛрдХ рдЪрд╛рд▓рд╡рдд рдЖрд╣реЗ

TL; рдбреЙ: рдХреАрдХреНрд▓реЛрдХрдЪреЗ рд╡рд░реНрдгрди, рдПрдХ рдореБрдХреНрдд рд╕реНрддреНрд░реЛрдд рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА, рдЕрдВрддрд░реНрдЧрдд рд╕рдВрд░рдЪрдиреЗрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рддрдкрд╢реАрд▓ рдЕрд╕реЗрд▓.

рдкрд░рд┐рдЪрдп рдЖрдгрд┐ рдореБрдЦреНрдп рдХрд▓реНрдкрдирд╛

рдпрд╛ рд▓реЗрдЦрд╛рдд, рдЖрдкрдг рдХреБрдмрд░рдиреЗрдЯрдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА рдХреАрдХреНрд▓реЛрдХ рдХреНрд▓рд╕реНрдЯрд░ рддреИрдирд╛рдд рдХрд░рддрд╛рдирд╛ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдореВрд▓рднреВрдд рдХрд▓реНрдкрдирд╛ рдкрд╛рд╣реВ.

рддреБрдореНрд╣рд╛рд▓рд╛ рдХреАрдХреНрд▓реЛрдХрдмрджреНрджрд▓ рдЕрдзрд┐рдХ рдЬрд╛рдгреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЕрд╕рд▓реНрдпрд╛рд╕, рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА рджрд┐рд▓реЗрд▓реНрдпрд╛ рд▓рд┐рдВрдХреНрд╕рдЪрд╛ рд╕рдВрджрд░реНрдн рдШреНрдпрд╛. рд╕рд░рд╛рд╡рд╛рдд рдЕрдзрд┐рдХ рдордЧреНрди рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдЕрднреНрдпрд╛рд╕ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдордЪреЗ рднрд╛рдВрдбрд╛рд░ рдпрд╛ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рдореБрдЦреНрдп рдХрд▓реНрдкрдирд╛рдВрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдореЙрдбреНрдпреВрд▓рд╕рд╣ тАЛтАЛ(рд▓рд╛рдБрдЪ рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдЖрд╣реЗ, рд╣рд╛ рд▓реЗрдЦ рдбрд┐рд╡реНрд╣рд╛рдЗрд╕ рдЖрдгрд┐ рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдЪреЗ рд╡рд┐рд╣рдВрдЧрд╛рд╡рд▓реЛрдХрди рдкреНрд░рджрд╛рди рдХрд░реЗрд▓, рдЕрдВрджрд╛рдЬреЗ рдЕрдиреБрд╡рд╛рджрдХ).

рдХреАрдХреНрд▓реЛрдХ рд╣реА рдЬрд╛рд╡рд╛рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реА рдЖрдгрд┐ рдЕреЕрдкреНрд▓рд┐рдХреЗрд╢рди рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рд╢реАрд░реНрд╖рд╕реНрдерд╛рдиреА рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реА рд╕рд░реНрд╡рд╕рдорд╛рд╡реЗрд╢рдХ рдкреНрд░рдгрд╛рд▓реА рдЖрд╣реЗ рд░рд╛рдирдорд╛рд╢реА. рдереЛрдбрдХреНрдпрд╛рдд, рд╣реЗ рдЕрдзрд┐рдХреГрддрддреЗрд╕рд╛рдареА рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрд╣реЗ рдЬреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдлреЗрдбрд░реЗрд╢рди рдЖрдгрд┐ SSO (рд╕рд┐рдВрдЧрд▓ рд╕рд╛рдЗрди-рдСрди) рдХреНрд╖рдорддрд╛ рджреЗрддреЗ.

рдЖрдореНрд╣реА рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдзрд┐рдХреГрдд рд╡рд╛рдЪрдгреНрдпрд╛рд╕рд╛рдареА рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддреЛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд┐рдВрд╡рд╛ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА.

рдХреАрдХреНрд▓реЛрдХ рд▓рд╛рдБрдЪ рдХрд░рдд рдЖрд╣реЗ

рдХреАрдХреНрд▓реЛрдХрд▓рд╛ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рджреЛрди рд╕рддрдд рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗрдд:

  • рдкреНрд░рд╕реНрдерд╛рдкрд┐рдд рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдгрд╛рд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕, рдЬрд╕реЗ рдХреА рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдорд╛рд╣рд┐рддреА
  • рдбреЗрдЯрд╛рдЧреНрд░реАрдб рдХреЕрд╢реЗ, рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреАрд▓ рдбреЗрдЯрд╛ рдХреЕрд╢реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрд╕реЗрдЪ рдХрд╛рд╣реА рдЕрд▓реНрдкрдХрд╛рд▓реАрди рдЖрдгрд┐ рд╡рд╛рд░рдВрд╡рд╛рд░ рдмрджрд▓рдгрд╛рд░рд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдЬрд╕реЗ рдХреА рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕рддреНрд░реЗ. рд░рд╛рдмрд╡рд┐рдгреНрдпрд╛рдд рдЖрд▓реЗ Infinispan, рдЬреЗ рд╕рд╣рд╕рд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдкреЗрдХреНрд╖рд╛ рд▓рдХреНрд╖рдгреАрдпрд░реАрддреНрдпрд╛ рд╡реЗрдЧрд╡рд╛рди рдЕрд╕рддреЗ. рдкрд░рдВрддреБ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдд, Infinispan рдордзреНтАНрдпреЗ рдЬрддрди рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рд╣рд╛ рдХреНрд╖рдгрд┐рдХ рдЕрд╕рддреЛ - рдЖрдгрд┐ рдХреНрд▓рд╕реНрдЯрд░ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХреЗрд▓реНрдпрд╛рд╡рд░ рддреЛ рдХреБрдареЗрд╣реА рдЬрддрди рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА.

рдХреАрдХреНрд▓реЛрдХ рдЪрд╛рд░ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдореЛрдбрдордзреНрдпреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ:

  • рд╕рд╛рдорд╛рдиреНрдп - рдлрд╛рдЗрд▓рджреНрд╡рд╛рд░реЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗрд▓реА рдПрдХ рдЖрдгрд┐ рдлрдХреНрдд рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ standalone.xml
  • рдирд┐рдпрдорд┐рдд рдХреНрд▓рд╕реНрдЯрд░ (рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдзрддрд╛ рдкрд░реНрдпрд╛рдп) - рд╕рд░реНрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдиреА рд╕рдорд╛рди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рд╡рд╛рдкрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреЗ рд╕реНрд╡рд╣рд╕реНрддреЗ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭ рдХреЗрд▓реЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд рд╕реНрдЯрдБрдбрдЕрд▓реЛрди-ha.xml, рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд рддреБрдореНрд╣рд╛рд▓рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрдгрд┐ рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд░рдордзреНрдпреЗ рд╕рд╛рдорд╛рдпрд┐рдХ рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
  • рдбреЛрдореЗрди рдХреНрд▓рд╕реНрдЯрд░ тАФ рд╕рд╛рдорд╛рдиреНрдп рдореЛрдбрдордзреНрдпреЗ рдХреНрд▓рд╕реНрдЯрд░ рд╕реБрд░реВ рдХрд░рдгреЗ рддреНрд╡рд░реАрдд рдПрдХ рдирд┐рдпрдорд┐рдд рдЖрдгрд┐ рдХрдВрдЯрд╛рд│рд╡рд╛рдгреЗ рдХрд╛рд░реНрдп рдмрдирддреЗ рдХрд╛рд░рдг рдХреНрд▓рд╕реНрдЯрд░ рд╡рд╛рдврддреЛ, рдХрд╛рд░рдг рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдмрджрд▓рддреЗ рддреЗрд╡реНрд╣рд╛ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбрд╡рд░ рд╕рд░реНрд╡ рдмрджрд▓ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдСрдкрд░реЗрд╢рдирдЪреЗ рдбреЛрдореЗрди рдореЛрдб рдХрд╛рд╣реА рд╢реЗрдЕрд░ рдХреЗрд▓реЗрд▓реЗ рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдерд╛рди рд╕реЗрдЯ рдХрд░реВрди рдЖрдгрд┐ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реВрди рд╣реА рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддреЗ. рдпрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЖрд╣реЗрдд domain.xml
  • рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░рд╛рдВрдордзреАрд▓ рдкреНрд░рддрд┐рдХреГрддреА тАФ рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдиреЗрдХ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░реНрд╕рдЪреНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ Keycloak рдЪрд╛рд▓рд╡рд╛рдпрдЪрд╛ рдЕрд╕реЗрд▓, рдмрд╣реБрддреЗрдХ рд╡реЗрд│рд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рднреМрдЧреЛрд▓рд┐рдХ рд╕реНрдерд╛рдирд╛рдВрд╡рд░. рдпрд╛ рдкрд░реНрдпрд╛рдпрд╛рдордзреНрдпреЗ, рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░рдЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рдХреАрдХреНрд▓реЛрдХ рд╕рд░реНрд╡реНрд╣рд░рдЪреЗ рдХреНрд▓рд╕реНрдЯрд░ рдЕрд╕реЗрд▓.

рдпрд╛ рд▓реЗрдЦрд╛рдд рдЖрдкрдг рджреБрд╕рд▒реНрдпрд╛ рдкрд░реНрдпрд╛рдпрд╛рдЪрд╛ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВ, рдореНрд╣рдгрдЬреЗ рдирд┐рдпрдорд┐рдд рдХреНрд▓рд╕реНрдЯрд░, рдЖрдгрд┐ рдЖрдореНрд╣реА рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░рд╛рдВрдордзреАрд▓ рдкреНрд░рддрд┐рдХреГрддреАрдЪреНрдпрд╛ рд╡рд┐рд╖рдпрд╛рд╡рд░ рджреЗрдЦреАрд▓ рдереЛрдбреЗрд╕реЗ рд╕реНрдкрд░реНрд╢ рдХрд░реВ, рдХрд╛рд░рдг рд╣реЗ рджреЛрди рдкрд░реНрдпрд╛рдп Kubernetes рдордзреНрдпреЗ рдЪрд╛рд▓рд╡рдгреЗ рдЕрд░реНрдердкреВрд░реНрдг рдЖрд╣реЗ. рд╕реБрджреИрд╡рд╛рдиреЗ, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕рдордзреНрдпреЗ рдЕрдиреЗрдХ рдкреЙрдбреНрд╕ (рдХреАрдХреНрд▓реЛрдХ рдиреЛрдбреНрд╕) рдЪреНрдпрд╛ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рд╕рдордХреНрд░рдорд┐рдд рдХрд░рдгреНрдпрд╛рдд рдХреЛрдгрддреАрд╣реА рд╕рдорд╕реНрдпрд╛ рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдбреЛрдореЗрди рдХреНрд▓рд╕реНрдЯрд░ рд╣реЗ рдХрд░рдгреЗ рдлрд╛рд░ рдХрдареАрдг рд╣реЛрдгрд╛рд░ рдирд╛рд╣реА.

рддрд╕реЗрдЪ рдХреГрдкрдпрд╛ рд╢рдмреНрдж рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдЙрд░реНрд╡рд░рд┐рдд рд▓реЗрдЦ рдХреЗрд╡рд│ рдПрдХрддреНрд░ рдХрд╛рдо рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдХреАрдХреНрд▓реЛрдХ рдиреЛрдбреНрд╕рдЪреНрдпрд╛ рдЧрдЯрд╛рд╕рд╛рдареА рд▓рд╛рдЧреВ рд╣реЛрдИрд▓, рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдЪрд╛ рд╕рдВрджрд░реНрдн рдШреЗрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА.

рдирд┐рдпрдорд┐рдд рдХреАрдХреНрд▓реЛрдХ рдХреНрд▓рд╕реНрдЯрд░

рдпрд╛ рдореЛрдбрдордзреНрдпреЗ рдХреАрдХреНрд▓реЛрдХ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

  • рдмрд╛рд╣реНрдп рд╕рд╛рдорд╛рдпрд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛
  • рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рд╛
  • IP рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рд╕рдорд░реНрдердирд╛рд╕рд╣ рдЕрдВрддрд░реНрдЧрдд рдиреЗрдЯрд╡рд░реНрдХ рдЖрд╣реЗ

рдЖрдореНрд╣реА рдмрд╛рд╣реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╡рд░ рдЪрд░реНрдЪрд╛ рдХрд░рдгрд╛рд░ рдирд╛рд╣реА, рдХрд╛рд░рдг рддреЛ рдпрд╛ рд▓реЗрдЦрд╛рдЪрд╛ рдЙрджреНрджреЗрд╢ рдирд╛рд╣реА. рдЪрд▓рд╛ рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░реВ рдХреА рдХреЛрдареЗрддрд░реА рдХрд╛рд░реНрдпрд░рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдЖрд╣реЗ - рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рддреНрдпрд╛рдЪрд╛ рдХрдиреЗрдХреНрд╢рди рдкреЙрдИрдВрдЯ рдЖрд╣реЗ. рдЖрдореНрд╣реА рд╣рд╛ рдбреЗрдЯрд╛ рдлрдХреНрдд рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рдордзреНрдпреЗ рдЬреЛрдбреВ.

рдлреЗрд▓рдУрд╡реНрд╣рд░ (HA) рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ Keycloak рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реЗ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рд╕рдордЬреВрди рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА, рд╣реЗ рд╕рд░реНрд╡ Wildfly рдЪреНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ рдХреНрд╖рдорддреЗрд╡рд░ рдХрд┐рддреА рдЕрд╡рд▓рдВрдмреВрди рдЖрд╣реЗ рд╣реЗ рдЬрд╛рдгреВрди рдШреЗрдгреЗ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ.

рд╡рд╛рдЗрд▓реНрдбрдлреНрд▓рд╛рдп рдЕрдиреЗрдХ рдЙрдкрдкреНрд░рдгрд╛рд▓реА рд╡рд╛рдкрд░рддрд╛рдд, рддреНрдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд░ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддрд╛рдд, рдХрд╛рд╣реА рджреЛрд╖ рд╕рд╣рди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА. рдЬреЗрд╡реНрд╣рд╛ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдб рдУрд╡реНрд╣рд░рд▓реЛрдб рд╣реЛрддреЛ рддреЗрд╡реНрд╣рд╛ рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд░ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреА рдЙрдкрд▓рдмреНрдзрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рдЖрдгрд┐ рдХрд╛рд╣реА рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реЗ рддрд░реАрд╣реА рдлреЙрд▓реНрдЯ рдЯреЙрд▓рд░рдиреНрд╕ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдЪреА рдЙрдкрд▓рдмреНрдзрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ. рдпрд╛рдкреИрдХреА рдХрд╛рд╣реА рдЙрдкрдкреНрд░рдгрд╛рд▓реА:

  • mod_cluster: HTTP рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд░ рдореНрд╣рдгреВрди Apache рд╕рд╣ рдПрдХрддреНрд░рд┐рддрдкрдгреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ, рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╣реЛрд╕реНрдЯ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА TCP рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЗ. рдмрд╛рд╣реНрдп рдмреЕрд▓рдиреНрд╕рд░рд╕рд╣ рдмрджрд▓рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

  • infinispan: рд╡рд╛рд╣рддреВрдХ рд╕реНрддрд░ рдореНрд╣рдгреВрди JGroups рдЪреЕрдиреЗрд▓ рд╡рд╛рдкрд░реВрди рд╡рд┐рддрд░рд┐рдд рдХреЕрд╢реЗ. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдХреЕрд╢реЗ рд╕рд╛рдордЧреНрд░реА рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд╛рд╣реНрдп Infinispan рдХреНрд▓рд╕реНрдЯрд░рд╢реА рд╕рдВрд╡рд╛рдж рд╕рд╛рдзрдгреНрдпрд╛рд╕рд╛рдареА рддреЗ HotRod рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд╛рдкрд░реВ рд╢рдХрддреЗ.

  • jgroups: JGroups рдЪреЕрдиреЗрд▓рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдз рд╕реЗрд╡рд╛рдВрд╕рд╛рдареА рдЧрдЯ рд╕рдВрдкреНрд░реЗрд╖рдг рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдирд╛рдорд╛рдВрдХрд┐рдд рдкрд╛рдИрдкреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЙрджрд╛рд╣рд░рдгреЗ рдЧрдЯрд╛рдВрдордзреНрдпреЗ рдЬреЛрдбрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддрд╛рдд рдЬреЗрдгреЗрдХрд░реВрди рд╕рдВрдкреНрд░реЗрд╖рдгрд╛рдордзреНрдпреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕рд╛рд░реНрд╣рддрд╛, рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рддрддрд╛ рдЖрдгрд┐ рдЕрдкрдпрд╢рд╛рдВрдмрджреНрджрд▓ рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛ рдпрд╛рд╕рд╛рд░рдЦреЗ рдЧреБрдгрдзрд░реНрдо рдЕрд╕рддреАрд▓.

рд▓реЛрдб рдмреЕрд▓рдиреНрд╕рд░

рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рдкреНрд░рд╡реЗрд╢ рдирд┐рдпрдВрддреНрд░рдХ рдореНрд╣рдгреВрди рдмреЕрд▓рдиреНрд╕рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛рдирд╛, рдЦрд╛рд▓реАрд▓ рдЧреЛрд╖реНрдЯреА рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ:

рдХреАрдХреНрд▓реЛрдХ рдЕрд╕реЗ рдЧреГрд╣реАрдд рдзрд░рддреЗ рдХреА HTTP рджреНрд╡рд╛рд░реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рд░реНрд╡реНрд╣рд░рд╢реА рдХрдиреЗрдХреНрдЯ рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдХреНрд▓рд╛рдпрдВрдЯрдЪрд╛ рд░рд┐рдореЛрдЯ рдкрддреНрддрд╛ рд╣рд╛ рдХреНрд▓рд╛рдпрдВрдЯ рд╕рдВрдЧрдгрдХрд╛рдЪрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ IP рдкрддреНрддрд╛ рдЖрд╣реЗ. рдмреЕрд▓рдиреНрд╕рд░ рдЖрдгрд┐ рдкреНрд░рд╡реЗрд╢ рд╕реЗрдЯрд┐рдВрдЧреНрдЬрдиреЗ HTTP рд╢реАрд░реНрд╖рд▓реЗрдЦ рдпреЛрдЧреНрдпрд░рд┐рддреНрдпрд╛ рд╕реЗрдЯ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗрдд X-Forwarded-For ╨╕ X-Forwarded-Proto, рдЖрдгрд┐ рдореВрд│ рд╢реАрд░реНрд╖рдХ рджреЗрдЦреАрд▓ рдЬрддрди рдХрд░рд╛ HOST. рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреА ingress-nginx (>реж.реиреи.реж) рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рд╣реЗ рдЕрдХреНрд╖рдо рдХрд░рддреЗ

рдзреНрд╡рдЬ рд╕рдХреНрд░рд┐рдп рдХрд░рдд рдЖрд╣реЗ proxy-address-forwarding рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░реВрди PROXY_ADDRESS_FORWARDING ╨▓ true рдХреАрдХреНрд▓реЛрдХрд▓рд╛ рд╕рдордЬ рджреЗрддреЗ рдХреА рддреЗ рдкреНрд░реЙрдХреНрд╕реАрдЪреНрдпрд╛ рдорд╛рдЧреЗ рдХрд╛рдо рдХрд░рдд рдЖрд╣реЗ.

рдЖрдкрдг рд╕рдХреНрд╖рдо рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЪрд┐рдХрдЯ рд╕рддреНрд░реЗ рдкреНрд░рд╡реЗрд╢ рдордзреНрдпреЗ. рдХреАрдХреНрд▓реЛрдХ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рддреНрд░ рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕рддреНрд░рд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рддрд░рд┐рдд Infinispan рдХреЕрд╢реЗ рд╡рд╛рдкрд░рддреЛ. рдХреЕрд╢реЗ рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдПрдХрд╛рдЪ рдорд╛рд▓рдХрд╛рд╕рд╣ рдСрдкрд░реЗрдЯ рдХрд░рддрд╛рдд, рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рддреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рддреНрд░ рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рдХрд╛рд╣реА рдиреЛрдбрд╡рд░ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдЗрддрд░ рдиреЛрдбреНрд╕рдирд╛ рддреНрдпрд╛ рд╕рддреНрд░рд╛рдд рдкреНрд░рд╡реЗрд╢ рд╣рд╡рд╛ рдЕрд╕рд▓реНрдпрд╛рд╕ рддреНрдпрд╛рдВрдирд╛ рджреВрд░рд╕реНрдердкрдгреЗ рдХреНрд╡реЗрд░реА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╡рд┐рд╢реЗрд╖рдд:, рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рдЪреНрдпрд╛ рд╡рд┐рд░реВрджреНрдз, рдХреБрдХреА рдирд╛рд╡рд╛рд╕рд╣ рд╕рддреНрд░ рд╕рдВрд▓рдЧреНрди рдХрд░рдгреЗ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА AUTH_SESSION_ID. рдХреАрдХреНрд▓реЛрдХрдордзреНрдпреЗ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд▓реВрдк рдЖрд╣реЗ, рдореНрд╣рдгреВрди рдЖрдореНрд╣реА рдЪрд┐рдХрдЯ рд╕рддреНрд░рд╛рд╕рд╛рдареА рд╡реЗрдЧрд│реЗ рдХреБрдХреА рдирд╛рд╡ рдирд┐рд╡рдбрдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ.

рдХреАрдХреНрд▓реЛрдХ рдиреЛрдбрдЪреЗ рдирд╛рд╡ рджреЗрдЦреАрд▓ рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рдЬреНрдпрд╛рдиреЗ рдкреНрд░рдердо рдкреНрд░рддрд┐рд╕рд╛рдж рджрд┐рд▓рд╛ AUTH_SESSION_ID, рдЖрдгрд┐ рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдз рдЖрд╡реГрддреНрддреАрдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рд╕рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рддреНрдпрд╛рдкреИрдХреА рдкреНрд░рддреНрдпреЗрдХ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрд╡рддрдВрддреНрд░ рдЖрдгрд┐ рдЕрджреНрд╡рд┐рддреАрдп рдиреЛрдб рдЕрднрд┐рдЬреНрдЮрд╛рдкрдХ. рдЯрд╛рдХрдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реА рдЬрд╛рддреЗ JAVA_OPTS рдорд╛рдкрджрдВрдб jboss.node.name ╨╕ jboss.tx.node.id рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрд╕рд╛рдареА рдЕрджреНрд╡рд┐рддреАрдп - рдЖрдкрдг, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреЙрдбрдЪреЗ рдирд╛рд╡ рдареЗрд╡реВ рд╢рдХрддрд╛. рддреБрдореНрд╣реА рдкреЙрдб рдирд╛рд╡ рдареЗрд╡рд▓реНрдпрд╛рд╕, jboss рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕рд╕рд╛рдареА 23 рд╡рд░реНрдгрд╛рдВрдЪреА рдорд░реНрдпрд╛рджрд╛ рд╡рд┐рд╕рд░реВ рдирдХрд╛, рддреНрдпрд╛рдореБрд│реЗ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯрдРрд╡рдЬреА рд╕реНрдЯреЗрдЯрдлреБрд▓рд╕реЗрдЯ рд╡рд╛рдкрд░рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ.

рдЖрдгрдЦреА рдПрдХ рд░реЗрдХ - рдЬрд░ рдкреЙрдб рд╣рдЯрд╡рд▓рд╛ рдХрд┐рдВрд╡рд╛ рдкреБрдиреНрд╣рд╛ рд╕реБрд░реВ рдХреЗрд▓рд╛ рддрд░ рддреНрдпрд╛рдЪреА рдХреЕрд╢реЗ рд╣рд░рд╡рд▓реА рдЖрд╣реЗ. рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдКрди, рд╕рд░реНрд╡ рдХреЕрд╢реЗрд╕рд╛рдареА рдХреЕрд╢реЗ рдорд╛рд▓рдХрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдХрд┐рдорд╛рди рджреЛрдирд╡рд░ рд╕реЗрдЯ рдХрд░рдгреЗ рдпреЛрдЧреНрдп рдЖрд╣реЗ, рдЬреЗрдгреЗрдХрд░реВрди рдХреЕрд╢реЗрдЪреА рдПрдХ рдкреНрд░рдд рд░рд╛рд╣реАрд▓. рдЙрдкрд╛рдп рдореНрд╣рдгрдЬреЗ рдзрд╛рд╡рдгреЗ 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 рд╡рд╛рдкрд░рд▓реНрдпрд╛рд╕, рдорд▓реНрдЯрд┐рдХрд╛рд╕реНрдЯ рд▓рдЧреЗрдЪ рдХрд╛рд░реНрдп рдХрд░реЗрд▓ - рдЖрдгрд┐ рддреБрдордЪреЗ рдХреАрдХреНрд▓реЛрдХ рдиреЛрдбреНрд╕ рд▓реЙрдиреНрдЪ рд╣реЛрддрд╛рдЪ рдПрдХрдореЗрдХрд╛рдВрдирд╛ рджрд┐рд╕рддреАрд▓.

рддреБрдордЪреНрдпрд╛ Kubernetes рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рддреБрдордЪреНрдпрд╛рдХрдбреЗ ip рдорд▓реНрдЯрд┐рдХрд╛рд╕реНрдЯ рд╕рдкреЛрд░реНрдЯ рдирд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рдиреЛрдбреНрд╕ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рдЗрддрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓рд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА JGroups рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░реВ рд╢рдХрддрд╛.

рдкрд╣рд┐рд▓рд╛ рдкрд░реНрдпрд╛рдп рд╡рд╛рдкрд░рдгреЗ рдЖрд╣реЗ KUBE_DNSрдЬреЗ рд╡рд╛рдкрд░рддреЗ headless service рдХреАрдХреНрд▓реЛрдХ рдиреЛрдбреНрд╕ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА, рддреБрдореНрд╣реА рдлрдХреНрдд JGroups рд▓рд╛ рд╕реЗрд╡реЗрдЪреЗ рдирд╛рд╡ рдкрд╛рд╕ рдХрд░рд╛ рдЬреА рдиреЛрдбреНрд╕ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдИрд▓.

рджреБрд╕рд░рд╛ рдкрд░реНрдпрд╛рдп рдореНрд╣рдгрдЬреЗ рдкрджреНрдзрдд рд╡рд╛рдкрд░рдгреЗ KUBE_PING, рдЬреЗ рдиреЛрдбреНрд╕ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА API рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рддреЗ (рддреБрдореНрд╣рд╛рд▓рд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ serviceAccount рдЕрдзрд┐рдХрд╛рд░рд╛рдВрд╕рд╣ list ╨╕ get, рдЖрдгрд┐ рдирдВрддрд░ рдпрд╛рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╢реЗрдВрдЧрд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛ serviceAccount).

JGroups рдиреЛрдбреНрд╕ рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдорд╛рд░реНрдЧ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реЗрдЯ рдХрд░реВрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓рд╛ рдЬрд╛рддреЛ JGROUPS_DISCOVERY_PROTOCOL ╨╕ JGROUPS_DISCOVERY_PROPERTIES. рд╕рд╛рдареА KUBE_PING рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд┐рдЪрд╛рд░реВрди рд╢реЗрдВрдЧрд╛ рдирд┐рд╡рдбрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ namespace ╨╕ labels.

я╕П рдЬрд░ рддреБрдореНрд╣реА рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рд╡рд╛рдкрд░рдд рдЕрд╕рд╛рд▓ рдЖрдгрд┐ рдПрдХрд╛ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рджреЛрди рдХрд┐рдВрд╡рд╛ рдЕрдзрд┐рдХ рдХреАрдХреНрд▓реЛрдХ рдХреНрд▓рд╕реНрдЯрд░ рдЪрд╛рд▓рд╡рдд рдЕрд╕рд╛рд▓ (рдиреЗрдорд╕реНрдкреЗрд╕рдордзреНрдпреЗ рдПрдХ рдореНрд╣рдгреВрдпрд╛. production, рджреБрд╕рд░рд╛ - staging) - рдПрдХрд╛ рдХреАрдХреНрд▓реЛрдХ рдХреНрд▓рд╕реНрдЯрд░рдЪреЗ рдиреЛрдбреНрд╕ рджреБрд╕рд░реНтАНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рд╕рд╛рдореАрд▓ рд╣реЛрдК рд╢рдХрддрд╛рдд. рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рд╕реЗрдЯ рдХрд░реВрди рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╕реНрдЯрд░рд╕рд╛рдареА рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдорд▓реНрдЯреАрдХрд╛рд╕реНрдЯ рдкрддреНрддрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛jboss.default.multicast.address ╨╕ jboss.modcluster.multicast.address ╨▓ JAVA_OPTS.

рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░рд╛рдВрдордзреАрд▓ рдкреНрд░рддрд┐рдХреГрддреА

Kubernetes рд╡рд░ HA рдореЛрдбрдордзреНрдпреЗ рдХреАрдХреНрд▓реЛрдХ рдЪрд╛рд▓рд╡рдд рдЖрд╣реЗ

рдХрдиреЗрдХреНрдЯрд┐рд╡реНрд╣рд┐рдЯреА

рдХреАрдХреНрд▓реЛрдХ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░рд╕рд╛рдареА рдПрдХрд╛рдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░ рдЗрдиреНрдлрд┐рдирд┐рд╕реНрдкреЕрди рдХреЕрд╢реЗ рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рд╡рд╛рдкрд░рддреЗ рдЬреЗрдереЗ рдХреАрдХреНрд▓реЛрдХ рдиреЛрдбреНрд╕рдЪреЗ рдмрдирд▓реЗрд▓реЗ рдХреАрдХреНрд▓реЛрдХ рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрдерд┐рдд рдЕрд╕рддрд╛рдд. рдкрд░рдВрддреБ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░рдордзреНрдпреЗ рдХреАрдХреНрд▓реЛрдХ рдиреЛрдбреНрд╕рдордзреНрдпреЗ рдлрд░рдХ рдирд╛рд╣реА.

рдХреАрдХреНрд▓реЛрдХ рдиреЛрдбреНрд╕ рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░рд╛рдВрдордзреАрд▓ рд╕рдВрд╡рд╛рджрд╛рд╕рд╛рдареА рдмрд╛рд╣реНрдп Java рдбреЗрдЯрд╛ рдЧреНрд░рд┐рдб (Infinispan рд╕рд░реНрд╡реНрд╣рд░) рд╡рд╛рдкрд░рддрд╛рдд. рд╕рдВрдкреНрд░реЗрд╖рдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ Infinispan HotRod.

Infinispan рдХреЕрд╢реЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рд╣ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ remoteStore, рдЬреЗрдгреЗрдХрд░реВрди рдбреЗрдЯрд╛ рджреВрд░рд╕реНрдердкрдгреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ (рджреБрд╕рд▒реНрдпрд╛ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░рдордзреНрдпреЗ, рдЕрдВрджрд╛рдЬреЗ рдЕрдиреБрд╡рд╛рджрдХ) рдХреЕрд╢реЗ. JDG рд╕рд░реНрд╡реНрд╣рд░рдордзреНрдпреЗ рд╕реНрд╡рддрдВрддреНрд░ infinispan рдХреНрд▓рд╕реНрдЯрд░реНрд╕ рдЖрд╣реЗрдд, рдЬреЗрдгреЗрдХрд░реВрди JDG1 рд╡рд░ рдбреЗрдЯрд╛ рд╕рд╛рдЗрдЯрд╡рд░ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓. site1 рд╕рд╛рдЗрдЯрд╡рд░ JDG2 рд╡рд░ рдкреНрд░рддрд┐рд░реВрдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдИрд▓ site2.

рдЖрдгрд┐ рд╢реЗрд╡рдЯреА, рдкреНрд░рд╛рдкреНрдд рдХрд░рдгрд╛рд░рд╛ JDG рд╕рд░реНрд╡реНрд╣рд░ рдХреНрд▓рд╛рдпрдВрдЯ рдХрдиреЗрдХреНрд╢рдирджреНрд╡рд╛рд░реЗ рддреНрдпрд╛рдЪреНрдпрд╛ рдХреНрд▓рд╕реНрдЯрд░рдЪреНрдпрд╛ рдХреАрдХреНрд▓реЛрдХ рд╕рд░реНрд╡реНрд╣рд░рд▓рд╛ рд╕реВрдЪрд┐рдд рдХрд░рддреЛ, рдЬреЗ HotRod рдкреНрд░реЛрдЯреЛрдХреЙрд▓рдЪреЗ рд╡реИрд╢рд┐рд╖реНрдЯреНрдп рдЖрд╣реЗ. рдХреАрдХреНрд▓реЛрдХ рдиреЛрдбреНрд╕ рдЪрд╛рд▓реВ site2 рддреНрдпрд╛рдВрдЪреЗ Infinispan рдХреЕрд╢реЗ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рд╛ рдЖрдгрд┐ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕рддреНрд░ рджреЗрдЦреАрд▓ рдХреАрдХреНрд▓реЛрдХ рдиреЛрдбреНрд╕ рд╡рд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдИрд▓ site2.

рдХрд╛рд╣реА рдХреЕрд╢реЗрд╕рд╛рдареА, рдмреЕрдХрдЕрдк рди рдШреЗрдгреЗ рдЖрдгрд┐ рд╕рдВрдкреВрд░реНрдгрдкрдгреЗ Infinispan рд╕рд░реНрд╡реНрд╣рд░рджреНрд╡рд╛рд░реЗ рдбреЗрдЯрд╛ рд▓рд┐рд╣рд┐рдгреЗ рдЯрд╛рд│рдгреЗ рджреЗрдЦреАрд▓ рд╢рдХреНрдп рдЖрд╣реЗ. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕реЗрдЯрд┐рдВрдЧ рдХрд╛рдвреВрди рдЯрд╛рдХрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ remote-store рд╡рд┐рд╢рд┐рд╖реНрдЯ Infinispan рдХреЕрд╢реЗ (рдлрд╛рдЗрд▓рдордзреНрдпреЗ рд╕реНрдЯрдБрдбрдЕрд▓реЛрди-ha.xml), рдЬреНрдпрд╛рдирдВрддрд░ рдХрд╛рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ replicated-cache рдпрд╛рдкреБрдвреЗ Infinispan рд╕рд░реНрд╡реНрд╣рд░рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рджреЗрдЦреАрд▓ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рдгрд╛рд░ рдирд╛рд╣реА.

рдХреЕрд╢реЗ рд╕реЗрдЯ рдХрд░рдд рдЖрд╣реЗ

рдХреАрдХреНрд▓реЛрдХрдордзреНрдпреЗ рджреЛрди рдкреНрд░рдХрд╛рд░рдЪреЗ рдХреЕрд╢реЗ рдЖрд╣реЗрдд:

  • рд╕реНрдерд╛рдирд┐рдХ. рд╣реЗ рдбреЗрдЯрд╛рдмреЗрд╕рдЪреНрдпрд╛ рдкреБрдвреЗ рд╕реНрдерд┐рдд рдЖрд╣реЗ рдЖрдгрд┐ рдбреЗрдЯрд╛рдмреЗрд╕рд╡рд░реАрд▓ рднрд╛рд░ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддрд╕реЗрдЪ рдкреНрд░рддрд┐рд╕рд╛рдж рд╡рд┐рд▓рдВрдм рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪрд╛ рдХреЕрд╢реЗ рдХреНрд╖реЗрддреНрд░, рдХреНрд▓рд╛рдпрдВрдЯ, рднреВрдорд┐рдХрд╛ рдЖрдгрд┐ рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рддреЛ. рдХреЕрд╢реЗ рд╣рд╛ рдХреАрдХреНрд▓реЛрдХ рдХреНрд▓рд╕реНрдЯрд░рдЪрд╛ рднрд╛рдЧ рдЕрд╕рд▓рд╛ рддрд░реАрд╣реА, рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдХреЕрд╢реЗрдЪреА рдкреНрд░рддрд┐рдХреГрддреА рдХреЗрд▓реА рдЬрд╛рдд рдирд╛рд╣реА. рдХреЕрд╢реЗрдордзреАрд▓ рдПрдВрдЯреНрд░реА рдмрджрд▓рд▓реНрдпрд╛рд╕, рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рдЙрд░реНрд╡рд░рд┐рдд рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ рдмрджрд▓рд╛рд╡рд┐рд╖рдпреА рд╕рдВрджреЗрд╢ рдкрд╛рдард╡рд┐рд▓рд╛ рдЬрд╛рддреЛ, рддреНрдпрд╛рдирдВрддрд░ рдПрдВрдЯреНрд░реА рдХреЕрд╢реЗрдордзреВрди рд╡рдЧрд│рд▓реА рдЬрд╛рддреЗ. рд╡рд░реНрдгрди рдкрд╣рд╛ work рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреНрдпрд╛ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рд╡рд░реНрдгрдирд╛рд╕рд╛рдареА рдЦрд╛рд▓реА рдкрд╣рд╛.

  • рдирдХреНрдХрд▓ рдХреЗрд▓реА. рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕рддреНрд░реЗ, рдСрдлрд▓рд╛рдЗрди рдЯреЛрдХрдиреНрд╕рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рдЖрдгрд┐ рдкрд╛рд╕рд╡рд░реНрдб рдлрд┐рд╢рд┐рдВрдЧ рдкреНрд░рдпрддреНрди рдЖрдгрд┐ рдЗрддрд░ рд╣рд▓реНрд▓реЗ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рд▓реЙрдЧрд┐рди рддреНрд░реБрдЯреАрдВрдЪреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ. рдпрд╛ рдХреЕрд╢реЗрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рддрд╛рддреНрдкреБрд░рддрд╛ рдЕрд╕рддреЛ, рдлрдХреНрдд RAM рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдкрд░рдВрддреБ рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рддреНрдпрд╛рдЪреА рдкреНрд░рддрд┐рдХреГрддреА рддрдпрд╛рд░ рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддреЗ.

Infinispan рдХреЕрд╢реЗ

рд╕рддреНрд░реЗ - рдХреАрдХреНрд▓реЛрдХрдордзреАрд▓ рдПрдХ рд╕рдВрдХрд▓реНрдкрдирд╛, рд╕реНрд╡рддрдВрддреНрд░ рдХреЕрд╢реЗ рдореНрд╣рдгрддрд╛рдд authenticationSessions, рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдЪрд╛ рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ. рдпрд╛ рдХреЕрд╢реЗрдЪреНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рд╕рд╣рд╕рд╛ рдмреНрд░рд╛рдЙрдЭрд░ рдЖрдгрд┐ рдХреАрдХреНрд▓реЛрдХ рд╕рд░реНрд╡реНрд╣рд░рджреНрд╡рд╛рд░реЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддрд╛рдд, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдВрджреНрд╡рд╛рд░реЗ рдирд╛рд╣реА. рдпреЗрдереЗрдЪ рд╕реНрдЯрд┐рдХреА рд╕реЗрд╢рдиреНрд╕рд╡рд░реАрд▓ рдЕрд╡рд▓рдВрдмрд┐рддреНрд╡ рдХрд╛рд░реНрдпрд╛рдд рдпреЗрддреЗ рдЖрдгрд┐ рдЕрд╢рд╛ рдХреЕрд╢реЗрдЪреА рдкреНрд░рддрд┐рдХреГрддреА рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╕рддреЗ, рдЕрдЧрджреА рд╕рдХреНрд░рд┐рдп-рд╕рдХреНрд░рд┐рдп рдореЛрдбрдЪреНрдпрд╛ рдмрд╛рдмрддреАрддрд╣реА.

рдХреНрд░рд┐рдпрд╛ рдЯреЛрдХрди. рджреБрд╕рд░реА рд╕рдВрдХрд▓реНрдкрдирд╛, рд╕рд╛рдорд╛рдиреНрдпрдд: рд╡рд┐рд╡рд┐рдз рдкрд░рд┐рд╕реНрдерд┐рддреАрдВрд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ рдЬреЗрд╡реНрд╣рд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдиреЗ рдореЗрд▓рджреНрд╡рд╛рд░реЗ рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕рдкрдгреЗ рдХрд╛рд╣реАрддрд░реА рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреНрд░рдХреНрд░рд┐рдпреЗрджрд░рдореНрдпрд╛рди forget password рдХреЕрд╢реЗ actionTokens рд╕рдВрдмрдВрдзрд┐рдд рдЯреЛрдХрдиреНрд╕рдЪрд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЯреНрд░реЕрдХ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ - рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЯреЛрдХрди рдЖрдзреАрдЪ рд╡рд╛рдкрд░рд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рддреЗ рдкреБрдиреНрд╣рд╛ рд╕рдХреНрд░рд┐рдп рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА. рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдХреЕрд╢реЗрдЪреА рд╕рд╛рдорд╛рдиреНрдпрдд: рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░реНрд╕рдордзреНрдпреЗ рдкреНрд░рддрд┐рдХреГрддреА рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╕рдВрдЪрдпрд┐рдд рдбреЗрдЯрд╛рдЪреЗ рдХреЕрд╢рд┐рдВрдЧ рдЖрдгрд┐ рд╡реГрджреНрдзрддреНрд╡ рдбреЗрдЯрд╛рдмреЗрд╕рд╡рд░реАрд▓ рднрд╛рд░ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреЗ рдХреЕрд╢рд┐рдВрдЧ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рд╕реБрдзрд╛рд░рддреЗ, рдкрд░рдВрддреБ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдорд╕реНрдпрд╛ рдЬреЛрдбрддреЗ. рдПрдХрд╛ рдХреАрдХреНрд▓реЛрдХ рд╕рд░реНрд╡реНрд╣рд░рдиреЗ рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рдХреЗрд▓реНрдпрд╛рд╕, рдЗрддрд░ рд╕рд░реНрд╡реНрд╣рд░рдирд╛ рд╕реВрдЪрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХреЕрд╢реЗрдордзреНрдпреЗ рдбреЗрдЯрд╛ рдЕрджреНрдпрддрдирд┐рдд рдХрд░реВ рд╢рдХрддреАрд▓. рдХреАрдХреНрд▓реЛрдХ рд╕реНрдерд╛рдирд┐рдХ рдХреЕрд╢реЗ рд╡рд╛рдкрд░рддреЛ realms, users ╨╕ authorization рдбреЗрдЯрд╛рдмреЗрд╕рдордзреВрди рдбреЗрдЯрд╛ рдХреЕрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА.

рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдХреЕрд╢реЗ рджреЗрдЦреАрд▓ рдЖрд╣реЗ work, рдЬреНрдпрд╛рдЪреА рдкреНрд░рддрд┐рдХреГрддреА рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░рд╛рдВрд╡рд░ рдХреЗрд▓реА рдЬрд╛рддреЗ. рд╣реЗ рд╕реНрд╡рддрдГ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреАрд▓ рдХреЛрдгрддрд╛рд╣реА рдбреЗрдЯрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░рд╛рдВрдордзреАрд▓ рдХреНрд▓рд╕реНрдЯрд░ рдиреЛрдбреНрд╕рд╡рд░ рдбреЗрдЯрд╛ рд╡реГрджреНрдзреАрдмрджреНрджрд▓ рд╕рдВрджреЗрд╢ рдкрд╛рдард╡рддреЗ. рджреБрд╕рд▒реНрдпрд╛ рд╢рдмреНрджрд╛рдВрдд, рдбреЗрдЯрд╛ рдЕрдкрдбреЗрдЯ рд╣реЛрддрд╛рдЪ, рдХреАрдХреНрд▓реЛрдХ рдиреЛрдб рддреНрдпрд╛рдЪреНрдпрд╛ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░рдордзреАрд▓ рдЗрддрд░ рдиреЛрдбреНрд╕ рддрд╕реЗрдЪ рдЗрддрд░ рдбреЗрдЯрд╛ рд╕реЗрдВрдЯрд░рдордзреАрд▓ рдиреЛрдбреНрд╕рдирд╛ рд╕рдВрджреЗрд╢ рдкрд╛рдард╡рддреЛ. рдЕрд╕рд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реНрдпрд╛рдирдВрддрд░, рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрдерд╛рдирд┐рдХ рдХреЕрд╢реЗрдордзреАрд▓ рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рд╕рд╛рдл рдХрд░рддреЛ.

рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рд╕рддреНрд░реЗ. рдирд╛рд╡рд╛рдВрд╕рд╣ рдХреЕрд╢реЗ 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" />

рдХреАрдХреНрд▓реЛрдХ рдХреНрд▓рд╕реНрдЯрд░ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рддреБрдореНрд╣реА рдЗрдиреНрдлрд┐рдирд┐рд╕реНрдкреЕрди рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд┐рдЧрд░ рдЖрдгрд┐ рд╕реБрд░реВ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ

рдордЧ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ remoteStore рдХреАрдХреНрд▓реЛрдХ рдХреЕрд╢реЗрд╕рд╛рдареА. рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреБрд░реЗрд╢реА рдЖрд╣реЗ, рдЬреА рдорд╛рдЧреАрд▓ рдкреНрд░рдорд╛рдгреЗрдЪ рдХреЗрд▓реА рдЬрд╛рддреЗ, рдЬреА рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рддреЗ. 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 HotRod рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рдХреАрдХреНрд▓реЛрдХ рдиреЛрдбреНрд╕рд╕рд╛рдареА: remote.cache.host, remote.cache.port рдЖрдгрд┐ рд╕реЗрд╡реЗрдЪреЗ рдирд╛рд╡ jboss.site.name.

рджреБрд╡реЗ рдЖрдгрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рджрд╕реНрддрдРрд╡рдЬ

рд▓реЗрдЦрд╛рдЪреЗ рднрд╛рд╖рд╛рдВрддрд░ рдЖрдгрд┐ рдХрд░реНрдордЪрд╛рд░реНтАНрдпрд╛рдВрдиреА рд╣реЕрдмреНрд░рд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓реЗ рд╣реЛрддреЗ рд╕реНрд▓рд░реНрдо рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗрдВрджреНрд░ тАФ рд╕рд░рд╛рд╡ рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рддрдЬреНрдЮрд╛рдВрдХрдбреВрди рдЧрд╣рди рдЕрднреНрдпрд╛рд╕рдХреНрд░рдо, рд╡реНрд╣рд┐рдбрд┐рдУ рдХреЛрд░реНрд╕ рдЖрдгрд┐ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдкреНрд░рд╢рд┐рдХреНрд╖рдг (рдХреБрдмрд░реНрдиреЗрдЯреНрд╕, рдбреЗрд╡реНрд╣рдСрдкреНрд╕, рдбреЙрдХрд░, рдЕреЕрдиреНрд╕рд┐рдмрд▓, рд╕реЗрдл, рдПрд╕рдЖрд░рдИ)

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛