Kubernetes рдХреЗ рд▓рд┐рдП рдЕрд╡рд┐рднрд╛рдЬрд┐рдд MongoDB рдкреНрд░рд╡рд╛рд╕рди



рдпрд╣ рд▓реЗрдЦ рд╣рдорд╛рд░реЗ рд╣рд╛рд▓ рд╣реА рдХреЗ RabbitMQ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ рдФрд░ MongoDB рдХреЛ рд╕рдорд░реНрдкрд┐рдд рд╣реИред рдЪреВрдБрдХрд┐ рд╣рдо рдХрдИ рдХреБрдмреЗрд░рдиреЗрдЯ рдФрд░ рдореЛрдВрдЧреЛрдмреАрдбреА рд╕рдореВрд╣реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдмрд┐рдирд╛ рдбрд╛рдЙрдирдЯрд╛рдЗрдо рдХреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрдП рд╣реИрдВред рдореБрдЦреНрдп рдкрд░рд┐рджреГрд╢реНрдп рд╕рдорд╛рди рд╣реИрдВ: рдПрдХ рдЖрднрд╛рд╕реА / рд▓реЛрд╣реЗ рдХреЗ рд╕рд░реНрд╡рд░ рд╕реЗ MongoDB рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг Kubernetes рдореЗрдВ рдпрд╛ рдПрдХ Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рднреАрддрд░ MongoDB рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг (рдПрдХ рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ)ред

рд╣рдорд╛рд░рд╛ рдиреБрд╕реНрдЦрд╛ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рд╣реИ рдЬрдм рдкреБрд░рд╛рдирд╛ MongoDB рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛рд░реНрдп рдХрд░ рд░рд╣рд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 3 рдиреЛрдбреНрд╕ рдФрд░ K8s рдпрд╛ рдкреБрд░рд╛рдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд┐рдд рд╣реИ) рдЬрд┐рд╕рдХреЗ рд╕рд╛рде Kubernetes рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:



рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдирдП рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ?

рд╕рд┐рджреНрдзрд╛рдВрдд


рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо RabbitMQ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рдорд╛рди рд╣реИред

рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХ рд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП MongoDB рдФрд░ Kubernetes рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред MongoDB рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдиреЛрдбреНрд╕ рдкреБрд░рд╛рдиреЗ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ IP (рдЬрд╣рд╛рдВ рдкреБрд░рд╛рдиреЗ MongoDB рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реНрдерд┐рдд рд╣реИрдВ) рдкрд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░реЗрдВрдЧреЗ рдФрд░ K8s рдореЗрдВ MongoDB рд╕реЗ рдкреЙрдбреНрд╕ рдХреЗ DNS рдирд╛рдоред рдЗрд╕рд▓рд┐рдП, рд▓реЛрд╣реЗ рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ (рдкреБрд░рд╛рдиреА рд╕реНрдерд╛рдкрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде), рдкреЙрдбреНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреЗ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ DNS рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ (рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╛рдо /etc/hosts рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИред )ред

рдЕрдЧрд▓рд╛ рдХрджрдо рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкреЙрдбреНрд╕ рдореЗрдВ MongoDB рдХреНрд▓рд╕реНрдЯрд░ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ 3 рдиреЛрдб рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб K8s рдХреЗ рдПрдХ рдЕрд▓рдЧ рдкреЙрдб рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИ - рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред рд╡рд┐рдиреНрдпрд╛рд╕ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЖрдкрдХреЛ рдкреБрд░рд╛рдиреА рд╕реНрдерд╛рдкрдирд╛ рд╕реЗ MongoDB рдорд╛рд╕реНрдЯрд░ рдХрд╛ рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдлрд┐рд░ K8s рдореЗрдВ рдлрд▓реА рдореЗрдВ рд╕реНрдерд┐рдд MongoDB рдиреЛрдб рддреБрд░рдВрдд рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред

рд╕рднреА рдкреЙрдбреНрд╕ рдКрдкрд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ 6-рдиреЛрдб MongoDB рдХреНрд▓рд╕реНрдЯрд░ рдмрдирддрд╛ рд╣реИ:



рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдлрд▓реА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдмрдврд╝реЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдб рдмрд╛рд░реА рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рдордп рдпрд╣ рдорд╛рд╕реНрдЯрд░ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рддрд╛ рд╣реИред

рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдирдП MongoDB рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:



рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ MongoDB рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рдкреБрд░рд╛рдиреЗ рдиреЛрдбреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЗрд╕ рдХрджрдо рдХреЛ рдкреВрд░рд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



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

рд╣рдо рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ


рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ


рд╡рд┐рд╡рд░рдг:

  • рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдХреНрд▓рд╕реНрдЯрд░ (рдорд┐рдирд┐рдХреНрдпреВрдм рднреА рдЙрдкрдпреБрдХреНрдд рд╣реИ);
  • MongoDB рдХреНрд▓рд╕реНрдЯрд░ (рдирдВрдЧреЗ рдзрд╛рддреБ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╣реЗрд▓рдо рдЪрд╛рд░реНрдЯ рд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред

рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, MongoDB рд╡рд╛рд▓реЗ рдкреБрд░рд╛рдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ mongo mongo-old рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЙрд╕реА Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд╣рд╛рдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдо рдирдП ( mongo-new ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗред

рдкреБрд░рд╛рдиреЗ рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рддреИрдпрд╛рд░ рдХрд░рдирд╛


1. рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬреЛ рд╡рд░реНрдгрд┐рдд рдпреЛрдЬрдирд╛ рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╣рдо рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдореЗрдВ рд╕реАрдзреЗ рдПрдХ "рдкреБрд░рд╛рдирд╛" (рдпрд╛рдиреА, рдкреНрд░рд╡рд╛рд╕ рдХреЗ рдЕрдзреАрди) MongoDB рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдПрдВрдЧреЗ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ K8 рдХреЗ рдмрд╛рд╣рд░ рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ рдкрд░ рднреА рд╕реНрдерд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣реЗрд▓реНрдо рдЪрд╛рд░реНрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ:

 helm fetch --untar stable/mongodb-replicaset 

... рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

 auth: enabled: true adminUser: mongo adminPassword: pa33w0rd # metricsUser: metrics # metricsPassword: password # key: keycontent # existingKeySecret: # existingAdminSecret: # exisitingMetricsSecret: 

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ values.yaml рдЖрдк рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

2. рдЪрд╛рд░реНрдЯ рд╕реЗрдЯ рдХрд░реЗрдВ:

 helm install . --name mongo-old --namespace mongo-old 

рдЙрд╕рдХреЗ рдмрд╛рдж, MongoDB рдХреА "рдкреБрд░рд╛рдиреА" рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

 kubectl --namespace=mongo-old get pods 



рдЖрдЗрдП рдЕрдкрдиреЗ рдЧреБрд░реБ рдХреЗ рд╕рд╛рде рдлрд▓реА рдЬрд╛рдПрдВ рдФрд░ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЖрдзрд╛рд░ рдмрдирд╛рдПрдБ:

 kubectl --namespace=mongo-old exec -ti mongo-old-mongodb-replicaset-0 mongo use admin db.auth('mongo','password') use music db.artists.insert({ artistname: "The Tea Party" }) show dbs 



рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреЙрдбреНрд╕ рдореЗрдВ рдЬрд╛рдиреЗ рдкрд░, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдорд╛рд╕реНрдЯрд░ mongo-old-mongodb-replicaset-0 ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП, рд╣реЗрд▓реНрдо-рдЪрд╛рд░реНрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдХрдорд╛рдВрдб рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ MASTER_POD рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд┐рдпрд╛ MASTER_POD ред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ (3 рдиреЛрдбреНрд╕ рдХреЗ mongo-old рдХреЗ рд▓рд┐рдП) рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

 for ((i = 0; i < 3; ++i)); do kubectl exec --namespace mongo-old mongo-old-mongodb-replicaset-$i -- sh -c 'mongo --eval="printjson(rs.isMaster())"'; done 

рдЗрд╕ рдкрд░, рдкреБрд░рд╛рдиреЗ MongoDB рд╕реНрдерд╛рдкрдирд╛ рдХреА рддреИрдпрд╛рд░реА, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреИрдпрд╛рд░ рд╣реИред

MongoDB рдХреНрд▓рд╕реНрдЯрд░ рдкреНрд░рд╡рд╛рд╕рди


рдЕрдм рд╣рдо рдирдП MongoDB рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреА рддреИрдирд╛рддреА рдХрд░реЗрдВрдЧреЗ, рдЬреЛ Kubernetes рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

NB : рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ MongoDB рдХреЗ рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЦрддрд░рд╛ рд╣реИред

рдкрд┐рдЫрд▓реЗ рдЦрдВрдб (рдЬрд╣рд╛рдВ рд╣рдордиреЗ "рдкреБрд░рд╛рдиреЗ" MongoDB рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреА рдирдХрд▓ рдХреА рдереА) рдХреЗ рдЕрдиреБрд░реВрдк, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦрд┐рдд рд╣реЗрд▓реНрдо-рдЪрд╛рд░реНрдЯ ( helm fetch рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рдзрд┐рдХрд░рдг, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рд▓рд╛рдЗрди рдкрд░ рдЗрд╕реЗ рдЬреЛрдбрд╝рдХрд░ init/on-start.sh рдлрд╝рд╛рдЗрд▓ рдХреЛ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХрд╛ рдкрддрд╛ (рдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ рдкрд░ MongoDB рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реЗ рдЖрдкрдХреЛ рдЬреНрдЮрд╛рдд):

 peers='mongo-old-mongodb-replicaset-0.mongo-old-mongodb-replicaset.mongo-old.svc.cluster.local:27017' 

рд╣рдо рдПрдХ рдирдпрд╛ MongoDB рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ:

 helm install . --name mongo-new --namespace mongo-new 

рд╣рдо рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рд╕рднреА рдкреЙрдбреНрд╕ рд╢реБрд░реВ рди рд╣реЛ рдЬрд╛рдПрдВ (рдпрджрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рд╣реИ, рддреЛ рдЙрдирдХреЗ рд▓реЙрдиреНрдЪ рдореЗрдВ рдШрдВрдЯреЛрдВ рд▓рдЧ рд╕рдХрддреЗ рд╣реИрдВ):



рдЕрдм рд╣рдо рдПрдХ рдирдИ рдлрд▓реА рдореЗрдВ exec рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЖрдзрд╛рд░реЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦрддреЗ рд╣реИрдВ:

 kubectl --namespace=mongo-new exec -ti mongo-new-mongodb-replicaset-0 mongo 



рджреЛ MongoDB рд╕рдореВрд╣реЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 6 рдиреЛрдб рд╣реЛрддреЗ рд╣реИрдВред

рдлрд┐рд▓рд╣рд╛рд▓, рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдирдП рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪрд░рдг рд╢реЗрд╖ рд╣реИрдВред

рдирдИ рд╕реНрдерд╛рдкрдирд╛ рдореЗрдВ init/on-start.sh рд╕реЗ, рд╣рдо рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реА рдЧрдИ рд▓рд╛рдЗрди рдХреЛ рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ:

 peers='mongo-old-mongodb-replicaset-0.mongo-old-mongodb-replicaset.mongo-old.svc.cluster.local:27017' 

рдЕрдм рдЪрд▓реЛ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдкреБрд░рд╛рдиреЗ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ "рдЙрдЦрд╛рдбрд╝ рдлреЗрдВрдХрддреЗ рд╣реИрдВ" - рдлрд┐рд░ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдПрдХ рдирдпрд╛ рдорд╛рд╕реНрдЯрд░ рд╕реМрдВрдкрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо MongoDB рдорд╛рд╕реНрдЯрд░ рдХреЗ рд╕рд╛рде рдкреЙрдб рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ:

 kubectl --namespace=mongo-old exec -ti mongo-old-mongodb-replicaset-0 mongo use admin db.auth('mongo','password') 

рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдиреЛрдбреНрд╕ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ:

 cfg = rs.conf() cfg.members[5].priority = 2 rs.reconfig(cfg) rs.stepDown(120) 

рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдПрдХ рдорд╛рд╕реНрдЯрд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ - рдПрдХ рдирдпрд╛ рдЪреБрдирд╛рд╡ рд╣реЛрдЧрд╛ред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╣рдордиреЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдБ рдмрджрд▓реАрдВ, рд╣рдореЗрдВ рдЬрд┐рд╕ рдиреЛрдб рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рдорд╛рд╕реНрдЯрд░ рдмрди рдЬрд╛рдПрдЧрд╛ред

NB : рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рднреА MongoDB рдиреЛрдбреНрд╕ рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ 1 рд╣реИред рдКрдкрд░ рд╣рдо рдЙрд╕ рдиреЛрдб рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдирдП рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рд╕рджрд╕реНрдп рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рд╕реНрдЯрд░ рдмрди рдЬрд╛рдПрдЧрд╛ред рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рддрдВрддреНрд░ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ MongoDB рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдкреБрд░рд╛рдиреЗ MongoDB рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ, рдлрд┐рд░ рдирдП рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдкреБрд░рд╛рдиреЗ рдиреЛрдбреНрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ:

 rs.remove("mongo-old-mongodb-replicaset-0.mongo-old-mongodb-replicaset.mongo-old.svc.cluster.local:27017") rs.remove("mongo-old-mongodb-replicaset-1.mongo-old-mongodb-replicaset.mongo-old.svc.cluster.local:27017") rs.remove("mongo-old-mongodb-replicaset-2.mongo-old-mongodb-replicaset.mongo-old.svc.cluster.local:27017") 

рдЗрд╕рдХреЗ рдмрд╛рдж, рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХреЛ рдкреВрд░рд╛ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╣рдордиреЗ рдкреБрд░рд╛рдиреЗ MongoDB рдХреНрд▓рд╕реНрдЯрд░ рд╕реЗ рдирдП рдореЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛!

рдкрд░рд┐рдгрд╛рдо


рд╡рд░реНрдгрд┐рдд рдпреЛрдЬрдирд╛ рд▓рдЧрднрдЧ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ рдЬрдм рдЖрдкрдХреЛ MongoDB рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдпрд╛ рдмрд╕ рдПрдХ рдирдП рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╢рд╛рдпрдж рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХреЗ рджреМрд░рд╛рди рдореБрдЦреНрдп рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдирдП рдкреЙрдбреНрд╕ рдХреЗ рдЖрдИрдкреА рдкрддреЛрдВ рдХреЛ рдкреБрд░рд╛рдиреЗ MongoDB рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ K8s рдХреЗ рдмрд╛рд╣рд░ рд╣реИ, рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЙрдиреНрд╣реЗрдВ DNS (рдпрд╛ /etc/hosts ) рдореЗрдВ рдирд╛рдо рджреЗрдВред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрди рдЪрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рд╡рд╛рд╕рди рдПрдХ рд╣реА рдХреБрдмреЗрд░рдиреЗрдЯ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдмреАрдЪ рд╣реБрдЖ рдерд╛ред

рдкреБрдирд╢реНрдЪ


рд╣рдорд╛рд░реЗ рдмреНрд▓реЙрдЧ рдореЗрдВ рднреА рдкрдврд╝реЗрдВ:

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


All Articles