рдбрд╛рдпрд░реЗрдХреНрдЯрд┐рд╕рдЖрд░рдПрдХреНрд╕ рд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдФрд░ рдлреЗрд▓рдУрд╡рд░

Redis рдкреВрд░реА рддрд░рд╣ рд╕реЗ RAM рдореЗрдВ рд░рдЦрд╛ NoSQL рд╡рд░реНрдЧ (рдЧреИрд░-рд╕рдВрдмрдВрдзрдкрд░рдХ DBMS) рдХрд╛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓реА рд╣реИред рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, "рдХреБрдВрдЬреА" - "рдореВрд▓реНрдп" рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдбреАрдмреАрдПрдордПрд╕ рдХреЛ рдЕрдХреНрд╕рд░ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдЫреЛрдЯреЗ рдбреЗрдЯрд╛ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрд▓реЗрдмрд▓ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдХреИрд╢ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Redis DBMS рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

  • рдЙрдЪреНрдЪ рдЧрддрд┐, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рдбреЗрдЯрд╛ рд░реИрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ;
  • рдкрд╛рд░ рдордВрдЪ;
  • рдмреАрдПрд╕рдбреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рдг (рдУрдкрди рд╕реЛрд░реНрд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ)ред

рд░реЗрдбрд┐рд╕ рдХреЗ рд╡рд┐рддрд░рдг рдФрд░ рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреА рдЪреМрдбрд╝рд╛рдИ рдХрд╛ рдЕрдиреБрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рднрд╛рд░реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рджреНрд╡рд╛рд░рд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк DirectumRX рд╕реЗрд╡рд╛рдУрдВ рдХреА рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ DirectumRX рд╕рдВрдЧреНрд░рд╣рдг рд╕реЗрд╡рд╛ рдФрд░ DirectumRX рд╡реЗрдм рдПрдХреНрд╕реЗрд╕ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Redis рдЕрд╕рдлрд▓-рд╕реБрд░рдХреНрд╖рд┐рдд рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЫрд╡рд┐

рд░реЗрдбрд┐рд╕ рдкрд░рд┐рдЪрд╛рд▓рди рдбреЗрдЯрд╛, рдХреИрд╢ рдФрд░ рдЕрдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛ рдЬреЛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдореЛрдб рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдВрдкрд░реНрдХ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЙрд╕ рд╕реНрдерд╛рдкрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рди рд╣реЛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╡рд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред

рд░реЗрдбрд┐рд╕ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдФрд░ рднрд╛рд░реА рднрд╛рд░ рдХреЗ рдЕрдзреАрди рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди Redis рд╡рд┐рдлрд▓рддрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп рдХрдИ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реЛрдЧрд╛ред

рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реЗрдбрд┐рд╕ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░, рдХреНрд╖реИрддрд┐рдЬ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдФрд░ рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ 2 рддрд░реАрдХреЗ рд╣реИрдВ:

  1. Redis Sentiel рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
  2. Redis Cluster рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

Redis Sentiel рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


Redis Sentiel (Redis Tracking Node) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк Redis 2.4 рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд Redis Sentiel рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡рд╣ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддрд┐рдХреГрддрд┐ рдиреЛрдбреНрд╕ рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рднреА рдХрд░рддрд╛ рд╣реИред рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ SLAVE рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдХреМрди рд╕рд╛ рдорд╛рд╕реНрдЯрд░ рдмрдиреЗрдЧрд╛ рдФрд░ рдЪрд▓рддреЗ-рдлрд┐рд░рддреЗ рдкреБрдирд░реНрд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдЧрд╛ред

рдХреНрд▓рд╛рд╕рд┐рдХ рдпреЛрдЬрдирд╛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:

рдЫрд╡рд┐

рдХрдИ SLAVE рдиреЛрдбреНрд╕ (рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ 1000 рддрдХ) рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрддреНрдкрд╛рджрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рджреЛ SLAVE рдиреЛрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред

рдЖрдорддреМрд░ рдкрд░, рдпреЛрдЬрдирд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ Redis Sentiel рд╕реЗрд╡рд╛ рдХреЛ MASTER рдФрд░ SLAVE рдиреЛрдб рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ MASTER рдиреЛрдб рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рд╢реЗрд╖ рдирд┐рдЧрд░рд╛рдиреА рдиреЛрдб рдПрдХ рдирдпрд╛ MASTER рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред

