
рдХрдардкреБрддрд▓реА рдПрдХ рдХрд╛рдлреА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдорд╢реАрдиреЛрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмрдбрд╝реЗ рдмреЗрдбрд╝реЗ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред
рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣реИрдмреЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ:
рдпрд╣рд╛рдВ ,
рдпрд╣рд╛рдВ рдФрд░
рдпрд╣рд╛рдВ ред рд╣рдордиреЗ рдкреНрдпреВрдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдЦ рдореЗрдВ рдХрдИ "рд╡реНрдпрдВрдЬрдиреЛрдВ" рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╛рд░реА рднрд╛рд░ рдХреЗ рддрд╣рдд рд╣реИрдВ - рдЬреЛ рдХрд┐ "рд╢рд░реНрдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ" рдореЗрдВ рд╣реИрдВред
рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреА:
- рдХрдардкреБрддрд▓реА: рд╢реИрдХреНрд╖рд┐рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо;
- рдХреНрд▓рд╕реНрдЯрд░рд┐рдВрдЧ, рд╕реНрдХреЗрд▓рд┐рдВрдЧ;
- рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ Storeconfigs;
- рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╕рдВрдЧреНрд░рд╣;
- рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред
рддреБрд░рдВрдд рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рд╣рд╛рдИрд▓рд╛рдб
++ 2012 рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдПрдВрдЯреЛрди рдЯреНрдпреВрд░реЗрддреНрд╕реНрдХреА рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдорджреНрджреЗрдирдЬрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ, рд╣рдорд╛рд░реЗ "рд╡реНрдпрдВрдЬрдиреЛрдВ" рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╡рд░рдг рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдЦрд╛рдбрд╝ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ред
рднрд╛рд░ рдореЗрдВ рд▓реМрдЯрддреЗ рд╣реБрдП, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ Badoo рдореЗрдВ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдЪреНрдЪ рд╣реИрдВ:- 2000 рд╕реЗ рдЕрдзрд┐рдХ рд╕рд░реНрд╡рд░;
- рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ рдореЗрдВ 30,000 рд╕реЗ рдЕрдзрд┐рдХ рд▓рд╛рдЗрдиреЗрдВ (рдЕрдВрдЧреНрд░реЗрдЬреА рдкреНрд░рдХрдЯ , рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рдмрдВрдзрди рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓);
- 200 рд╕реЗ рдЕрдзрд┐рдХ рд╕рд░реНрд╡рд░ рдЬреЛ рд╣рд░ 3 рдорд┐рдирдЯ рдореЗрдВ рдХрдардкреБрддрд▓реА рдорд╛рд╕реНрдЯрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддреЗ рд╣реИрдВ;
- рдПрдХ рд╣реА рд╕рдордп рдЕрд╡рдзрд┐ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ 200 рд╕реЗ рдЕрдзрд┐рдХ рд╕рд░реНрд╡рд░ред
рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

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

рдЧреНрд░рд╛рд╣рдХ рдЦреБрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрдереНрдп рдПрдХрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдкрдкреЗрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдирд┐рд░реНрднрд░рддрд╛, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп HTTP рдкреЛрд╕реНрдЯ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИред
рдЪрд░рдг 2: рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛

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

рд╕рд░реНрд╡рд░ рд╕реЗ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рддрд╛ рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдо HTTP POST рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рд░реНрд╡рд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдЪрд░рдг 4: рд░рд┐рдкреЛрд░реНрдЯ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛

рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдардкреБрддрд▓реА рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХрд▓реЗрдХреНрдЯрд░реЛрдВ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддреА рд╣реИред рд╣рдо рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ!
рдЖрдзрд╛рд░ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:

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

рдФрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреНрд╖рдг рдореЗрдВ рддрд╕реНрд╡реАрд░ рдмрд╣реБрдд рдЙрджрд╛рд╕ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рд╣реИ рд╕рд░реНрд╡рд░ рдкрд░ рдХрдардкреБрддрд▓реА рдорд╛рд╕реНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдирд╛ред рд╣рд╛рдВ, рдареАрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрдардкреБрддрд▓реА рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореВрд▓ рдкреИрдХреЗрдЬ рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЧреБрдард▓реА рдХреЛ "рдзрдмреНрдмрд╛" рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ? рдмреЗрд╢рдХ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╡реЗ рд╣рдорд╛рд░реА рд╢рд░реНрддреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдереЗред
рдЕрдкрд╛рдЪреЗ + mod_passenger рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╣рдорд╛рд░реА рдХрдВрдкрдиреА Apache рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
Nginx + рдпрд╛рддреНрд░реА рдХреНрдпреЛрдВ рдирд╣реАрдВ? рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ nginx рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред
рдлрд┐рд░ рдХреНрдпрд╛?
рдЧреЗрдВрдбрд╛ рд╕реЗ рдорд┐рд▓реЗрдВ
рдпреВрдирд┐рдХреЙрд░реНрди рдХреНрдпреЛрдВ?
рдпрд╣рд╛рдБ, рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ:
- рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕реНрддрд░ рд╕рдВрддреБрд▓рди
- рдЙрдирдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдирд╛;
- рдирдВрдЧреЗрдХреНрд╕-рд╢реИрд▓реА рдХрдиреЗрдХреНрд╢рди рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд┐рдирд╛ рдЕрдкрдбреЗрдЯ;
- рдХрдИ рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рд╕реБрдирдиреЗ рдХреА рдХреНрд╖рдорддрд╛;
- PHP-FPM рдХреЗ рд╕рд╛рде рд╕рдорд╛рдирддрд╛рдПрдВ, рд▓реЗрдХрд┐рди рд░реВрдмреА рдХреЗ рд▓рд┐рдПред
рдпреВрдирд┐рдХреЙрд░реНрди рдЪреБрдирдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдХрд╛рд░рдг рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЖрд╕рд╛рдиреА рдереАред
worker_processes 12 working_directory "/etc/puppet" listen '0.0.0.0:3000', :backlog => 512 preload_app true timeout 120 pid "/var/run/puppet/puppetmaster_unicorn.pid" if GC.respond_to?(:copy_on_write_friendly=) GC.copy_on_write_friendly = true end before_fork do |server, worker| old_pid = "#{server.config[:pid]}.oldbin" if File.exists?(old_pid) && server.pid != old_pid begin Process.kill("QUIT", File.read(old_pid).to_i) rescue Errno::ENOENT, Errno::ESRCH end end end
рддреЛ рдЕрдЪреНрдЫреА рдЦрдмрд░: рд╣рдо рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдПрдХ рдмреБрд░рд╛ рдПрдХ рд╣реИ: рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рдЧрдпрд╛ рд╣реИред рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ - рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ "рдиреБрд╕реНрдЦрд╛" рд╣реИред
"рдЧреЙрдб рд╡реА рдЯреНрд░рд╕реНрдЯ"

рдИрд╢реНрд╡рд░ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рдЧрд░рд╛рдиреА рдврд╛рдВрдЪрд╛ рд╣реИред рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рд░реВрдмреА рдореЗрдВ рдкрдкреЗрдЯ рдХреА рддрд░рд╣ рд╣реА рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рднрдЧрд╡рд╛рди рд╡рд┐рднрд┐рдиреНрди рдХрдардкреБрддрд▓реА рдорд╛рд╕реНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддреЗ рд╣реИрдВ:
- рдЙрддреНрдкрд╛рджрди рдХрд╛ рд╡рд╛рддрд╛рд╡рд░рдг;
- рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг;
- рдХрдардкреБрддрд▓реА рд╕реАрдПред
рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛рдПрдБ рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ * .god рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ / etc / god / рдореЗрдВ рдПрдХ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
God.watch do |w| w.name = "puppetmaster" w.interval = 30.seconds w.pid_file = "/var/run/puppet/puppetmaster_unicorn.pid" w.start = "cd /etc/puppet && /usr/bin/unicorn -c /etc/puppet/unicorn.conf -D" w.stop = "kill -QUIT `cat #{w.pid_file}`" w.restart = "kill -USR2 `cat #{w.pid_file}`" w.start_grace = 10.seconds w.restart_grace = 10.seconds w.uid = "puppet" w.gid = "puppet" w.behavior(:clean_pid_file) w.start_if do |start| start.condition(:process_running) do |c| c.interval = 5.seconds c.running = false end end end
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдордиреЗ рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрдардкреБрддрд▓реА рд╕реАрдП рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рднреА рдЧреНрд░рд╛рд╣рдХ рдЕрдкрдиреЗ рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рд╣рдо рдЖрдкрдХреЛ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд╕рдВрддреБрд▓рди
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рд╕реВрдЪрдирд╛рдУрдВ рдХреЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ HTTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рд╣рдореЗрдВ рд╕рд░рд▓ HTTP-рд╕рдВрддреБрд▓рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, nginx рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗ рд░рд╣рд╛ рд╣реИред

