рднрд╛рд░ рдХреЗ рддрд╣рдд рдХрдардкреБрддрд▓реА

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

рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╣реИрдмреЗ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ: рдпрд╣рд╛рдВ , рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ ред рд╣рдордиреЗ рдкреНрдпреВрдкреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЗрдЦ рдореЗрдВ рдХрдИ "рд╡реНрдпрдВрдЬрдиреЛрдВ" рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╛рд░реА рднрд╛рд░ рдХреЗ рддрд╣рдд рд╣реИрдВ - рдЬреЛ рдХрд┐ "рд╢рд░реНрдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ" рдореЗрдВ рд╣реИрдВред

рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреА:



рддреБрд░рдВрдд рдЖрд░рдХреНрд╖рдг рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рд╣рд╛рдИрд▓рд╛рдб ++ 2012 рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдПрдВрдЯреЛрди рдЯреНрдпреВрд░реЗрддреНрд╕реНрдХреА рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдорджреНрджреЗрдирдЬрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдХреБрдЫ рджрд┐рдиреЛрдВ рдореЗрдВ, рд╣рдорд╛рд░реЗ "рд╡реНрдпрдВрдЬрдиреЛрдВ" рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╡рд░рдг рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдЦрд╛рдбрд╝ рдлреЗрдВрдХрд╛ рдЧрдпрд╛ред

рднрд╛рд░ рдореЗрдВ рд▓реМрдЯрддреЗ рд╣реБрдП, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ Badoo рдореЗрдВ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдЪреНрдЪ рд╣реИрдВ:


рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ





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

рдЪрд░рдг 1: рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рдмрджрд▓реЗ рдореЗрдВ рддрдереНрдп




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

рдЪрд░рдг 2: рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛




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

рдЪрд░рдг 3: рдХреИрдЯрд▓реЙрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛




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

рдЪрд░рдг 4: рд░рд┐рдкреЛрд░реНрдЯ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛




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

рдЖрдзрд╛рд░ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдирд┐рдореНрди рдЪрд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:



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



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



рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рдорди рдореЗрдВ рдЖрддреА рд╣реИ рд╡рд╣ рд╣реИ рд╕рд░реНрд╡рд░ рдкрд░ рдХрдардкреБрддрд▓реА рдорд╛рд╕реНрдЯрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛рдирд╛ред рд╣рд╛рдВ, рдареАрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдХрдардкреБрддрд▓реА рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореВрд▓ рдкреИрдХреЗрдЬ рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЧреБрдард▓реА рдХреЛ "рдзрдмреНрдмрд╛" рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ? рдмреЗрд╢рдХ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╡реЗ рд╣рдорд╛рд░реА рд╢рд░реНрддреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдереЗред

рдЕрдкрд╛рдЪреЗ + mod_passenger рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рд╣рдорд╛рд░реА рдХрдВрдкрдиреА Apache рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

Nginx + рдпрд╛рддреНрд░реА рдХреНрдпреЛрдВ рдирд╣реАрдВ? рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ nginx рдЕрд╕реЗрдВрдмрд▓реА рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЙрдбреНрдпреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдПред

рдлрд┐рд░ рдХреНрдпрд╛?

рдЧреЗрдВрдбрд╛ рд╕реЗ рдорд┐рд▓реЗрдВ





рдпреВрдирд┐рдХреЙрд░реНрди рдХреНрдпреЛрдВ?

рдпрд╣рд╛рдБ, рд╣рдорд╛рд░реА рд░рд╛рдп рдореЗрдВ, рдЗрд╕рдХреЗ рдлрд╛рдпрджреЗ:

рдпреВрдирд┐рдХреЙрд░реНрди рдЪреБрдирдиреЗ рдХрд╛ рдПрдХ рдФрд░ рдХрд╛рд░рдг рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЖрд╕рд╛рдиреА рдереАред

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 рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗ рд░рд╣рд╛ рд╣реИред



  1. рдЕрдкрд╕реНрдЯреНрд░реАрдо рдмрдирд╛рдПрдВ:

     upstream puppetmaster_unicorn { server 127.0.0.1:3000 fail_timeout=0; server server2:3000 fail_timeout=0; } #    puppet master ( , production-) upstream puppetca { server 127.0.0.1:3000 fail_timeout=0; } #  Puppet CA 

  2. рд╣рдо рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

    • рдХрдардкреБрддрд▓реА рд╕реАрдП

       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; } 