Redis рдХрд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдЙрддреНрдкрд╛рдж рдбреЗрд╡рд▓рдкрд░ рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд┐рддрд░рдг рд╕рд╛рдЗрдЯ рдХреЗрд╡рд▓ рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред рдПрдХ рд╕рдордп рдореЗрдВ, рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕ рдХреЛ рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА Microsoft рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реА рдереА, рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рд╕рдВрд╕реНрдХрд░рдг 3.2.100 рдкрд░ рд╡рд┐рдХрд╛рд╕ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рддреИрдирд╛рддреА рд╡рд┐рдХрд▓реНрдк рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рдкрд░реАрдХреНрд╖рдг рдиреЛрдбреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдбреЗрдмрд┐рдпрди 10 рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдХреЗ рд╕рд╛рде рджреЛ рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯреНрд╕ redis1 рдФрд░ redis2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдкреИрдХреЗрдЬ рд╕реВрдЪрд┐рдпреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдФрд░ Redis рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

apt-get update && apt-get upgrade apt install redis-server 

рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

 root@redis1:/home/user# redis-server -v Redis server v=5.0.3 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=afa0decbb6de285f 

Redis1 рдХреЛ MASTER рдиреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ рдФрд░ redis2 рдПрдХ SLAVE рдиреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд░реЗрдбрд┐рд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ (рдЕрднреА рддрдХ рдЧрд▓рддреА-рд╕рд╣рд┐рд╖реНрдгреБ рдирд╣реАрдВ)ред

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ /etc/redis/redis.conf рдореЗрдВ redis1 рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

 # ,   MASTER     . requirepass TestPass 

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ /etc/redis/redis.conf рдореЗрдВ redis2 рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ:

 #   MASTER  . slaveof redis1 6379 #      . masterauth TestPass #   ,         . requirepass TestPass 

рджреЛрдиреЛрдВ рдиреЛрдбреНрд╕ рдкрд░ рд░реЗрдбрд┐рд╕-рд╕рд░реНрд╡рд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ:

 root@redis1:/etc/redis# /etc/init.d/redis-server stop [ ok ] Stopping redis-server (via systemctl): redis-server.service. root@redis1:/etc/redis# /etc/init.d/redis-server start [ ok ] Starting redis-server (via systemctl): redis-server.service. root@redis2:/etc/redis# /etc/init.d/redis-server stop [ ok ] Stopping redis-server (via systemctl): redis-server.service. root@redis2:/etc/redis# /etc/init.d/redis-server start [ ok ] Starting redis-server (via systemctl): redis-server.service. 

рд╣рдо рдорд╛рд╕реНрдЯрд░ рдХреА рддрд░рдл рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдиреЛрдбреНрд╕ рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ рдмрди рдЧрдИрдВ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рднреВрдорд┐рдХрд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХреАрдВ:

 root@redis1:/etc/redis# redis-cli -a TestPass info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:master connected_slaves:1 slave0:ip=192.168.9.96,port=6379,state=online,offset=28,lag=0 master_replid:56b0a702d5823d107b0ca1ca2c80f8ef650a4b28 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:28 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:28 

SLAVE рдХреА рдУрд░, рд╣рдо рдПрдХ рд╣реА рд╕реНрдерд┐рддрд┐ рджреЗрдЦрддреЗ рд╣реИрдВ:
 root@redis2:/etc/redis# redis-cli -a TestPass info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:slave master_host:redis1 master_port:6379 master_link_status:up master_last_io_seconds_ago:4 master_sync_in_progress:0 slave_repl_offset:14 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:56b0a702d5823d107b0ca1ca2c80f8ef650a4b28 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:14 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:14 

рдЕрдм рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╣рд╛рд▓ рд╣реЛ рдЬрд╛рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ Redis Sentinel рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕реЗрд╡рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, Redis Sentinel рдирд┐рдЧрд░рд╛рдиреА рд╕реЗрд╡рд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдЪрд╛рд▓рди рдХрд░ рд╕рдХрддреА рд╣реИ:

  1. MASTER рдФрд░ SLAVE рдиреЛрдбреНрд╕ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдиреЛрдбреНрд╕ рдХреА рджреБрд░реНрдЧрдорддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рд░реНрдЯ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред
  2. рдпрджрд┐ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рд╛рдХреНрд╖реА рдиреЛрдб SLAVE рдиреЛрдб рдХреЛ рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рд░рдЦ рд╕рдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╢реЗрд╖ SL рдиреЛрдб рдиреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рд╡реЗ рдирдП рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
  3. MASTER рдФрд░ SLAVE рдиреЛрдбреНрд╕ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИред

рдкреНрд░рдпреЛрдЧ рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд╛рдХреНрд╖реА рд╕реЗрд╡рд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд░реЗрдбрд┐рд╕ 3 рд╡реАрдПрдо рдкрд░ рд░рдЦреЗрдВрдЧреЗред

рд╣рдо рдЙрд╕реА рддрд░рд╣ рд╕реЗ Redis рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ Redis-sentinel рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

 apt install redis-sentinel 

рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдиреЛрдб /etc/redis/sentinel.conline рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 #    redis1   6379. #   1 -      , #        MASTER-. #       , #     MASTER-. sentinel monitor master01 redis1 6379 1 #  3 ,       . sentinel down-after-milliseconds master01 3000 #    MASTER- sentinel failover-timeout master01 6000 # ,  SLAVE-   . #    ,    , #      . sentinel parallel-syncs master01 1 #    . bind 192.168.9.97 127.0.0.1 ::1 #    MASTER-. sentinel auth-pass master01 TestPass 

рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗрд╡рд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ:

 root@redis3:/etc/redis# /etc/init.d/redis-sentinel restart [ ok ] Restarting redis-sentinel (via systemctl): redis-sentinel.service. 

рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдЯреНрд░реИрдХрд┐рдВрдЧ рд╕реЗрд╡рд╛ рдиреЗ рдорд╛рд╕реНрдЯрд░ рдФрд░ рд╕реНрд▓реЗрд╡ рдХреЛ рджреЗрдЦрд╛:

 root@redis3:/etc/redis# redis-cli -p 26379 info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=master01,status=ok,address=192.168.9.95:6379,slaves=1,sentinels=1 

рд╣рдо рдкреНрд░рдпреЛрдЧ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рд╣рдо рдПрдХ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ, redis1 рдиреЛрдб рдкрд░ рд░реЗрдбрд┐рд╕-рд╕рд░реНрд╡рд░ рд╕реЗрд╡рд╛ рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ рдЧрд╡рд╛рд╣ рдиреЛрдб рдХреА рд╡рд░реНрддрдорд╛рди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

 root@redis3:/etc/redis# redis-cli -p 26379 info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=master01,status=ok,address=192.168.9.96:6379,slaves=1,sentinels=1 

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рд╕реНрдЯрд░ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред

рд╣рдо redis1 рдиреЛрдб рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВрдЧреЗ:

 root@redis3:/var/log/redis# redis-cli -h redis1 -p 6379 -a TestPass info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:slave master_host:192.168.9.96 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:15977 slave_priority:100 slave_read_only:1 connected_slaves:0 master_replid:6c0c7d0eedccede56f211f2db74a98c4d0ff6d56 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:15977 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:15977 

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдиреЛрдб рдХреЛ SLAVE рднреВрдорд┐рдХрд╛ рдорд┐рд▓реА рд╣реИ, рдФрд░ redis2 рдиреЛрдб рдПрдХ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рд╣реИред

Redis2 рдиреЛрдб рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВ рдФрд░ рдЧрд╡рд╛рд╣ рдиреЛрдб рдХреА рд╕реНрдерд┐рддрд┐ рджреЗрдЦреЗрдВ:

 root@redis3:/var/log/redis# redis-cli -p 26379 info sentinel # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=master01,status=ok,address=192.168.9.95:6379,slaves=1,sentinels=1 

рдФрд░ рд░реЗрдбрд┐рд╕ 1 рдиреЛрдб рдХреА рд╕реНрдерд┐рддрд┐:

 root@redis3:/var/log/redis# redis-cli -h redis1 -p 6379 -a TestPass info replication Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # Replication role:master connected_slaves:0 master_replid:6e9d67d6460815b925319c2bafb58bf2c435cffb master_replid2:6c0c7d0eedccede56f211f2db74a98c4d0ff6d56 master_repl_offset:33610 second_repl_offset:26483 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:33610 

рдорд╣рд╛рди, рддрдВрддреНрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рд╕рд╡рд╛рд▓ рдЙрдардиреЗ рд▓рдЧрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреА DirectumRX рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдХреИрд╕реЗ рдЬреБрдбрд╝реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдиреЛрдб рдкрддреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо HAProxy рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рд▓ рдХрд░реЗрдВрдЧреЗред

рд░реЗрдбрд┐рд╕ рдиреЛрдб рдкреНрд░реЙрдХреНрд╕рд╛рдЗрдбрд┐рдВрдЧ