- рдЕрдкрд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдПрдВ:
upstream puppetmaster_unicorn { server 127.0.0.1:3000 fail_timeout=0; server server2:3000 fail_timeout=0; }
- рд╣рдо рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
- рдХрдардкреБрддрд▓реА рд╕реАрдП
location ^~ /production/certificate/ca { proxy_pass http://puppetca; } location ^~ /production/certificate { proxy_pass http://puppetca; } location ^~ /production/certificate_revocation_list/ca { proxy_pass http://puppetca; }
- рдХрдардкреБрддрд▓реА рдЧреБрд░реБ
location / { proxy_pass http://puppetmaster_unicorn; proxy_redirect off; }
рдЕрдВрддрд░рд┐рдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ред рдЗрд╕рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ:
- рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЪрд▓рд╛рдПрдВ;
- рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХрд╛ рдкреНрд░рдмрдВрдзрди;
- рд▓реЛрдб рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░реЗрдВред
рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдХрдардкреБрддрд▓реА рдорд╛рд╕реНрдЯрд░ рд╕рд░реНрд╡рд░ рдХреА рддрдХрдиреАрдХреА рдХреНрд╖рдорддрд╛рдПрдВ рдЕрд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЗрд╕ рдкрд░ рд▓реЛрдб рдЕрддреНрдпрдВрдд рдЕрдиреБрдордд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕реНрдХреЗрд▓рд░ рдХрд╛ рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рд╣рдорд╛рд░реЗ рдХрдардкреБрддрд▓реА рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП RPM рдкреИрдХреЗрдЬ рд╣рдорд╛рд░реЗ рднрдВрдбрд╛рд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рд╕рднреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ, рд╕рд╛рде рд╣реА рдИрд╢реНрд╡рд░ рдФрд░ рдпреВрдирд┐рдХреЙрд░реНрди рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕, рд╣рдорд╛рд░реЗ рдЧрд┐рдЯ рднрдВрдбрд╛рд░ рдореЗрдВ рд╣реИрдВред
рджреВрд╕рд░рд╛ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓:
- рдЖрдзрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рд░рдЦреЛ;
- рдХрдардкреБрддрд▓реА-рд╕рд░реНрд╡рд░, рдпреВрдирд┐рдХреЙрд░реНрди, рднрдЧрд╡рд╛рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ;
- рдХреНрд▓реЛрди рдЧреИрдЯ рднрдВрдбрд╛рд░;
- рдорд╢реАрди рдХреЛ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рд╣рдорд╛рд░реА "рдЯреНрдпреВрдирд┐рдВрдЧ" рд╡рд╣рд╛рдБ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреА рд╣реИред
Storeconfigs: рдХреНрдпрд╛ рдФрд░ рдХреНрдпреЛрдВ?

рдпрджрд┐ рдХреЛрдИ рдЧреНрд░рд╛рд╣рдХ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рддрдереНрдп рднреЗрдЬрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдпрд╣ рд╣рдореЗрдВ Storeconfigs - рдХрдардкреБрддрд▓реА-рд╕рд░реНрд╡рд░ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдЬреЛ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЧреНрд░рд╛рд╣рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдирд╡реАрдирддрдо рдбреЗрдЯрд╛ рдХреА рддреБрд▓рдирд╛ рдореМрдЬреВрджрд╛ рдбреЗрдЯрд╛ рд╕реЗ рдХрд░рддрд╛ рд╣реИред Storeconfigs рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ: SQLite, MySQL, PostgreSQLред рд╣рдо MySQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдИ рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рддреНрдпреЗрдХ рддреАрди рдорд┐рдирдЯ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЙрдард╛рддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ рдЙрд╕реА рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ MySQL рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдбрд╝реА рдХрддрд╛рд░реЗрдВ рдорд┐рд▓ рдЬрд╛рддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдирд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛:

Apache ActiveMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕рдВрджреЗрд╢ рд╕реАрдзреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕:
- рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХрдардкреБрддрд▓реА-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рддреЗрдЬреА рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЖрдк рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддреБрд░рдВрдд "рдУрдХреЗ" рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдХрддрд╛рд░ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдбрд╛рд▓рдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ);
- MySQL рдкрд░ рд▓реЛрдб рдХреЛ рдХрдо рдХрд░рдирд╛ (рдХрдардкреБрддрд▓реА рдХрддрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рд▓рд┐рдЦрддреА рд╣реИ)ред
рдХрдардкреБрддрд▓реА-рд╕рд░реНрд╡рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдиреНрдпрд╛рд╕ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛:
[main] async_storeconfigs = true queue_type = stomp queue_source = stomp://ACTIVEMQ_address:61613 dbadapter = mysql dbuser = secretuser dbpassword = secretpassword dbserver = mysql-server
рдФрд░ рдХрдардкреБрддрд▓реА рдХрддрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред
рд╡рд░реНрдгрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХрдардкреБрддрд▓реА рд╕реНрдорд╛рд░реНрдЯ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдкрдкреЗрдЯ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рдЕрдорд╛рдирдХ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ
рд╣рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
- http;
- tagmai;
- рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ
- rrdgraph;
- рджреБрдХрд╛рдиред
рдХрд╛рд╢, рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╣рдореЗрдВ рдПрдХ рд╣реА рдХрд╛рд░рдг рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ - рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рджреГрд╢реНрдп рдШрдЯрдХ рдХреА рдХрдореАред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╛ рд╢рд╛рдпрдж рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЙрд╕ рд╕рдордп рдорд╛рдирдХ рдХрдардкреБрддрд▓реА рдбреИрд╢рдмреЛрд░реНрдб рд╣рдореЗрдВ рдмрд╣реБрдд рдЙрдмрд╛рдК рд▓рдЧ рд░рд╣рд╛ рдерд╛ред
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ
рдлреЛрд░рдореИрди рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛, рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреЗ рдЖрд░реЗрдЦреЛрдВ рд╕реЗ рдкреНрд░рд╕рдиреНрди рдХрд┐рдпрд╛ред


рдмрд╛рдИрдВ рдУрд░ рдХреА рддрд╕реНрд╡реАрд░ рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред 360 рдбрд┐рдЧреНрд░реА рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреВрд░реНрдг рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рджрд╛рдИрдВ рдУрд░ рдХреА рддрд╕реНрд╡реАрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдШрдЯрдирд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреА рд╣реИред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХреА рдЧрдИ рдереА, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг 10 рд╕реЗ рдЕрдзрд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЙрдирдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрджрд░реНрдн рдПрдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред
рдФрд░ рдЕрдВрддрд┐рдо рд╕рд┐рдлрд╛рд░рд┐рд╢: рд╕рдВрд╕реНрдХрд░рдг 3.0.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ

рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж рдЧреНрд░рд╛рдл рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдордп рдХрд╛ рд▓рд╛рдн рджрд┐рдЦрд╛рддрд╛ рд╣реИред рд╕рд╣реА рд╣реИ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ 50% рдХреА рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реГрджреНрдзрд┐ рдХрд╛рдлреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдереАред рдШреЛрд╖рдгрд╛ рдкрддреНрд░ (
рд╕рдВрджреЗрд╢ рджреЗрдЦреЗрдВ) рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рдЕрднреА рднреА рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ 50% рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднреБрдЧрддрд╛рди рдХрд┐рдпрд╛ред
рдЕрдВрдд рдореЗрдВ, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдЪрд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде, рдХрдардкреБрддрд▓реА рдЧрдВрднреАрд░ рднрд╛рд░ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ 2000 рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдмрдВрдзрди рдЗрд╕рдХреА рдкрд╣реБрдВрдЪ рдХреЗ рднреАрддрд░ рдХрд╛рдлреА рд╣реИред
рдПрдВрдЯреЛрди [ рдмрдиреВрдХреНрдХрд╛ ] рддреБрд░реНрдХреА, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ
badoo