рдЕрдВрддрд░рд┐рдо рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ред рдЗрд╕рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣рдореЗрдВ рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ:
  1. рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдЪрд▓рд╛рдПрдВ;
  2. рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг рдХрд╛ рдкреНрд░рдмрдВрдзрди;
  3. рд▓реЛрдб рдХреЛ рд╕рдВрддреБрд▓рд┐рдд рдХрд░реЗрдВред

рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

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

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рджреВрд╕рд░рд╛ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреЗрд╡рд▓:
  1. рдЖрдзрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рд░рдЦреЛ;
  2. рдХрдардкреБрддрд▓реА-рд╕рд░реНрд╡рд░, рдпреВрдирд┐рдХреЙрд░реНрди, рднрдЧрд╡рд╛рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ;
  3. рдХреНрд▓реЛрди рдЧреИрдЯ рднрдВрдбрд╛рд░;
  4. рдорд╢реАрди рдХреЛ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

рд╣рдорд╛рд░реА "рдЯреНрдпреВрдирд┐рдВрдЧ" рд╡рд╣рд╛рдБ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреА рд╣реИред

Storeconfigs: рдХреНрдпрд╛ рдФрд░ рдХреНрдпреЛрдВ?





рдпрджрд┐ рдХреЛрдИ рдЧреНрд░рд╛рд╣рдХ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдФрд░ рддрдереНрдп рднреЗрдЬрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

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

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХрдИ рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рддреНрдпреЗрдХ рддреАрди рдорд┐рдирдЯ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЙрдард╛рддреЗ рд╣реИрдВ, рд▓рдЧрднрдЧ рдЙрд╕реА рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ MySQL рдкрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдбрд╝реА рдХрддрд╛рд░реЗрдВ рдорд┐рд▓ рдЬрд╛рддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рднреА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЗрдирд╛ рд╣реИред

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛:



Apache ActiveMQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕рдВрджреЗрд╢ рд╕реАрдзреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рд╕рдВрджреЗрд╢ рдХрддрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдорд╛рд░реЗ рдкрд╛рд╕:

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

 [main] async_storeconfigs = true queue_type = stomp queue_source = stomp://ACTIVEMQ_address:61613 dbadapter = mysql dbuser = secretuser dbpassword = secretpassword dbserver = mysql-server 

рдФрд░ рдХрдардкреБрддрд▓реА рдХрддрд╛рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред

рд╡рд░реНрдгрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХрдардкреБрддрд▓реА рд╕реНрдорд╛рд░реНрдЯ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдкрдкреЗрдЯ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред

рдЕрдорд╛рдирдХ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ


рд╣рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХреНрдпрд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдХрд╛рд╢, рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╣рдореЗрдВ рдПрдХ рд╣реА рдХрд╛рд░рдг рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ - рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рджреГрд╢реНрдп рдШрдЯрдХ рдХреА рдХрдореАред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╛ рд╢рд╛рдпрдж рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЙрд╕ рд╕рдордп рдорд╛рдирдХ рдХрдардкреБрддрд▓реА рдбреИрд╢рдмреЛрд░реНрдб рд╣рдореЗрдВ рдмрд╣реБрдд рдЙрдмрд╛рдК рд▓рдЧ рд░рд╣рд╛ рдерд╛ред

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдлреЛрд░рдореИрди рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛, рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреЗ рдЖрд░реЗрдЦреЛрдВ рд╕реЗ рдкреНрд░рд╕рдиреНрди рдХрд┐рдпрд╛ред





рдмрд╛рдИрдВ рдУрд░ рдХреА рддрд╕реНрд╡реАрд░ рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред 360 рдбрд┐рдЧреНрд░реА рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреВрд░реНрдг рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдФрд░ рдЕрдВрддрд┐рдо рд╕рд┐рдлрд╛рд░рд┐рд╢: рд╕рдВрд╕реНрдХрд░рдг 3.0.0 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ



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

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдЪрд┐рдд рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд╕рд╛рде, рдХрдардкреБрддрд▓реА рдЧрдВрднреАрд░ рднрд╛рд░ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ 2000 рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдиреНрдпрд╛рд╕ рдкреНрд░рдмрдВрдзрди рдЗрд╕рдХреА рдкрд╣реБрдВрдЪ рдХреЗ рднреАрддрд░ рдХрд╛рдлреА рд╣реИред

рдПрдВрдЯреЛрди [ рдмрдиреВрдХреНрдХрд╛ ] рддреБрд░реНрдХреА, рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рдХ
badoo

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


All Articles