рдХреЛрдИ рднреА рдкреНрд░реЙрдХреНрд╕реА tcp рд╕реЗрд╡рд╛ Redis рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреА рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо HAProxy рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдЙрдЪреНрдЪ рдЙрдкрд▓рдмреНрдзрддрд╛ рдФрд░ рд▓реЛрдб рд╕рдВрддреБрд▓рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд░реВрдк рд╕реЗ рдЬреНрдЮрд╛рдд рдСрдирд▓рд╛рдЗрди рд╕реЗрд╡рд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдбреЗрд╡рд▓рдкрд░ рдкреЗрдЬ рдкрд░ HAProxy рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВред

Redis3 рдиреЛрдб рдкрд░ HAProxy рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:

 root@redis3:/var/log/redis# apt install haproxy 

HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ /etc/haproxy/haproxy.cfg рдореЗрдВ, Redis рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧ рдЬреЛрдбрд╝реЗрдВ:

 тАж frontend ft_redis bind *:6379 name redis mode tcp default_backend bk_redis backend bk_redis mode tcp option tcp-check tcp-check connect #  ,         . tcp-check send AUTH\ TestPass\r\n tcp-check expect string +OK tcp-check send PING\r\n tcp-check expect string +PONG tcp-check send info\ replication\r\n #    MASTER, .. SLAVE      . tcp-check expect string role:master tcp-check send QUIT\r\n tcp-check expect string +OK server Redis1 redis1:6379 check inter 3s server Redis2 redis2:6379 check inter 3s 

рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкреЛрд░реНрдЯ 6379 рдкрд░ рдкрддреЗ рдкрд░ рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдЕрдиреБрд░реЛрдз рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдиреЛрдб рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рдХреА рднреВрдорд┐рдХрд╛ рд╣реИред

Hproxy рд╕реЗрд╡рд╛ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ:

 root@redis3:/etc/haproxy# /etc/init.d/haproxy restart 

рдЖрдЗрдП redis-cli рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

 root@redis3:/etc/haproxy# redis-cli -p 6379 -a TestPass Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. 127.0.0.1:6379> SET TestKey "Some test string" OK 127.0.0.1:6379> GET TestKey "Some test string" 127.0.0.1:6379> info keyspace # Keyspace db0:keys=1,expires=0,avg_ttl=0 

Redis1 рдиреЛрдб рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рдХреНрд╡реЗрд░реА рдлрд┐рд░ рд╕реЗ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА:

 127.0.0.1:6379> info keyspace Error: Server closed the connection (3.01s) 127.0.0.1:6379> info keyspace # Keyspace db0:keys=1,expires=0,avg_ttl=0 (2.01s) 127.0.0.1:6379> GET TestKey "Some test string" 

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдХрд╛рдЯ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдХрдиреЗрдХреНрд╢рди рдлрд┐рд░ рд╕реЗ рдмрд╣рд╛рд▓ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╕рднреА рдбреЗрдЯрд╛ рдЬрдЧрд╣ рдкрд░ рд░рд╣реЗред

рдЕрдм Redis рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП DirectumRX рд╕реЗрд╡рд╛рдУрдВ рдХреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдкрддреЗ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рд░реЗрдбрд┐рд╕ рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


Redis рдХреНрд▓рд╕реНрдЯрд░ рдХреНрд▓рд╕реНрдЯрд░ рд╡рд┐рдХрд▓реНрдк, рд╕рдВрд╕реНрдХрд░рдг redis 3.0 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдбреЗрдЯрд╛ рд╡рд┐рднрд╛рдЬрди рдФрд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред рдиреЛрдб рдкреНрд░рдмрдВрдзрди, рдкреНрд░рддрд┐рдХреГрддрд┐, рдиреЛрдбреНрд╕ рдкрд░ рдбреЗрдЯрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдФрд░ рдХрдИ рдорд╛рд╕реНрдЯрд░ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рддрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдкрд╣реБрдВрдЪ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдЫрд╡рд┐

рд░реЗрдбрд┐рд╕ рдХреНрд▓рд╕реНрдЯрд░ рдорд▓реНрдЯреАрдорд╛рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд╕реНрдЯрд░ рдиреЛрдб рдореЗрдВ рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ SLAVE рдиреЛрдбреНрд╕ (1000 рддрдХ) рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреНрд▓рд╕реНрдЯрд░ рд░реЗрдбрд┐рд╕ рд╕реЗрд╡рд╛ рдХреА рдЧрд▓рддреА рд╕рд╣рдирд╢реАрд▓рддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗ рд╕рдХрддрд╛ рд╣реИ:

  • рдпрджрд┐ рдХреБрдЫ рдиреЛрдбреНрд╕ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрд▓рд╕реНрдЯрд░ рдЙрдирдХреЗ рд▓рд┐рдП рд▓реЛрдб рдХреЛ рдЕрдиреНрдп рдиреЛрдбреНрд╕ рдореЗрдВ рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ;
  • рдпрджрд┐ рдХреБрдВрдЬреА рдиреЛрдб рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдкреВрд░реНрдг рдХреНрд▓рд╕реНрдЯрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрд▓рд╛рдЗрдВрдЯ 2 рдХреЛ M2 рдкрд░ рд▓рд┐рдЦрдиреЗ рдкрд░ рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИред рдПрдо 2 "рдУрдХреЗ" рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрд╕ 2 рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдПрдо 2 рдПрд╕ 2 рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдПрдХреНрд╕рдЪреЗрдВрдЬ рдХреЗ рд╕рд╣реА рд╕рдорд╛рдкрди рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреНрд░рд╛рд╣рдХ рдХреЛ рддреБрд░рдВрдд рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, S2 рдкреНрд░рддрд┐рдХреГрддрд┐ рдореЗрдВ рд╕рднреА рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрдИ SLAVE рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред

рдЬрдм рдПрдо 1, рдПрдо 3 "рдПрдо 2" рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрднреА рднреА рдПрдо 2 рдХреЛ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред рдпрджрд┐ рдЕрдиреБрдкрд▓рдмреНрдзрддрд╛ рдХреБрдЫ рд╕рдордп (рдХреНрд▓рд╕реНрдЯрд░-рдиреЛрдб-рдЯрд╛рдЗрдордЖрдЙрдЯ рдкреИрд░рд╛рдореАрдЯрд░) рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рд░рд╣реЗрдЧреА, рддреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ S2 рдХреЛ рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рдбрд╛рд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ M2 рдЕрдкрдиреЗ рдЖрдк рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред

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

рдЫрд╡рд┐

рдпрджрд┐ рдХреЛрдИ рднреМрддрд┐рдХ рдиреЛрдб рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд SLAVE рдкреНрд░рддрд┐рдХреГрддрд┐рдпрд╛рдВ рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рдЪрд▓реА рдЬрд╛рдПрдВрдЧреА, рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рд╣рдо рдкрд░реАрдХреНрд╖рдг рдмреЗрдВрдЪ рдкрд░ 3 рдЖрднрд╛рд╕реА рдорд╢реАрдиреЛрдВ (redis1, redis2 рдФрд░ redis3) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ 2 Red Hat рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЛ рдЪрд▓рд╛рдПрдЧрд╛ред

рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП, рдорд╛рд╕реНрдЯрд░ - SLAVE рдЬреЛрдбрд╝реЗ рдХреЛ рд╕рдорд╛рди рдкреЛрд░реНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреЛрдбрд╝реА M1 - S1 рдХреЗ рд▓рд┐рдП рд╣рдо рдкреЛрд░реНрдЯ 6381 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ
рдЬреЛрдбрд╝реА рдПрдо 2 - рдПрд╕ 2 рдХреЗ рд▓рд┐рдП рд╣рдо рдкреЛрд░реНрдЯ 6382 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ
рдЬреЛрдбрд╝реА рдПрдо 3 - рдПрд╕ 3 рдХреЗ рд▓рд┐рдП рд╣рдо рдкреЛрд░реНрдЯ 6383 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ

рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рддреИрдпрд╛рд░ рдХрд░реЗрдВ

Redis1 рдкрд░:

 cp /etc/redis/redis.conf /etc/redis/m1_redis.conf cp /etc/redis/redis.conf /etc/redis/s2_redis.conf mv /etc/redis/redis.conf /etc/redis/redis.bak 

Redis2 рдкрд░:

 cp /etc/redis/redis.conf /etc/redis/m2_redis.conf cp /etc/redis/redis.conf /etc/redis/s3_redis.conf mv /etc/redis/redis.conf /etc/redis/redis.bak 

Redis3 рдкрд░:

 cp /etc/redis/redis.conf /etc/redis/m3_redis.conf cp /etc/redis/redis.conf /etc/redis/s1_redis.conf mv /etc/redis/redis.conf /etc/redis/redis.bak 

рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рднрд░реЗрдВ:

 bind <IP- > protected-mode no #      ,    . port <> pidfile /var/run/redis_<>.pid # <yes/no> -   Redis Cluster cluster-enabled yes # ,      : #  ,  ,    . #         . cluster-config-file nodes-<>.conf #  ,  master-   , #          slaves #    . cluster-node-timeout 15000 

рдЪрд▓реЛ рд░реЗрдбрд┐рд╕ рдиреЛрдбреНрд╕ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ:

рдиреЛрдб рд░реЗрдбрд┐рд╕ 1:

 root@redis1:/etc/redis# redis-server /etc/redis/m1_redis.conf root@redis1:/etc/redis# redis-server /etc/redis/s2_redis.conf 

Redis2 рдиреЛрдб:

 root@redis2:/etc/redis# redis-server /etc/redis/m2_redis.conf root@redis2:/etc/redis# redis-server /etc/redis/s3_redis.conf 

рд░реЗрдбрд┐рд╕ 3 рдиреЛрдб:

 root@redis3:/etc/redis# redis-server /etc/redis/m3_redis.conf root@redis3:/etc/redis# redis-server /etc/redis/s1_redis.conf 

рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░реЗрдбрд┐рд╕-рдХреНрд▓реА рдХреНрд▓рд╛рдЗрдВрдЯ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЖрдИрдкреА рдХреА рд╕реВрдЪреА рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛: рд╕рд░реНрд╡рд░ рдХреЗ рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝реЗ рдЬреЛ рдорд╛рд╕реНрдЯрд░ рдФрд░ рд╕реНрд▓реЗрд╡ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рдПрдВрдЧреЗ:

 redis-cli --cluster create redis1-ip:6381 redis2-ip:6382 redis3-ip:6383 redis1-ip:6382 redis2-ip:6383 redis3-ip:6381 --cluster-replicas 1 

, рдЬрд╣рд╛рдВ - thecluster-replicas 1 рд╡рд┐рдХрд▓реНрдк рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд╕реНрдЯрд░ рдХреЗ рдкрд╛рд╕ рдХрд┐рддрдиреЗ SLAVE рд╣реЛрдВрдЧреЗ, рдФрд░ рд╡реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдЪреБрдиреЗ рдЬрд╛рдПрдВрдЧреЗред

 root@redis1:~/redis/src# redis-cli --cluster create 192.168.9.51:6381 192.168.9.52:6382 192.168.9.53:6383 192.168.9.51:6382 192.168.9.52:6383 192.168.9.53:6381 --cluster-replicas 1 >>> Performing hash slots allocation on 6 nodes... Master[0] -> Slots 0 - 5460 Master[1] -> Slots 5461 - 10922 Master[2] -> Slots 10923 - 16383 Adding replica 192.168.9.52:6383 to 192.168.9.51:6381 Adding replica 192.168.9.51:6382 to 192.168.9.52:6382 Adding replica 192.168.9.53:6381 to 192.168.9.53:6383 >>> Trying to optimize slaves allocation for anti-affinity [OK] Perfect anti-affinity obtained! M: e92cb96fd6c20db7509662a248902e3751ebe95f 192.168.9.51:6381 slots:[0-5460] (5461 slots) master M: d499af3672b3063c7239572ec311ad3160f280ae 192.168.9.52:6382 slots:[5461-10922] (5462 slots) master M: 3a41475e1613519c3ecdec695736a898262a24a5 192.168.9.53:6383 slots:[10923-16383] (5461 slots) master S: 182e5cffc9c31c231de69ddbaf507ec1fe17bb09 192.168.9.51:6382 replicates d499af3672b3063c7239572ec311ad3160f280ae S: 44f656062259005adea58bc5ad024071a050e192 192.168.9.52:6383 replicates 3a41475e1613519c3ecdec695736a898262a24a5 S: 485ffb786e9763955e6f10ffc59247690ad9bc11 192.168.9.53:6381 replicates e92cb96fd6c20db7509662a248902e3751ebe95f Can I set the above configuration? (type 'yes' to accept): yes >>> Nodes configuration updated >>> Assign a different config epoch to each node >>> Sending CLUSTER MEET messages to join the cluster Waiting for the cluster to join ..... >>> Performing Cluster Check (using node 192.168.9.51:6381) M: e92cb96fd6c20db7509662a248902e3751ebe95f 192.168.9.51:6381 slots:[0-5460] (5461 slots) master 1 additional replica(s) M: d499af3672b3063c7239572ec311ad3160f280ae 192.168.9.52:6382 slots:[5461-10922] (5462 slots) master 1 additional replica(s) S: 485ffb786e9763955e6f10ffc59247690ad9bc11 192.168.9.53:6381 slots: (0 slots) slave replicates e92cb96fd6c20db7509662a248902e3751ebe95f S: 182e5cffc9c31c231de69ddbaf507ec1fe17bb09 192.168.9.51:6382 slots: (0 slots) slave replicates d499af3672b3063c7239572ec311ad3160f280ae S: 44f656062259005adea58bc5ad024071a050e192 192.168.9.52:6383 slots: (0 slots) slave replicates 3a41475e1613519c3ecdec695736a898262a24a5 M: 3a41475e1613519c3ecdec695736a898262a24a5 192.168.9.53:6383 slots:[10923-16383] (5461 slots) master 1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. 

рдХреНрд▓рд╕реНрдЯрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рдо рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ:

 root@redis1:~/redis/src# redis-cli -c -h 192.168.9.51 -p 6381 192.168.9.51:6381> CLUSTER INFO cluster_state:ok cluster_slots_assigned:16384 cluster_slots_ok:16384 cluster_slots_pfail:0 cluster_slots_fail:0 cluster_known_nodes:6 cluster_size:3 cluster_current_epoch:6 cluster_my_epoch:1 cluster_stats_messages_ping_sent:1254 cluster_stats_messages_pong_sent:1243 cluster_stats_messages_sent:2497 cluster_stats_messages_ping_received:1238 cluster_stats_messages_pong_received:1254 cluster_stats_messages_meet_received:5 cluster_stats_messages_received:2497 192.168.9.51:6381> 

рд░реЗрдбреАрд╕ рд╕реЗрдВрдЯрд┐рдпрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк INFO рдкреНрд░рддрд┐рдХреГрддрд┐ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 root@redis1:~/redis/src# redis-cli -c -h 192.168.9.51 -p 6381 192.168.9.51:6381> INFO replication # Replication role:master connected_slaves:1 slave0:ip=192.168.9.53,port=6381,state=online,offset=1946,lag=0 master_replid:59cd95d394dad9d0e49042637fdfd5290db4abfe master_replid2:0000000000000000000000000000000000000000 master_repl_offset:1946 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:1 repl_backlog_histlen:1946 192.168.9.51:6381> 

рдЖрдЗрдП рдХрдИ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпреЗ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдкреНрд░рддрд┐рдХреГрддрд┐рдпреЛрдВ рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ:

 192.168.9.51:6381> SET key1 test1 -> Redirected to slot [9189] located at 192.168.9.52:6382 OK 192.168.9.52:6382> SET key2 test2 -> Redirected to slot [4998] located at 192.168.9.51:6381 OK 192.168.9.51:6381> SET key3 test3 OK 192.168.9.51:6381> 

M2 рдкрд░ рдЬрд╛рдВрдЪреЗрдВ:

 root@redis2:/home/user# redis-cli -c -h 192.168.9.52 -p 6382 192.168.9.52:6382> GET key1 "test1" 192.168.9.52:6382> GET key2 -> Redirected to slot [4998] located at 192.168.9.51:6381 "test2" 192.168.9.51:6381> GET key3 "test3" 192.168.9.51:6381> 

рдФрд░ рдПрдо 3 рдкрд░:

 root@redis3:/home/user# redis-cli -c -h 192.168.9.53 -p 6383 192.168.9.53:6383> GET key1 -> Redirected to slot [9189] located at 192.168.9.52:6382 "test1" 192.168.9.52:6382> GET key2 -> Redirected to slot [4998] located at 192.168.9.51:6381 "test2" 192.168.9.51:6381> GET key3 "test3" 192.168.9.51:6381> 

рд╣рдо redis1 рдиреЛрдб рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЬрд╛рдБрдЪреЗрдВрдЧреЗ рдХрд┐ S1 рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

 192.168.9.52:6382> CLUSTER NODES <b>182e5cffc9c31c231de69ddbaf507ec1fe17bb09 192.168.9.51:6382@16382 slave,fail d499af3672b3063c7239572ec311ad3160f280ae 1569509904727 1569509900000 4 connected</b> 485ffb786e9763955e6f10ffc59247690ad9bc11 <i>192.168.9.53:6381@16381 master</i> - 0 1569510017272 7 connected 0-5460 44f656062259005adea58bc5ad024071a050e192 192.168.9.52:6383@16383 slave 3a41475e1613519c3ecdec695736a898262a24a5 0 1569510018274 5 connected <b>e92cb96fd6c20db7509662a248902e3751ebe95f 192.168.9.51:6381@16381 master,fail - 1569509906731 1569509901721 1 connected</b> 3a41475e1613519c3ecdec695736a898262a24a5 192.168.9.53:6383@16383 master - 0 1569510019275 3 connected 10923-16383 d499af3672b3063c7239572ec311ad3160f280ae 192.168.9.52:6382@16382 myself,master - 0 1569510017000 2 connected 5461-10922 

рд╣рдо рдПрдо 1 рдФрд░ рдПрд╕ 2 рдХреА рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдПрд╕ 3 рдиреЗ рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред

рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреБрдВрдЬрд┐рдпрд╛рдВ рдХрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ:

 192.168.9.52:6382> GET key1 "test1" 192.168.9.52:6382> GET key2 -> Redirected to slot [4998] located at 192.168.9.53:6381 "test2" 192.168.9.53:6381> GET key3 "test3" 192.168.9.53:6381> 

рдХреБрдВрдЬреА рдЬреЛ рдкрд╣рд▓реЗ redis1 рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЧрдИ рдереАрдВ, рдЕрдм redis3 рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

Redis1 рдиреЛрдб рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдиреЛрдбреНрд╕ M1 рдФрд░ S2 рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:

 192.168.9.53:6381> CLUSTER NODES <i>e92cb96fd6c20db7509662a248902e3751ebe95f 192.168.9.51:6381@16381 slave 485ffb786e9763955e6f10ffc59247690ad9bc11 0 1569511658217 7 connected 182e5cffc9c31c231de69ddbaf507ec1fe17bb09 192.168.9.51:6382@16382 slave d499af3672b3063c7239572ec311ad3160f280ae 0 1569511657000 4 connected</i> d499af3672b3063c7239572ec311ad3160f280ae 192.168.9.52:6382@16382 master - 0 1569511656000 2 connected 5461-10922 3a41475e1613519c3ecdec695736a898262a24a5 192.168.9.53:6383@16383 master - 0 1569511656000 3 connected 10923-16383 485ffb786e9763955e6f10ffc59247690ad9bc11 192.168.9.53:6381@16381 myself,master - 0 1569511656000 7 connected 0-5460 44f656062259005adea58bc5ad024071a050e192 192.168.9.52:6383@16383 slave 3a41475e1613519c3ecdec695736a898262a24a5 0 1569511657216 5 connected 

M1 рдФрд░ S2 рдХрд╛ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдареАрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдм M1 SLAVE рдореЛрдб рдореЗрдВ рд╣реИред

рдФрд░ рдЪрд╛рдмреА рднреА redis3 рдиреЛрдб рдкрд░ рд╣реИрдВ:

 192.168.9.53:6383> GET key1 -> Redirected to slot [9189] located at 192.168.9.52:6382 "test1" 192.168.9.52:6382> GET key2 -> Redirected to slot [4998] located at 192.168.9.53:6381 "test2" 192.168.9.53:6383> GET key3 -> Redirected to slot [935] located at 192.168.9.53:6381 "test3" 

рдХреНрд▓рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ Redis рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

DirectumRX рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реАрдЬрд╝ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рд░реЗрдбрд┐рд╕ рд╕реЗрдВрдЯреАрдПрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИред

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


рдЗрд╕ рд▓реЗрдЦ рдиреЗ рд░реЗрдбрд┐рд╕ рдЧрд▓рддреА рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд╛рдирд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреЗрд╕рдореЗрдХрд░ рдПрдХ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреЛ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрд╛рддрдХрд╛рд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдХреА рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, HAProxy) рдХреЗ рд▓рд┐рдП, рдпрд╣ рднреА рджреЛрд╖ рд╕рд╣рд┐рд╖реНрдгреБрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрджреНрджрд╛ рднреА рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рдерд╛ред рдпрджрд┐ рдЖрдк рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЗрди рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЯреНрдпреВрдирд┐рдВрдЧ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд▓рд┐рдВрдХ рдорд┐рд▓ рд╕рдХрддреЗ рд╣реИрдВ:
рд░реЗрдбрд┐рд╕ рдХреНрд▓рд╕реНрдЯрд░ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓
рд░реЗрдбрд┐рд╕ рд╕реЗрдВрдЯрд┐рдирд▓ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди
HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореИрдиреБрдЕрд▓ ред

Source: https://habr.com/ru/post/hi469543/


All Articles