рдпрд╣ рдХрдорд╛рдВрдб рд╣реИрдкреНрд░реЛрдХреНрд╕реА-рд▓реБрдЖ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдорд╛рд░реЗ рдХрдИ рдореБрдлреНрдд рдСрдирд▓рд╛рдЗрди рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдЬреИрд╕реЗ рдХрд┐ рдЙрдмрдВрдЯреВ рдСрдирд▓рд╛рдЗрди, рдлреЗрдбреЛрд░рд╛ рдСрдирд▓рд╛рдЗрди, рд╡рд┐рдВрдбреЛрдЬ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдпрд╛ рдореИрдХ рдУрдПрд╕ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдирд╡рд░реНрдХреНрд╕ рдлреНрд░реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрдХреНрд░рдо:
рдирд╛рдо
рд╣реИрдкреНрд░реЛрдХреНрд╕реА-рд▓реБрдЖ - рд╣реИрдкреНрд░реЛрдХреНрд╕реА-рд▓реБрдЖ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг
рд╣реИрдкреНрд░реЛрдХреНрд╕реА LUA рдЪрд▓ рд░рд╣рд╛ рд╣реИ рд╕рдВрджрд░реНрднреЛрдВ
HAProxy рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд▓реБрдЖ рдХреЛрдб рдХреЛ 2 рдореБрдЦреНрдп рдореЛрдб рдореЗрдВ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рд╣реИ
рдкреНрд░рд╛рд░рдВрдн рдореЛрдб, рдФрд░ рджреВрд╕рд░рд╛ рд╣реИ рдХреНрд░рдо рдореЛрдб.
┬╖ рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рдореЛрдб, рд╣рдо DNS рд╕рдорд╛рдзрд╛рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рд╕реЙрдХреЗрдЯ I/O рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЗрд╕ рдЖрд░рдВрднреАрдХрд░рдг рдореЛрдб рдореЗрдВ, рд▓реВрдЖ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди HAProxy рдЕрднреА рднреА рдЕрд╡рд░реБрджреНрдз рд╣реИ
рдХрд╛рд░реНрдпрдХреНрд░рдо.
┬╖ рдореЗрдВ рдХреНрд░рдо рдореЛрдб, рд╣рдо DNS рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рд▓реЗрдХрд┐рди рд╣рдо рд╕реЙрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реБрдЖ рдХреЛрдб рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдмрд╣реБрд╕рдВрдХреЗрддрди рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд▓реБрдЖ рдХреЛрдб
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмреНрд▓реЙрдХрд┐рдВрдЧ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред
рд▓реБрдЖ рдХреЛрдб рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдореБрдЦреНрдп рдХреЛрдб рдФрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рд▓реБрдЖ рдореЗрдВ 6 рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рд╣реИрдВред
1. рд▓реБрдЖ рдлрд╝рд╛рдЗрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рд╕рдВрдЧ. рдЗрд╕реЗ рд▓реВрдЖ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓реЛрдб рдХреЗ рджреМрд░рд╛рди рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
HAProxy [рд╡реИрд╢реНрд╡рд┐рдХ] рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╛рдЧ рд▓реБрдЖ-рд▓реЛрдб. рдЗрд╕реЗ рдЖрд░рдВрднреАрдХрд░рдг рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рддрд░реАрдХрд╛ред рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ HAProxy рдореЗрдВ Lua рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
2. рд▓реБрдЖ init рдкреНрд░рд╕рдВрдЧ. рдпрд╣ HAProxy рдХреЗ рдареАрдХ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдПрдХ Lua рдлрд╝рдВрдХреНрд╢рди рд╣реИ
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд╛рд░реНрд╕рд┐рдВрдЧ. рдирд┐рд╖реНрдкрд╛рджрди рдЖрд░рдВрднреАрдХрд░рдг рдореЛрдб рдореЗрдВ рд╣реИ. рдЗрд╕ рд╕рдиреНрджрд░реНрдн рдореЗрдВ
HAProxy рд╡рд╛рддрд╛рд╡рд░рдг рдкрд╣рд▓реЗ рд╣реА рдкреНрд░рд╛рд░рдВрдн рд╣реЛ рдЪреБрдХрд╛ рд╣реИред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдпрд╛
рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ред рдпреЗ рдХрд╛рд░реНрдп рд╢рд░реАрд░ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпреЗ рдЧрдпреЗ рд╣реИрдВ
рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрджрд░реНрдн core.register_init(). рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдПрдХ рд╣реИ
рд░рд┐рдЯрд░реНрди рд╡реИрд▓реНрдпреВ рдХреЗ рдмрд┐рдирд╛ рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рд╕рд░рд▓ рдлрд╝рдВрдХреНрд╢рди, рдЗрд╕ рддрд░рд╣: рд╕рдорд╛рд░реЛрд╣ рдПрдлрд╕реАрдПрди().
3. рд▓реБрдЖ рдХрд╛рд░реНрдп рдкреНрд░рд╕рдВрдЧ. рдпрд╣ HAProxy рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдПрдХ Lua рдлрд╝рдВрдХреНрд╢рди рд╣реИ
рд╢реЗрдбреНрдпреВрд▓рд░, рдФрд░ рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдп рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж
рдХреЛрд░.рд░рдЬрд┐рд╕реНрдЯрд░_рдЯрд╛рд╕реНрдХ(). рдпрд╣ рд╕рдВрджрд░реНрдн рдпрд╛рддрд╛рдпрд╛рдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдорд╡рд░реНрддреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╣реИ
рд░рдирдЯрд╛рдЗрдо рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рддред рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрд┐рдирд╛ рдПрдХ рд╕рд░рд▓ рдлрд╝рдВрдХреНрд╢рди рд╣реИ
рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд┐рдирд╛, рдЗрд╕ рддрд░рд╣: рд╕рдорд╛рд░реЛрд╣ рдПрдлрд╕реАрдПрди().
4. рдХрд╛рд░реНрдп рдкреНрд░рд╕рдВрдЧ. рдпрд╣ рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдПрдХ рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рд╣реИред рдпреЗ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ
рд▓реБрдЖ рдирд┐рд░реНрджреЗрд╢реЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрдВрдЬреАрдХреГрдд "рдХреЛрд░.рд░рдЬрд┐рд╕реНрдЯрд░_рдПрдХреНрд╢рди()"ред рд▓реБрдЖ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк
рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрддрд╛ рд╣реИ
рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдХреНрд╖рд╛ TXNред рд╕рдорд╛рд░реЛрд╣ рдПрдлрд╕реАрдПрди(рдЯреАрдПрдХреНрд╕рдПрди).
5. рдирдореВрдирд╛-рд▓рд╛рдиреЗ рдкреНрд░рд╕рдВрдЧ. рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ TXN рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдВрдЯреНрд░реА рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ. рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рднреА рдмреНрд▓реЙрдХрд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ
рдХреБрдЫ рдореВрд▓ HAProxy рдирдореВрдирд╛-рд▓рд╛рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВред
рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ рд╕рдорд╛рд░реЛрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдлрд╕реАрдПрди(рдЯреАрдПрдХреНрд╕рдПрди). рдпреЗ рдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд core.register_fetches(). рдкреНрд░рддреНрдпреЗрдХ рдШреЛрд╖рд┐рдд рдирдореВрдирд╛-рд▓рд╛рдиреЗ рдпреЛрдЧреНрдп рд╣реИ
рд╕реНрдЯреНрд░рд┐рдВрдЧ "рд▓реБрдЖ" рджреНрд╡рд╛рд░рд╛ рдЙрдкрд╕рд░реНрдЧред
рдзреНрдпрд╛рди рджреЗрдВ: рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореВрд▓ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛
HAProxy рдирдореВрдирд╛-рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд▓реМрдЯрд╛ рд╕рдХрддрд╛ред рдпрд╣ рдорд╛рдорд▓рд╛ рдЕрднреА рддрдХ рдирд╣реАрдВ рд╣реИ
рд╕рдорд░реНрдерд┐рдд
6. рдкрд░рд┐рд╡рд░реНрддрдХ рдкреНрд░рд╕рдВрдЧ. рдпрд╣ рдПрдХ рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддрд╛ рд╣реИ
рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрди рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА
рдХреЛрдИ рднреА рдкреНрд░рд╕рдВрдЧ. рд╡реЗ рдХреЛрдИ рдЕрд╡рд░реЛрдзрдХ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ. рдХреЙрд▓ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ рд╕рдорд╛рд░реЛрд╣
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдлрд╕реАрдПрди(рд╕реНрдЯреНрд░рд┐рдВрдЧ). рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
core.register_converters(). рдкреНрд░рддреНрдпреЗрдХ рдШреЛрд╖рд┐рдд рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рдЖрдЧреЗ "lua" рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓рдЧреА рд╣реЛрддреА рд╣реИред
рд╣реИрдкреНрд░реЛрдХреНрд╕реА LUA рдирдорд╕реНрддреЗ рд╡рд┐рд╢реНрд╡
HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ (hello_world.conf):
рд╡реИрд╢реНрд╡рд┐рдХ
рд▓реБрдЖ-рд▓реЛрдб hello_world.lua
рдкреНрд░реЙрдХреНрд╕реА рд╕реБрдиреЛ
рдмрд╛рдЗрдВрдб 127.0.0.1:10001
рдЯреАрд╕реАрдкреА-рдЕрдиреБрд░реЛрдз рдирд┐рд░реАрдХреНрд╖рдг-рд╡рд┐рд▓рдВрдм 1рдПрд╕
рдЯреАрд╕реАрдкреА-рдЕрдиреБрд░реЛрдз рд╕рд╛рдордЧреНрд░реА рдЙрдкрдпреЛрдЧ-рд╕реЗрд╡рд╛ lua.hello_world
HAProxy рд▓реБрдЖ рдлрд╝рд╛рдЗрд▓ (рд╣реИрд▓реЛ_рд╡рд░реНрд▓реНрдб.рд▓реБрдЖ):
core.register_service("hello_world", "tcp", рдлрд╝рдВрдХреНрд╢рди(рдПрдкреНрд▓реЗрдЯ)
рдПрдкреНрд▓реЗрдЯ:рднреЗрдЬреЗрдВ("рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб\n")
рд╕рдорд╛рдкреНрдд)
рдЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП HAProxy рдХреИрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ:
./haproxy -f hello_world.conf
рдЕрдиреНрдп рдЯрд░реНрдорд┐рдирд▓ рдкрд░, рдЖрдк рдЯреЗрд▓рдиреЗрдЯ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
#:~ рдЯреЗрд▓рдиреЗрдЯ 127.0.0.1 10001
рд╣реИрд▓реЛ рджреБрдирд┐рдпрд╛
рдХрдХреНрд╖рд╛ рдореБрдЦреНрдп()
"рдХреЛрд░" рд╡рд░реНрдЧ рдореЗрдВ рд╕рднреА HAProxy рдХреЛрд░ рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпреЗ рдлрд╝рдВрдХреНрд╢рди рдЙрдкрдпреЛрдЧреА рд╣реИрдВ
рдирд┐рд╖реНрдкрд╛рджрди рдкреНрд░рд╡рд╛рд╣ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ, рд╣реБрдХ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ, рд╡реИрд╢реНрд╡рд┐рдХ рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдпрд╛ рдПрд╕реАрдПрд▓,...
"рдХреЛрд░" рд╡рд░реНрдЧ рдореВрд▓ рд░реВрдк рд╕реЗ HAProxy рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирд╣реАрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рд▓рд╛рдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ.
"рдХреЛрд░" рд╡рд░реНрдЧ рд╕реНрдерд┐рд░ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдХреЛрдИ рдирдИ рд╡рд╕реНрддреБ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
core.emerg
рд░рд┐рдЯрд░реНрди
рдкреВрд░реНрдгрд╛рдВрдХ
рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдЗрд╕рдореЗрдВ рд▓реЙрдЧрд▓реЗрд╡рд▓ "рдЖрдкрд╛рддрдХрд╛рд▓реАрди" рдХрд╛ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИ
(0).
рдХреЛрд░.рдЪреЗрддрд╛рд╡рдиреА
рд░рд┐рдЯрд░реНрди
рдкреВрд░реНрдгрд╛рдВрдХ
рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдЗрд╕рдореЗрдВ рд▓реЙрдЧрд▓реЗрд╡рд▓ "рдЕрд▓рд░реНрдЯ" (1) рдХрд╛ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИред
рдХреЛрд░.рдХреНрд░рд┐рдЯ
рд░рд┐рдЯрд░реНрди
рдкреВрд░реНрдгрд╛рдВрдХ
рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдЗрд╕рдореЗрдВ рд▓реЙрдЧрд▓реЗрд╡рд▓ "рдорд╣рддреНрд╡рдкреВрд░реНрдг" (2) рдХрд╛ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИред
рдХреЛрд░.рддреНрд░реБрдЯрд┐
рд░рд┐рдЯрд░реНрди
рдкреВрд░реНрдгрд╛рдВрдХ
рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдЗрд╕рдореЗрдВ рд▓реЙрдЧрд▓реЗрд╡рд▓ "рддреНрд░реБрдЯрд┐" (3) рдХрд╛ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИред
рдХреЛрд░.рдЪреЗрддрд╛рд╡рдиреА
рд░рд┐рдЯрд░реНрди
рдкреВрд░реНрдгрд╛рдВрдХ
рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдЗрд╕рдореЗрдВ рд▓реЙрдЧрд▓реЗрд╡рд▓ "рдЪреЗрддрд╛рд╡рдиреА" (4) рдХрд╛ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИред
рдХреЛрд░.рд╕реВрдЪрдирд╛
рд░рд┐рдЯрд░реНрди
рдкреВрд░реНрдгрд╛рдВрдХ
рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдЗрд╕рдореЗрдВ рд▓реЙрдЧрд▓реЗрд╡рд▓ "рдиреЛрдЯрд┐рд╕" (5) рдХрд╛ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИред
core.info
рд░рд┐рдЯрд░реНрди
рдкреВрд░реНрдгрд╛рдВрдХ
рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдЗрд╕рдореЗрдВ рд▓реЙрдЧрд▓реЗрд╡рд▓ "рдЬрд╛рдирдХрд╛рд░реА" (6) рдХрд╛ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИред
рдХреЛрд░.рдбреАрдмрдЧ
рд░рд┐рдЯрд░реНрди
рдкреВрд░реНрдгрд╛рдВрдХ
рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдЗрд╕рдореЗрдВ рд▓реЙрдЧрд▓реЗрд╡рд▓ "рдбреАрдмрдЧ" (7) рдХрд╛ рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИред
рдХреЛрд░.рд▓реЙрдЧ(рд▓реЙрдЧрд▓реЗрд╡рд▓, рд╕рдВрджреЗрд╢)
рдкреНрд░рд╕рдВрдЧ: рдмреЙрдбреА, рдЗрдирд┐рдЯ, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛, рдирдореВрдирд╛-рдкреНрд░рд╛рдкреНрддрд┐, рдХрдирд╡рд░реНрдЯрд░
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд▓реЙрдЧ рднреЗрдЬрддрд╛ рд╣реИ. рд▓реЙрдЧ HAProxy рдХреЗ рдЕрдиреБрд╕рд╛рд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓, рдбрд┐рдлрд╝реЙрд▓реНрдЯ syslog рд╕рд░реНрд╡рд░ рдкрд░ рдпрджрд┐ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд░
рдпрджрд┐ рдЕрдиреБрдорддрд┐ рд╣реЛ рддреЛ stderr.
рддрд░реНрдХ
┬╖ рд▓реЙрдЧ рд╕реНрддрд░ (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдХреНрдпрд╛ рд▓реЙрдЧ рд╕реНрддрд░ рд╕рдВрджреЗрд╢ рд╕реЗ рд╕рдВрдмрджреНрдз рд╣реИред рдпрд╣ рд╣реИ рдПрдХ
0 рдФрд░ 7 рдХреЗ рдмреАрдЪ рдХреА рд╕рдВрдЦреНрдпрд╛.
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд▓реЙрдЧ рд╕рд╛рдордЧреНрд░реА.
рджреЗрдЦ core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (рд▓реЙрдЧ рд╕реНрддрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ)
рджреЗрдЦ рдХреЛрдб.рдбреАрдмрдЧ
рджреЗрдЦ рдХреЛрд░.рдЬрд╛рдирдХрд╛рд░реА
рджреЗрдЦ рдХреЛрд░.рдЪреЗрддрд╛рд╡рдиреА
рджреЗрдЦ рдХреЛрд░.рдЪреЗрддрд╛рд╡рдиреА
рдХреЛрд░.рдбреАрдмрдЧ(рд╕рдВрджреЗрд╢)
рдкреНрд░рд╕рдВрдЧ: рдмреЙрдбреА, рдЗрдирд┐рдЯ, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛, рдирдореВрдирд╛-рдкреНрд░рд╛рдкреНрддрд┐, рдХрдирд╡рд░реНрдЯрд░
рддрд░реНрдХ
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд▓реЙрдЧ рд╕рд╛рдордЧреНрд░реА.
рджреЗрдЦ рд▓реЙрдЧ рдЗрди
рд╕реЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:
рд╕рдорд╛рд░реЛрд╣ рдбреАрдмрдЧ рдХрд░реЗрдВ(рд╕рдВрджреЗрд╢)
рдХреЛрд░.рд▓реЙрдЧ (рдХреЛрд░.рдбреАрдмрдЧ, рд╕рдВрджреЗрд╢)
рд╕рдорд╛рдкреНрдд
рдХреЛрд░.рдЬрд╛рдирдХрд╛рд░реА(рд╕рдВрджреЗрд╢)
рдкреНрд░рд╕рдВрдЧ: рдмреЙрдбреА, рдЗрдирд┐рдЯ, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛, рдирдореВрдирд╛-рдкреНрд░рд╛рдкреНрддрд┐, рдХрдирд╡рд░реНрдЯрд░
рддрд░реНрдХ
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд▓реЙрдЧ рд╕рд╛рдордЧреНрд░реА.
рджреЗрдЦ рд▓реЙрдЧ рдЗрди
рд╕рдорд╛рд░реЛрд╣ рдЬрд╛рдирдХрд╛рд░реА(рд╕рдВрджреЗрд╢)
core.log (core.info, рд╕рдВрджреЗрд╢)
рд╕рдорд╛рдкреНрдд
рдХреЛрд░.рдЪреЗрддрд╛рд╡рдиреА(рд╕рдВрджреЗрд╢)
рдкреНрд░рд╕рдВрдЧ: рдмреЙрдбреА, рдЗрдирд┐рдЯ, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛, рдирдореВрдирд╛-рдкреНрд░рд╛рдкреНрддрд┐, рдХрдирд╡рд░реНрдЯрд░
рддрд░реНрдХ
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд▓реЙрдЧ рд╕рд╛рдордЧреНрд░реА.
рджреЗрдЦ рд▓реЙрдЧ рдЗрди
рд╕рдорд╛рд░реЛрд╣ рдЪреЗрддрд╛рд╡рдиреА(рд╕рдВрджреЗрд╢)
рдХреЛрд░.рд▓реЙрдЧ (рдХреЛрд░.рдЪреЗрддрд╛рд╡рдиреА, рд╕рдВрджреЗрд╢)
рд╕рдорд╛рдкреНрдд
рдХреЛрд░.рдЪреЗрддрд╛рд╡рдиреА(рд╕рдВрджреЗрд╢)
рдкреНрд░рд╕рдВрдЧ: рдмреЙрдбреА, рдЗрдирд┐рдЯ, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛, рдирдореВрдирд╛-рдкреНрд░рд╛рдкреНрддрд┐, рдХрдирд╡рд░реНрдЯрд░
рддрд░реНрдХ
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд▓реЙрдЧ рд╕рд╛рдордЧреНрд░реА.
рджреЗрдЦ рд▓реЙрдЧ рдЗрди
рд╕рдорд╛рд░реЛрд╣ рдЪреЗрддрд╛рд╡рдиреА(рд╕рдВрджреЗрд╢)
рдХреЛрд░.рд▓реЙрдЧ (рдХреЛрд░.рдЕрд▓рд░реНрдЯ, рд╕рдВрджреЗрд╢)
рд╕рдорд╛рдкреНрдд
core.add_acl(рдлрд╝рд╛рдЗрд▓рдирд╛рдо, рдХреБрдВрдЬреА)
рдкреНрд░рд╕рдВрдЧ: init, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛, рдирдореВрдирд╛-рд▓рд╛рдиреЗ, рдХрдирд╡рд░реНрдЯрд░
рдПрд╕реАрдПрд▓ рдЬреЛрдбрд╝реЗрдВ рдХреБрдВрдЬреА рдлрд╝рд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд ACLs рд╕реВрдЪреА рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо.
рддрд░реНрдХ
┬╖ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдЬреЛ ACL рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИред
┬╖ рдХреБрдВрдЬреА (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдХреБрдВрдЬреА рдЬреЛ рдЬреЛрдбрд╝реА рдЬрд╛рдПрдЧреАред
core.del_acl(рдлрд╝рд╛рдЗрд▓рдирд╛рдо, рдХреБрдВрдЬреА)
рдкреНрд░рд╕рдВрдЧ: init, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛, рдирдореВрдирд╛-рд▓рд╛рдиреЗ, рдХрдирд╡рд░реНрдЯрд░
рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд ACL рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╣рдЯрд╛рдПрдБ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдПрд╕реАрдПрд▓ рдХреА рд╕реВрдЪреА рдореЗрдВ
рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо.
рддрд░реНрдХ
┬╖ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдЬреЛ ACL рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рдВрджрд░реНрдн рджреЗрддрд╛ рд╣реИред
┬╖ рдХреБрдВрдЬреА (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╡рд╣ рдХреБрдВрдЬреА рдЬреЛ рд╣рдЯрд╛ рджреА рдЬрд╛рдПрдЧреА.
core.del_map(рдлрд╝рд╛рдЗрд▓рдирд╛рдо, рдХреБрдВрдЬреА)
рдкреНрд░рд╕рдВрдЧ: init, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛, рдирдореВрдирд╛-рд▓рд╛рдиреЗ, рдХрдирд╡рд░реНрдЯрд░
рд╕рдВрджрд░реНрднрд┐рдд рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдорд┐рдд рдорд╛рдирдЪрд┐рддреНрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
рдЙрд╕рдХреЗ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд╕реЗ.
рддрд░реНрдХ
┬╖ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдЬреЛ рдорд╛рдирдЪрд┐рддреНрд░ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред
┬╖ рдХреБрдВрдЬреА (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╡рд╣ рдХреБрдВрдЬреА рдЬреЛ рд╣рдЯрд╛ рджреА рдЬрд╛рдПрдЧреА.
core.msleep(рдорд┐рд▓реАрд╕реЗрдХрдВрдб)
рдкреНрд░рд╕рдВрдЧ: рдмреЙрдбреА, рдЗрдирд┐рдЯ, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛
RSI рдХреЛрд░.рдПрдордПрд╕рд▓реАрдк() рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЗ рдмреАрдЪ рд▓реБрдЖ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рдорд┐рд▓реАрд╕реЗрдХреЗрдВрдб (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдЖрд╡рд╢реНрдпрдХ рдорд┐рд▓реАрд╕реЗрдХрдВрдб.
core.register_action(рдирд╛рдо, рдХрд╛рд░реНрд░рд╡рд╛рдИ, func)
рдкреНрд░рд╕рдВрдЧ: рддрди
рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред рд╕рднреА рдкрдВрдЬреАрдХреГрдд рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
HAProxy рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ "lua" рдХреЗ рд╕рд╛рдеред рдХрд┐рд╕реА рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ TXN рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕ рдорд┐рд▓рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдирд╛рдо рд╣реИ.
┬╖ рдХрд╛рд░реНрд░рд╡рд╛рдИ (рддрд╛рд▓рд┐рдХрд╛) - рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬреЛ HAProxy рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ
рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ. рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдВ рд╣реИрдВ 'tcp-req', 'tcp-res',
'http-req' рдпрд╛ 'http-res'ред
┬╖ рд╕рдорд╛рд░реЛрд╣ (рд╕рдорд╛рд░реЛрд╣) -- рд▓реВрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ:
рдлрд╝рдВрдХреНрд╢рди(txn)
┬╖
TXN (TXN рдХрдХреНрд╖рд╛): рдЗрд╕рдХрд╛ is a TXN рд╡рд╕реНрддреБ рдкреНрд░рдпреБрдХреНрдд рдПрд╕рдЯреА рдЫреЗрдбрд╝рдЦрд╛рдиреА la
рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рдпрд╛ рдЯреАрд╕реАрдкреА рд╕реНрдЯреНрд░реАрдоред
рдпрд╣рд╛рдВ, рдХрд╛рд░реНрд░рд╡рд╛рдИ рдкрдВрдЬреАрдХрд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдмрд╕ рдПрдХ 'рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб' рднреЗрдЬреЗрдВ
рд▓реЙрдЧред
core.register_action("рд╣реИрд▓реЛ-рд╡рд░реНрд▓реНрдб", { "tcp-req", "http-req" }, рдлрд╝рдВрдХреНрд╢рди(txn)
txn: рдЬрд╛рдирдХрд╛рд░реА ("рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб")
рд╕рдорд╛рдкреНрдд)
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ HAproxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдлреНрд░рдВрдЯрдПрдВрдб tcp_frt
рдореЛрдб рдЯреАрд╕реАрдкреА
рдЯреАрд╕реАрдкреА-рдЕрдиреБрд░реЛрдз рд╕рд╛рдордЧреНрд░реА lua.hello-world
рдлреНрд░рдВрдЯрдПрдВрдб http_frt
рдореЛрдб http
http-рдЕрдиреБрд░реЛрдз lua.hello-world
core.register_converters(рдирд╛рдо, func)
рдкреНрд░рд╕рдВрдЧ: рддрди
рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред рд╕рднреА рдкрдВрдЬреАрдХреГрдд рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
HAProxy рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ "lua" рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдХрдирд╡рд░реНрдЯрд░ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд┐рд▓рддреА рд╣реИ рдФрд░
рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдБред рдкрдВрдЬреАрдХреГрдд рдлрд╝рдВрдХреНрд╢рди рдЕрдзрд┐рдХрддрдо 9 рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ
рдкреИрд░рд╛рдореАрдЯрд░. рд╕рднреА рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрдВ.
рддрд░реНрдХ
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдирд╛рдо рд╣реИ.
┬╖ рд╕рдорд╛рд░реЛрд╣ (рд╕рдорд╛рд░реЛрд╣) -- рд▓реВрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ:
рдлрд╝рдВрдХреНрд╢рди (str, [p1 [, p2 [, ... [, p5]]]])
┬╖ str (рд╕реНрдЯреНрд░рд┐рдВрдЧ): рдпрд╣ рдЗрдирдкреБрдЯ рдорд╛рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
┬╖ p1 .. p5 (рд╕реНрдЯреНрд░рд┐рдВрдЧ): рдпрд╣ рд╣рд╛рд░реЙрдХреНрд╕реА рдореЗрдВ рдШреЛрд╖рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ
рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ред рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 5 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ. рдЖрджреЗрд╢ рдФрд░
рдЗрдирдХреА рдкреНрд░рдХреГрддрд┐ рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреА рдЬрд╛рддреА рд╣реИред
core.register_fetches(рдирд╛рдо, func)
рдкреНрд░рд╕рдВрдЧ: рддрди
рдирдореВрдирд╛ рд▓рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред рд╕рднреА рдкрдВрдЬреАрдХреГрдд рдирдореВрдиреЗ рд▓рд╛рдП рдЬрд╛рдПрдВрдЧреЗ
HAProxy рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ "lua" рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд▓реБрдЖ рдирдореВрдирд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ. рдкрдВрдЬреАрдХреГрдд рдлрд╝рдВрдХреНрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ 9 рдорд╛рди рддрдХ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рд╕рднреА
рдорд╛рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИрдВред
рддрд░реНрдХ
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдирд╛рдо рд╣реИ.
┬╖ рд╕рдорд╛рд░реЛрд╣ (рд╕рдорд╛рд░реЛрд╣) -- рд▓реВрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдирдореВрдирд╛ рд▓рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ:
рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди (рдЯреАрдПрдХреНрд╕рдПрди, [рдкреА1 [, рдкреА2 [, тАЛтАЛ... [, рдкреА5]]]])
┬╖ TXN (TXN рдХрдХреНрд╖рд╛): рдпрд╣ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рд╕реЗ рд╕рдВрдмрджреНрдз txn рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред
┬╖ p1 .. p5 (рд╕реНрдЯреНрд░рд┐рдВрдЧ): рдпрд╣ рд╣рд╛рд░реЙрдХреНрд╕реА рдореЗрдВ рдШреЛрд╖рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрд░реНрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ
рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ред рддрд░реНрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 5 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ. рдЖрджреЗрд╢ рдФрд░
рдЗрдирдХреА рдкреНрд░рдХреГрддрд┐ рдкрд░рдВрдкрд░рд╛рдЧрдд рд░реВрдк рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреА рдЬрд╛рддреА рд╣реИред
┬╖ рд░рд┐рдЯрд░реНрди: рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛ рд╣реИ, рдпрджрд┐ рдорд╛рди рдЕрднреА рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддреЛ рд╢реВрдиреНрдпред
рд▓реБрдЖ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб:
core.register_fetches("рд╣реИрд▓реЛ", рдлрд╝рдВрдХреНрд╢рди(txn)
рд╡рд╛рдкрд╕реА "рд╣реИрд▓реЛ"
рд╕рдорд╛рдкреНрдд)
HAProxy рдЙрджрд╛рд╣рд░рдг рд╡рд┐рдиреНрдпрд╛рд╕:
рдЕрдЧреНрд░рднрд╛рдЧ рдЙрджрд╛рд╣рд░рдг
http-рдЕрдиреБрд░реЛрдз рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рди рд╕реНрдерд╛рди /%[lua.hello]
core.register_service(рдирд╛рдо, рдореЛрдб, func)
рдкреНрд░рд╕рдВрдЧ: рддрди
рдПрдХ рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред рд╕рднреА рдкрдВрдЬреАрдХреГрдд рд╕реЗрд╡рд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ
HAProxy рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ "lua" рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕реЗрд╡рд╛ рдХреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕ рдорд┐рд▓рддрд╛ рд╣реИ
рдЖрд╡рд╢реНрдпрдХ рдореЛрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░.
рддрд░реНрдХ
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдХрдирд╡рд░реНрдЯрд░ рдХрд╛ рдирд╛рдо рд╣реИ.
┬╖ рдореЛрдб (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрд╡рд╢реНрдпрдХ рдореЛрдб рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИред рдХреЗрд╡рд▓ 'рдЯреАрд╕реАрдкреА' рдпрд╛
'http' рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ.
┬╖ рд╕рдорд╛рд░реЛрд╣ (рд╕рдорд╛рд░реЛрд╣) -- рд▓реВрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдирд╡рд░реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ:
рдлрд╝рдВрдХреНрд╢рди(рдПрдкреНрд▓реЗрдЯ)
┬╖ рдПрдкреНрд▓реЗрдЯ рдПрдкреНрд▓реЗрдЯ рд╣реЛрдЧрд╛ рдПрдХ AppletTCP рдХрдХреНрд╖рд╛ рдпрд╛ рдПрдХ AppletHTTP рдХрдХреНрд╖рд╛. рдпрд╣ рдкреНрд░рдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ
рдкрдВрдЬреАрдХреГрдд рдПрдкреНрд▓реЗрдЯ рдХрд╛. рдХреЗ рд▓рд┐рдП 'http' рдорд╛рди рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рдПрдХ рдПрдкреНрд▓реЗрдЯ рдореЛрдб
рдкреИрд░рд╛рдореАрдЯрд░ рдорд┐рд▓реЗрдЧрд╛ a AppletHTTP рдХрдХреНрд╖рд╛ред рдЕрдЧрд░ рдореЛрдб рдорд╛рди 'рдЯреАрд╕реАрдкреА' рд╣реИ, рдПрдкреНрд▓реЗрдЯ рд╣реЛрдЧрд╛
рдПрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ AppletTCP рдХрдХреНрд╖рд╛.
рдЪреЗрддрд╛рд╡рдиреА: 'http' рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдкреНрд▓реЗрдЯреНрд╕ рдХреЛ 'tcp-' рд╕реЗ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛' рдирд┐рдпрдо рд╕реЗрдЯ рдХреЗрд╡рд▓ la 'рдПрдЪрдЯреАрдЯреАрдкреА-'
рдирд┐рдпрдо-рд╕реЗрдЯ рдЕрдзрд┐рдХреГрдд рд╣реИрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ HTTP рдПрдкреНрд▓реЗрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ
рдЯреАрд╕реАрдкреА рдореЛрдб рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реАред 'tcp' рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдкреНрд▓реЗрдЯ рдХрд╣реАрдВ рд╕реЗ рднреА рдХреЙрд▓ рдХрд┐рдпреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ, рд╕реЗрд╡рд╛ рдкрдВрдЬреАрдХрд░рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реЗрд╡рд╛ рдХреЗрд╡рд▓ 'рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб' рднреЗрдЬрддреА рд╣реИ
http рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛.
core.register_service("рд╣реИрд▓реЛ-рд╡рд░реНрд▓реНрдб", "http", рдлрд╝рдВрдХреНрд╢рди(рдПрдкреНрд▓реЗрдЯ)
рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!"
рдПрдкреНрд▓реЗрдЯ:set_status(200)
рдПрдкреНрд▓реЗрдЯ: add_header ("рд╕рд╛рдордЧреНрд░реА-рд▓рдВрдмрд╛рдИ", рд╕реНрдЯреНрд░рд┐рдВрдЧ.рд▓реЗрди (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛))
рдПрдкреНрд▓реЗрдЯ: add_header ("рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░", "рдкрд╛рда/рд╕рд╛рджрд╛")
рдПрдкреНрд▓реЗрдЯ:start_response()
рдПрдкреНрд▓реЗрдЯ:рднреЗрдЬреЗрдВ(рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛)
рд╕рдорд╛рдкреНрдд)
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ HAproxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдЕрдЧреНрд░рднрд╛рдЧ рдЙрджрд╛рд╣рд░рдг
http-рдЕрдиреБрд░реЛрдз рдЙрдкрдпреЛрдЧ-рд╕реЗрд╡рд╛ lua.hello-world
core.register_init(func)
рдкреНрд░рд╕рдВрдЧ: рддрди
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ
рдХрд┐рд╕реА рднреА рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ.
рддрд░реНрдХ
┬╖ рд╕рдорд╛рд░реЛрд╣ (рд╕рдорд╛рд░реЛрд╣) -- рд▓реВрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ:
рд╕рдорд╛рд░реЛрд╣()
рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЗрдирдкреБрдЯ рдирд╣реАрдВ рд▓рдЧрддрд╛, рдФрд░ рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдЕрдкреЗрдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред
core.register_task (func)
рдкреНрд░рд╕рдВрдЧ: рдмреЙрдбреА, рдЗрдирд┐рдЯ, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛, рдирдореВрдирд╛-рдкреНрд░рд╛рдкреНрддрд┐, рдХрдирд╡рд░реНрдЯрд░
рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ рдФрд░ рд╕реНрд╡рддрдВрддреНрд░ рдХрд╛рд░реНрдп рд╢реБрд░реВ рдХрд░реЗрдВред рдХрд╛рд░реНрдп рддрдм рдкреНрд░рд╛рд░рдВрдн рд╣реЛрддрд╛ рд╣реИ рдЬрдм HAProxy main
рд╢реЗрдбреНрдпреВрд▓рд░ рдкреНрд░рд╛рд░рдВрдн рд╣реЛрддрд╛ рд╣реИ. рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ.
рддрд░реНрдХ
┬╖ рд╕рдорд╛рд░реЛрд╣ (рд╕рдорд╛рд░реЛрд╣) -- рд▓реВрдЖ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╣реИ:
рд╕рдорд╛рд░реЛрд╣()
рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЗрдирдкреБрдЯ рдирд╣реАрдВ рд▓рдЧрддрд╛, рдФрд░ рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдЕрдкреЗрдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИред
core.set_nice(рдЕрдЪреНрдЫрд╛)
рдкреНрд░рд╕рдВрдЧ: рдХрд╛рд░реНрдп, рдХрд╛рд░реНрд░рд╡рд╛рдИ, рдирдореВрдирд╛-рдкреНрд░рд╛рдкреНрддрд┐, рдХрдирд╡рд░реНрдЯрд░
рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдпрд╛ рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдХрд╛ рд╕реНрд╡рд░реВрдк рдмрджрд▓реЗрдВред
рддрд░реНрдХ
┬╖ рдЕрдЪреНрдЫрд╛ (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдЕрдЪреНрдЫрд╛ рдорд╛рди, рдпрд╣ -1024 рдФрд░ 1024 рдХреЗ рдмреАрдЪ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
core.set_map(рдлрд╝рд╛рдЗрд▓ рдирд╛рдо, рдХреБрдВрдЬреА, рдореВрд▓реНрдп)
рдкреНрд░рд╕рдВрдЧ: init, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛, рдирдореВрдирд╛-рд▓рд╛рдиреЗ, рдХрдирд╡рд░реНрдЯрд░
рдорд╛рди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдореВрд▓реНрдп рдХреБрдВрдЬреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо.
рддрд░реНрдХ
┬╖ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдорд╛рдирдЪрд┐рддреНрд░ рд╕рдВрджрд░реНрдн
┬╖ рдХреБрдВрдЬреА (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╕реЗрдЯ рдХрд░рдиреЗ рдпрд╛ рдмрджрд▓рдиреЗ рдХреА рдХреБрдВрдЬреА
┬╖ рдореВрд▓реНрдп (рд╕реНрдЯреНрд░рд┐рдВрдЧ)--рд╕рдВрдмрдВрдзрд┐рдд рдореВрд▓реНрдп
рдХреЛрд░.рдиреАрдВрдж(int рд╕реЗрдХрдВрдб)
рдкреНрд░рд╕рдВрдЧ: рдмреЙрдбреА, рдЗрдирд┐рдЯ, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛
RSI рдХреЛрд░.рдиреАрдВрдж() рдлрд╝рдВрдХреНрд╢рдВрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдХрдВрдб рдХреЗ рдмреАрдЪ рд▓реБрдЖ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВред
рддрд░реНрдХ
┬╖ рд╕реЗрдХрдВрдб (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдХрдВрдб.
рдХреЛрд░.tcp()
рдкреНрд░рд╕рдВрдЧ: init, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди a рдХрд╛ рдПрдХ рдирдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рд╕реЙрдХреЗрдЯ рд╡рд░реНрдЧ.
рд░рд┐рдЯрд░реНрди
A рдЧрд░реНрддрд┐рдХрд╛ рдХрдХреНрд╖рд╛ рд╡рд╕реНрддреБред
рдХреЛрд░.рдбрди(рдбреЗрдЯрд╛)
рдкреНрд░рд╕рдВрдЧ: рдмреЙрдбреА, рдЗрдирд┐рдЯ, рдХрд╛рд░реНрдп, рдХреНрд░рд┐рдпрд╛, рдирдореВрдирд╛-рдкреНрд░рд╛рдкреНрддрд┐, рдХрдирд╡рд░реНрдЯрд░
рддрд░реНрдХ
┬╖ рддрд┐рдерд┐ (рдХреЛрдИ)--рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рдПрдВред рдпрд╣ рдЗрд╕рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧреА рд╣реИ
рдирдореВрдирд╛-рд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдирдореВрдирд╛-рдкрд░рд┐рд╡рд░реНрддрдХред
рд╡рд░реНрддрдорд╛рди рд▓реБрдЖ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рддреБрд░рдВрдд рд░реЛрдХ рджреЗрддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рдкрд╛рд╕ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдПрдХ рдирдореВрдирд╛ рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдХрдирд╡рд░реНрдЯрд░ рдпрд╛ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП)ред рдЗрд╕рдХрд╛ рдкреНрд░рдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм LUA рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдкрдирд╛ рдХрд╛рд░реНрдп рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдирд╛ рдЪрд╛рд╣рддреА рд╣реИ
рд╢реЗрд╖ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ HAProxy рдкрд░ рд╡рд╛рдкрд╕ рд░рдЦреЗрдВред рдЗрд╕реЗ рдРрд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдПрдХ рдмрд╣реБ-рд╕реНрддрд░реАрдп "рд╡рд╛рдкрд╕реА"ред
рдХреЛрд░.рдпреАрд▓реНрдб()
рдкреНрд░рд╕рдВрдЧ: рдХрд╛рд░реНрдп, рдХрд╛рд░реНрд░рд╡рд╛рдИ, рдирдореВрдирд╛-рдкреНрд░рд╛рдкреНрддрд┐, рдХрдирд╡рд░реНрдЯрд░
HAProxy рд╢реЗрдбреНрдпреВрд▓рд░ рдкрд░ рд╣рд╛рде рд╡рд╛рдкрд╕ рджреЗрдВред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ LUA рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред
рдХрдХреНрд╖рд╛ рдлрд╝реЗрдЪреЗрд╕()
рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЖрдВрддрд░рд┐рдХ HAProxy рдирдореВрдирд╛ рдлрд╝реЗрдЪ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред HAProxy рджреЗрдЦреЗрдВ
рдЙрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП "configuration.txt" рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ред рд╡реЗ рд╣реИрдВ
рдЕрдзреНрдпрд╛рдп 7.3.2 рд╕реЗ 7.3.6.
рдЪреЗрддрд╛рд╡рдиреА рдХреБрдЫ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреБрдЫ рдирдореВрдиреЗ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред рдпреЗ рд╕реАрдорд╛рдПрдБ
рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрдм рд╡реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдВред
рджреЗрдЦ рдЯреАрдПрдХреНрд╕рдПрди.рдПрдл
рджреЗрдЦ TXN.sf
рдлрд╝реЗрдЪ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВ:
┬╖ рд╕рд┐рд╕реНрдЯрдо рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ,
┬╖ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ,
┬╖ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ,
┬╖ рдЬреНрдЮрд╛рдд рдмреИрдХрдПрдВрдб рд╕реНрдерд┐рддрд┐ рдЬреИрд╕реЗ рдХрддрд╛рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛
рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд,
┬╖ рдЧреНрд░рд╛рд╣рдХ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЬреИрд╕реЗ рдЖрдИрдкреА рд╕реНрд░реЛрдд рдпрд╛ рдЧрдВрддрд╡реНрдп,
┬╖ рд╕реНрдЯрд┐рдХ рдЯреЗрдмрд▓ рд╕реЗ рдирд┐рдкрдЯреЗрдВ,
┬╖ рд╕реНрдерд╛рдкрд┐рдд рдПрд╕рдПрд╕рдПрд▓ рд╕реВрдЪрдирд╛рдПрдВ,
┬╖ HTTP рдЬрд╛рдирдХрд╛рд░реА рдЬреИрд╕реЗ рд╣реЗрдбрд░ рдпрд╛ рд╡рд┐рдзрд┐ред
рдлрд╝рдВрдХреНрд╢рди рдХреНрд░рд┐рдпрд╛(txn)
- рд╕реНрд░реЛрдд рдЖрдИрдкреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рд╕реНрдерд╛рдиреАрдп рдЧреНрд░рд╛рд╣рдХ = txn.f:src()
рд╕рдорд╛рдкреНрдд
рдХрдХреНрд╖рд╛ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕()
рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЖрдВрддрд░рд┐рдХ HAProxy рдирдореВрдирд╛ рдХрдирд╡рд░реНрдЯрд░реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред HAProxy рджреЗрдЦреЗрдВ
рдЙрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ "configuration.txt"ред рдпрд╣ рд╣реИ
рдЕрдзреНрдпрд╛рдп 7.3.1ред
рджреЗрдЦ рдЯреАрдПрдХреНрд╕рдПрди.рд╕реА
рджреЗрдЦ TXN.рдПрд╕рд╕реА
рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рд╕реНрдЯреЗрдЯрдлреБрд▓ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд╡реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВ:
┬╖ рдЗрдирдкреБрдЯ рдХреЛ рдмреЗрд╕64 рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛,
┬╖ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░ рд╣реИрд╢ рд▓рдЧрд╛рдирд╛ (djb2, crc32, sdbm, wt6),
┬╖ рдкреНрд░рд╛рд░реВрдк рджрд┐рдирд╛рдВрдХ,
┬╖ рдЬреЗрд╕рди рдПрд╕реНрдХреЗрдк,
┬╖ рджреЛ рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдирд┐рдХрд╛рд▓рдирд╛,
┬╖ рдирд┐рдЪрд▓реЗ рдпрд╛ рдКрдкрд░реА рд╡рд░реНрдгреЛрдВ рдХреА рдУрд░ рдореБрдбрд╝реЗрдВ,
┬╖ рд╕реНрдЯрд┐рдХ рдЯреЗрдмрд▓ рд╕реЗ рдирд┐рдкрдЯреЗрдВ.
рдХрдХреНрд╖рд╛ рдЪреИрдирд▓()
HAProxy рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рджреЛ рдмрдлрд╝рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЕрдиреБрд░реЛрдз рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде (рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рд╕рд░реНрд╡рд░ рддрдХ) рдФрд░ рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдбреЗрдЯрд╛ (рд╕рд░реНрд╡рд░ рд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рддрдХ)ред
рдкреНрд░рддреНрдпреЗрдХ рдмрдлрд╝рд░ рдореЗрдВ рджреЛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИред рдкрд╣рд▓рд╛ рдкреНрд░рдХрд╛рд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИ
рдПрдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП. рджреВрд╕рд░рд╛ рднрд╛рдЧ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдбреЗрдЯрд╛ рд╣реИред рдЖрдо рддреМрд░ рдкрд░,
рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреИрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдЗрд╕реЗ
рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдЗрди рдбреЗрдЯрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
рдмрдлрд░.
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд░реЗрдЦ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЪреИрдирд▓ рдХреНрд▓рд╛рд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛рдБ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред
рдЪреЗрддрд╛рд╡рдиреА: рдЕрдиреБрд░реЛрдз рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдкрдврд╝рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рд╣реИ
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдЪреИрдирд▓ рдХреЛ рдкрдврд╝рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
[рдЪрд┐рддреНрд░]
рдЪреИрдирд▓.рдбреБрдк(рдЪреИрдирд▓)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдмрдлрд╝рд░ рд╣реЛрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдирд╣реАрдВ рд╣реИ
рдмрдлрд╝рд░ рд╕реЗ рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдкреБрди: рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрджрд┐ рдмрдлрд╝рд░ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рдкрд╛рддрд╛ рд╣реИ, рддреЛ 'рд╢реВрдиреНрдп' рдорд╛рди рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рдЪреИрдирд▓ (рдХреНрд▓рд╛рд╕_рдЪреИрдирд▓) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪреИрдирд▓ред
рд░рд┐рдЯрд░реНрди
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдпрд╛ рд╢реВрдиреНрдп рд╣реЛред
рдЪреИрдирд▓.рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ(рдЪреИрдирд▓)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рдмрдлрд╝рд░ рд╣реЛрддрд╛ рд╣реИред рдбреЗрдЯрд╛ рдХреА рдЦрдкрдд рд╣реЛрддреА рд╣реИ
рдмрдлрд╝рд░ рд╕реЗ.
рдпрджрд┐ рдмрдлрд╝рд░ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рдкрд╛рддрд╛ рд╣реИ, рддреЛ 'рд╢реВрдиреНрдп' рдорд╛рди рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рдЪреИрдирд▓ (рдХреНрд▓рд╛рд╕_рдЪреИрдирд▓) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪреИрдирд▓ред
рд░рд┐рдЯрд░реНрди
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдпрд╛ рд╢реВрдиреНрдп рд╣реЛред
рдЪреИрдирд▓.рдЧреЗрдЯрд▓рд╛рдЗрди(рдЪреИрдирд▓)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрдлрд╝рд░ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╣реЛрддреА рд╣реИред рдЖрдВрдХрдбрд╝рд╛
рдЙрдкрднреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ. рдпрджрд┐ рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдореЗрдВ рдЕрдВрддрд┐рдо 'рдПрди' рдирд╣реАрдВ рд╣реИ рддреЛ рдЗрд╕реЗ рдЗрд╕рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдорд╛рди рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдмрдлрд╝рд░ рдореЗрдВ рдЕрдВрддрд┐рдо рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ред
рдпрджрд┐ рдмрдлрд╝рд░ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рдкрд╛рддрд╛ рд╣реИ, рддреЛ 'рд╢реВрдиреНрдп' рдорд╛рди рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рдЪреИрдирд▓ (рдХреНрд▓рд╛рд╕_рдЪреИрдирд▓) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪреИрдирд▓ред
рд░рд┐рдЯрд░реНрди
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд▓рд╛рдЗрди рдпрд╛ рд╢реВрдиреНрдп рд╣реИред
рдЪреИрдирд▓.рд╕реЗрдЯ(рдЪреИрдирд▓, рдбреЛрд░реА)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдмрдлрд╝рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддрд╛ рд╣реИ
рдХреЙрдкреА рдХреА рдЧрдИ рд▓рдВрдмрд╛рдИ, рдЕрдиреНрдпрдерд╛, рдпрд╣ -1 рд▓реМрдЯрд╛рддреА рд╣реИред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╡реЗ HAProxy рдХреЗ рдЦрд╝рддреНрдо рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рддрд╛рдХрд┐ рдмрдлрд░ рднрд░рд╛ рдЬрд╛ рд╕рдХреЗред
рддрд░реНрдХ
┬╖ рдЪреИрдирд▓ (рдХреНрд▓рд╛рд╕_рдЪреИрдирд▓) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪреИрдирд▓ред
┬╖ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдЬреЛ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛.
рд░рд┐рдЯрд░реНрди
рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЬрд┐рд╕рдореЗрдВ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рдорд╛рддреНрд░рд╛ рдпрд╛ -1 рд╣реЛрддреА рд╣реИред
рдЪреИрдирд▓.рдЬреЛрдбрд╝реЗрдВ(рдЪреИрдирд▓, рдбреЛрд░реА)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрд░реНрдХ рдХреЛ рдмрдлрд╝рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо
рдХреЙрдкреА рдХреА рдЧрдИ рд▓рдВрдмрд╛рдИ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛, рдпрд╣ -1 рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ. рд╡реЗ HAProxy рдХреЗ рдЦрд╝рддреНрдо рд╣реЛрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╝рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ
рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рддрд╛рдХрд┐ рдмрдлрд░ рднрд░рд╛ рдЬрд╛ рд╕рдХреЗред
рддрд░реНрдХ
┬╖ рдЪреИрдирд▓ (рдХреНрд▓рд╛рд╕_рдЪреИрдирд▓) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪреИрдирд▓ред
┬╖ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдЬреЛ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛.
рд░рд┐рдЯрд░реНрди
рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЬрд┐рд╕рдореЗрдВ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рдорд╛рддреНрд░рд╛ рдпрд╛ -1 рд╣реЛрддреА рд╣реИред
рдЪреИрдирд▓.рднреЗрдЬреЗрдВ(рдЪреИрдирд▓, рдбреЛрд░реА)
рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рддрддреНрдХрд╛рд▓ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬрдм рддрдХ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рди рд╣реЛ
рдмрдВрдж рдХрд░реЗрдВ, рдмрдлрд╝рд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдлреНрд▓рд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рднреЗрдЬреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
рддрд░реНрдХ
┬╖ рдЪреИрдирд▓ (рдХреНрд▓рд╛рд╕_рдЪреИрдирд▓) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪреИрдирд▓ред
┬╖ рд╕реНрдЯреНрд░рд┐рдВрдЧ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдЬреЛ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛.
рд░рд┐рдЯрд░реНрди
рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЬрд┐рд╕рдореЗрдВ рдХреЙрдкреА рдХрд┐рдП рдЧрдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рдорд╛рддреНрд░рд╛ рдпрд╛ -1 рд╣реЛрддреА рд╣реИред
рдЪреИрдирд▓.get_in_length(рдЪреИрдирд▓)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдмрдлрд╝рд░ рдХреЗ рдЗрдирдкреБрдЯ рднрд╛рдЧ рдХреА рд▓рдВрдмрд╛рдИ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рдЪреИрдирд▓ (рдХреНрд▓рд╛рд╕_рдЪреИрдирд▓) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪреИрдирд▓ред
рд░рд┐рдЯрд░реНрди
рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдмрд╛рдЗрдЯреНрд╕ рдХреА рдорд╛рддреНрд░рд╛ рд╣реЛрддреА рд╣реИред
рдЪреИрдирд▓.рдЧреЗрдЯ_рдЖрдЙрдЯ_рд▓реЗрдВрде(рдЪреИрдирд▓)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдмрдлрд╝рд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рднрд╛рдЧ рдХреА рд▓рдВрдмрд╛рдИ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рдЪреИрдирд▓ (рдХреНрд▓рд╛рд╕_рдЪреИрдирд▓) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪреИрдирд▓ред
рд░рд┐рдЯрд░реНрди
рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдмрд╛рдЗрдЯреНрд╕ рдХреА рдорд╛рддреНрд░рд╛ рд╣реЛрддреА рд╣реИред
рдЪреИрдирд▓.рдлрд╝реЙрд░рд╡рд░реНрдб(рдЪреИрдирд▓, NS)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдмрдлрд╝рд░ рдХреЗ рдЗрдирдкреБрдЯ рднрд╛рдЧ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рднрд╛рдЧ рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рдЪреИрдирд▓ (рдХреНрд▓рд╛рд╕_рдЪреИрдирд▓) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪреИрдирд▓ред
┬╖ int (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдЬрд┐рд╕реЗ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХрдХреНрд╖рд╛ рдПрдЪрдЯреАрдЯреАрдкреА()
рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рд╕рднреА HTTP рд╣реЗрд░рдлреЗрд░ рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
HTTP.req_get_headers(http)
рд╕рднреА рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рд╡рд╛рд▓реА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
рд░рд┐рдЯрд░реНрди
рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреА рд╕рд░рдгреА.
рджреЗрдЦ HTTP.res_get_headers()
рдпрд╣ рд▓реМрдЯрд╛рдИ рдЧрдИ рд╕рд░рдгреА рдХрд╛ рд░реВрдк рд╣реИ:
HTTP:req_get_headers()[' '][ ] = " "
рд╕реНрдерд╛рдиреАрдп рдПрдЪрдбреАрдЖрд░ = HTTP:req_get_headers()
рдПрдЪрдбреАрдЖрд░["рд╣реЛрд╕реНрдЯ"][0] = "www.test.com"
рдПрдЪрдбреАрдЖрд░["рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ"][0] = "рдСрдбрд┐рдпреЛ/рдмреЗрд╕рд┐рдХ рдХреНрдпреВ=1"
рдПрдЪрдбреАрдЖрд░["рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ"][1] = "рдСрдбрд┐рдпреЛ/*, рдХреНрдпреВ=0.2"
hdr["рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ"][2] = "*/*, q=0.1"
HTTP.res_get_headers(http)
рд╕рднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рд╡рд╛рд▓реА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
рд░рд┐рдЯрд░реНрди
рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреА рд╕рд░рдгреА.
рджреЗрдЦ HTTP.req_get_headers()
рдпрд╣ рд▓реМрдЯрд╛рдИ рдЧрдИ рд╕рд░рдгреА рдХрд╛ рд░реВрдк рд╣реИ:
HTTP:res_get_headers()[' '][ ] = " "
рд╕реНрдерд╛рдиреАрдп рдПрдЪрдбреАрдЖрд░ = HTTP:req_get_headers()
рдПрдЪрдбреАрдЖрд░["рд╣реЛрд╕реНрдЯ"][0] = "www.test.com"
рдПрдЪрдбреАрдЖрд░["рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ"][0] = "рдСрдбрд┐рдпреЛ/рдмреЗрд╕рд┐рдХ рдХреНрдпреВ=1"
рдПрдЪрдбреАрдЖрд░["рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ"][1] = "рдСрдбрд┐рдпреЛ/*, рдХреНрдпреВ=0.2"
hdr["рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ"][2] = "*.*, q=0.1"
HTTP.req_add_header(http, рдирд╛рдо, рдореВрд▓реНрдп)
рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ HTTP рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо "рдирд╛рдо" рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ
рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп "рдореВрд▓реНрдп" рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдирд╛рдо.
┬╖ рдореВрд▓реНрдп (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдорд╛рди.
рджреЗрдЦ HTTP.res_add_header()
HTTP.res_add_header(http, рдирд╛рдо, рдореВрд▓реНрдп)
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ HTTP рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо "рдирд╛рдо" рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИ
рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп "рдореВрд▓реНрдп" рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдирд╛рдо.
┬╖ рдореВрд▓реНрдп (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдорд╛рди.
рджреЗрдЦ HTTP.req_add_header()
HTTP.req_del_header(http, рдирд╛рдо)
рдЕрдиреБрд░реЛрдз рдореЗрдВ рдЙрди рд╕рднреА HTTP рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдирд╛рдо "рдирд╛рдо" рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдирд╛рдо.
рджреЗрдЦ HTTP.res_del_header()
HTTP.res_del_header(http, рдирд╛рдо)
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрди рд╕рднреА HTTP рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИ рдЬрд┐рдирдХрд╛ рдирд╛рдо "рдирд╛рдо" рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдирд╛рдо.
рджреЗрдЦ HTTP.req_del_header()
HTTP.req_set_header(http, рдирд╛рдо, рдореВрд▓реНрдп)
рдпрд╣ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕рднреА рд╣реЗрдбрд░ "рдирд╛рдо" рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдпреБрдХреНрдд рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ
рдореВрд▓реНрдп"ред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдирд╛рдо.
┬╖ рдореВрд▓реНрдп (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдорд╛рди.
рджреЗрдЦ HTTP.res_set_header()
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдлрд╝реЙрд▓реЛрд╡рд┐рдВрдЧ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:
рдлрд╝рдВрдХреНрд╢рди fcn(txn)
TXN.http:req_del_header("рд╣реЗрдбрд░")
TXN.http:req_add_header("рд╣реЗрдбрд░", "рд╡реИрд▓реНрдпреВ")
рд╕рдорд╛рдкреНрдд
HTTP.res_set_header(http, рдирд╛рдо, рдореВрд▓реНрдп)
рдпрд╣ рд╡реЗрд░рд┐рдПрдмрд▓ рд╕рднреА рд╣реЗрдбрд░ "рдирд╛рдо" рдХреА рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдпреБрдХреНрдд рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ
рдореВрд▓реНрдп"ред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдирд╛рдо.
┬╖ рдореВрд▓реНрдп (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдорд╛рди.
рджреЗрдЦ HTTP.req_rep_header()
HTTP.req_rep_header(http, рдирд╛рдо, рд░реЗрдЧреЗрдХреНрд╕, рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ)
рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб "рдирд╛рдо" рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ
"рд░реЗрдЧреЗрдХреНрд╕" рдХреЗ рд▓рд┐рдП, рдФрд░ рдЙрдиреНрд╣реЗрдВ "рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ" рддрд░реНрдХ рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореВрд▓реНрдп
рдЗрд╕рдореЗрдВ 1, 2, рдЬреИрд╕реЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрджрд░реНрдн рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ... рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдирд╛рдо.
┬╖ regex (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдореИрдЪ рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди.
┬╖ рдХреА рдЬрдЧрд╣ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореВрд▓реНрдп.
рджреЗрдЦ HTTP.res_rep_header()
HTTP.res_rep_header(http, рдирд╛рдо, рд░реЗрдЧреЗрдХреНрд╕, рдбреЛрд░реА)
рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб "рдирд╛рдо" рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдореЗрдВ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ
"рд░реЗрдЧреЗрдХреНрд╕" рдХреЗ рд▓рд┐рдП, рдФрд░ рдЙрдиреНрд╣реЗрдВ "рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ" рддрд░реНрдХ рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореВрд▓реНрдп
рдЗрд╕рдореЗрдВ 1, 2, рдЬреИрд╕реЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрджрд░реНрдн рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ... рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдирд╛рдо.
┬╖ regex (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдореИрдЪ рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди.
┬╖ рдХреА рдЬрдЧрд╣ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореВрд▓реНрдп.
рджреЗрдЦ HTTP.req_replace_header()
HTTP.req_replace_value(http, рдирд╛рдо, рд░реЗрдЧреЗрдХреНрд╕, рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ)
"HTTP.req_replace_header()" рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рд░реЗрдЧреЗрдХреНрд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ
рд╕рдВрдкреВрд░реНрдг рдХреЗ рдмрдЬрд╛рдп рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб "рдирд╛рдо" рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо-рд╕реАрдорд╛рдВрдХрд┐рдд рдорд╛рди
рд╣реИрдбрд░.
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдирд╛рдо.
┬╖ regex (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдореИрдЪ рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди.
┬╖ рдХреА рдЬрдЧрд╣ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореВрд▓реНрдп.
рджреЗрдЦ HTTP.req_replace_header()
рджреЗрдЦ HTTP.res_replace_value()
HTTP.res_replace_value(http, рдирд╛рдо, рд░реЗрдЧреЗрдХреНрд╕, рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ)
"HTTP.res_replace_header()" рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рд░реЗрдЧреЗрдХреНрд╕ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ
рд╕рдВрдкреВрд░реНрдг рдХреЗ рдмрдЬрд╛рдп рд╣реЗрдбрд░ рдлрд╝реАрд▓реНрдб "рдирд╛рдо" рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо-рд╕реАрдорд╛рдВрдХрд┐рдд рдорд╛рди
рд╣реИрдбрд░.
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдирд╛рдо.
┬╖ regex (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдореИрдЪ рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди.
┬╖ рдХреА рдЬрдЧрд╣ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдореВрд▓реНрдп.
рджреЗрдЦ HTTP.res_replace_header()
рджреЗрдЦ HTTP.req_replace_value()
HTTP.req_set_method(http, рддрд░реАрдХрд╛)
рдкреИрд░рд╛рдореАрдЯрд░ "рд╡рд┐рдзрд┐" рдХреЗ рд╕рд╛рде рдЕрдиреБрд░реЛрдз рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рддрд░реАрдХрд╛ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдирдИ рд╡рд┐рдзрд┐.
HTTP.req_set_path(http, рдкрде)
рдЕрдиреБрд░реЛрдз рдкрде рдХреЛ "рдкрде" рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдкрде (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдирдИ рд░рд╛рд╣.
HTTP.req_set_query(http, рдЬрд┐рдЬреНрдЮрд╛рд╕рд╛)
рдЕрдиреБрд░реЛрдз рдХреА рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рдкреНрд░рд╢реНрди рдЪрд┐рд╣реНрди рдХреЗ рдмрд╛рдж рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ
("?") рдкреИрд░рд╛рдореАрдЯрд░ "рдХреНрд╡реЗрд░реА" рдХреЗ рд╕рд╛рдеред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рд╕рд╡рд╛рд▓ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдирдИ рдХреНрд╡реЗрд░реА.
HTTP.req_set_uri(http, рдЙрд░реА)
рдЕрдиреБрд░реЛрдз URI рдХреЛ рдкреИрд░рд╛рдореАрдЯрд░ "uri" рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рдЙрдбрд╝реА (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдирдИ рдЙрд░реАред
HTTP.res_set_status(http, рджрд░реНрдЬрд╛)
рдкреИрд░рд╛рдореАрдЯрд░ "рдХреЛрдб" рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдХрд╛рд░рдг
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирдП рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ http (рдХреНрд▓рд╛рд╕_http)--рд╕рдВрдмрдВрдзрд┐рдд http рдСрдмреНрдЬреЗрдХреНрдЯред
┬╖ рд╣реИрд╕рд┐рдпрдд (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдирдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реНрдерд┐рддрд┐ рдХреЛрдбред
рдХрдХреНрд╖рд╛ TXN()
txn рд╡рд░реНрдЧ рдореЗрдВ http рдпрд╛ tcp рд▓реЗрдирджреЗрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
(рдиреЛрдЯ рдПрдХ рдЯреАрд╕реАрдкреА рд╕реНрдЯреНрд░реАрдо рдПрдХ рдЯреАрд╕реАрдкреА рд▓реЗрдирджреЗрди рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ HTTP рд▓реЗрдирджреЗрди рд╣реИ
рдЯреАрд╕реАрдкреА рд╕реНрдЯреНрд░реАрдо рд╕реЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ)ред
рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреБрд░реЛрдзреЛрдВ рд╕реЗ рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдЙрд╕реЗ рдмрджрд▓рдиреЗ рдФрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдЗрд╕реЗ рдЖрдЧреЗ рдХрд░реЗрдВред
рдЗрд╕ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рд╕рднреА рдлрд╝рдВрдХреНрд╢рди рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ
рдирдореВрдирд╛-рд▓рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдФрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ.
рдЯреАрдПрдХреНрд╕рдПрди.рд╕реА
рд░рд┐рдЯрд░реНрди
An рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХрдХреНрд╖рд╛.
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред
TXN.рдПрд╕рд╕реА
рд░рд┐рдЯрд░реНрди
An рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХрдХреНрд╖рд╛.
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рд╡рд╕реНрддреБ рдХреЗ рдХрд╛рд░реНрдп
рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдЯреАрдПрдХреНрд╕рдПрди.рдПрдл
рд░рд┐рдЯрд░реНрди
An рдлрд╝реЗрдЪ рдХрдХреНрд╖рд╛.
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдПрдХ Fetches рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред
TXN.sf
рд░рд┐рдЯрд░реНрди
An рдлрд╝реЗрдЪ рдХрдХреНрд╖рд╛.
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдПрдХ Fetches рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рд╡рд╕реНрддреБ рдХреЗ рдХрд╛рд░реНрдп
рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
TXN.req
рд░рд┐рдЯрд░реНрди
An рдЪреИрдирд▓ рдХрдХреНрд╖рд╛.
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдЕрдиреБрд░реЛрдз рдмрдлрд╝рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреИрдирд▓ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред
TXN.res
рд░рд┐рдЯрд░реНрди
An рдЪреИрдирд▓ рдХрдХреНрд╖рд╛.
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрдлрд╝рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреИрдирд▓ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЯреАрдПрдХреНрд╕рдПрди.рдПрдЪрдЯреАрдЯреАрдкреА
рд░рд┐рдЯрд░реНрди
An HTTP рдХрдХреНрд╖рд╛.
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдПрдХ HTTP рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдЙрдкрд▓рдмреНрдз рд╣реИ рдЬрдм рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдкрд╛рд╕ рд╣реЛ
"рдореЛрдб http" рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЧрдпрд╛ред
TXN.рд▓реЙрдЧ(TXN, рдЫрд╛рдВрдЯрдиреЗ рдХрд╛ рд╕реНрддрд░, рд╕рдВрджреЗрд╢)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдПрдХ рд▓реЙрдЧ рднреЗрдЬрддрд╛ рд╣реИ. рд▓реЙрдЧ HAProxy рдХреЗ рдЕрдиреБрд╕рд╛рд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓, рдбрд┐рдлрд╝реЙрд▓реНрдЯ syslog рд╕рд░реНрд╡рд░ рдкрд░ рдпрджрд┐ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкрд░
рдпрджрд┐ рдЕрдиреБрдорддрд┐ рд╣реЛ рддреЛ stderr.
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ рд▓реЙрдЧ рд╕реНрддрд░ (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдХреНрдпрд╛ рд▓реЙрдЧ рд╕реНрддрд░ рд╕рдВрджреЗрд╢ рд╕реЗ рд╕рдВрдмрджреНрдз рд╣реИред рдпрд╣ рд╣реИ рдПрдХ
0 рдФрд░ 7 рдХреЗ рдмреАрдЪ рдХреА рд╕рдВрдЦреНрдпрд╛.
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд▓реЙрдЧ рд╕рд╛рдордЧреНрд░реА.
рджреЗрдЦ core.emerg, core.alert, core.crit, core.err, core.warning, core.notice,
core.info, core.debug (рд▓реЙрдЧ рд╕реНрддрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдБ)
рджреЗрдЦ TXN.рдбреАрдлрд╝реНрд▓реЙрдЧ
рджреЗрдЦ TXN.рдбреАрдмрдЧ
рджреЗрдЦ TXN.рдЬрд╛рдирдХрд╛рд░реА
рджреЗрдЦ TXN.рдЪреЗрддрд╛рд╡рдиреА
рджреЗрдЦ TXN.рдЪреЗрддрд╛рд╡рдиреА
TXN.deflog (TXN, рд╕рдВрджреЗрд╢)
рд╕реЗ рд╕рдВрдмрджреНрдз рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЙрдЧрд▓реЗрд╡рд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд▓реЙрдЧ рд▓рд╛рдЗрди рднреЗрдЬрддрд╛ рд╣реИ
рд▓реЗрди-рджреЗрдиред
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд▓реЙрдЧ рд╕рд╛рдордЧреНрд░реА.
рджреЗрдЦ TXN.рд▓реЙрдЧ
TXN.рдбреАрдмрдЧ(txn, рд╕рдВрджреЗрд╢)
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд▓реЙрдЧ рд╕рд╛рдордЧреНрд░реА.
рджреЗрдЦ TXN.рд▓реЙрдЧ
рд╕реЗ рд╕рдорд╛рди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:
рдлрд╝рдВрдХреНрд╢рди рдбреАрдмрдЧ (рдЯреАрдПрдХреНрд╕рдПрди, рд╕рдВрджреЗрд╢)
TXN.log(txn, core.debug, рд╕рдВрджреЗрд╢)
рд╕рдорд╛рдкреНрдд
TXN.рдЬрд╛рдирдХрд╛рд░реА(txn, рд╕рдВрджреЗрд╢)
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд▓реЙрдЧ рд╕рд╛рдордЧреНрд░реА.
рджреЗрдЦ TXN.рд▓реЙрдЧ
рдлрд╝рдВрдХреНрд╢рди рдбреАрдмрдЧ (рдЯреАрдПрдХреНрд╕рдПрди, рд╕рдВрджреЗрд╢)
TXN.log (рдЯреАрдПрдХреНрд╕рдПрди, рдХреЛрд░.рдЗрдиреНрдлреЛ, рд╕рдВрджреЗрд╢)
рд╕рдорд╛рдкреНрдд
TXN.рдЪреЗрддрд╛рд╡рдиреА(txn, рд╕рдВрджреЗрд╢)
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд▓реЙрдЧ рд╕рд╛рдордЧреНрд░реА.
рджреЗрдЦ TXN.рд▓реЙрдЧ
рдлрд╝рдВрдХреНрд╢рди рдбреАрдмрдЧ (рдЯреАрдПрдХреНрд╕рдПрди, рд╕рдВрджреЗрд╢)
TXN.log(txn, core.warning, рд╕рдВрджреЗрд╢)
рд╕рдорд╛рдкреНрдд
TXN.рдЪреЗрддрд╛рд╡рдиреА(txn, рд╕рдВрджреЗрд╢)
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд▓реЙрдЧ рд╕рд╛рдордЧреНрд░реА.
рджреЗрдЦ TXN.рд▓реЙрдЧ
рдлрд╝рдВрдХреНрд╢рди рдбреАрдмрдЧ (рдЯреАрдПрдХреНрд╕рдПрди, рд╕рдВрджреЗрд╢)
TXN.log (рдЯреАрдПрдХреНрд╕рдПрди, рдХреЛрд░.рдЕрд▓рд░реНрдЯ, рд╕рдВрджреЗрд╢)
рд╕рдорд╛рдкреНрдд
TXN.get_priv(txn)
рд╡рд░реНрддрдорд╛рди рд▓реЗрдирджреЗрди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд▓реБрдЖ рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рдПрдВ (рдХреЗ рд╕рд╛рде)ред TXN.set_priv())
рд╕рдорд╛рд░реЛрд╣ред рдпрджрд┐ рдХреЛрдИ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╢реВрдиреНрдп рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
рд░рд┐рдЯрд░реНрди
рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдЕрдкрд╛рд░рджрд░реНрд╢реА рдбреЗрдЯрд╛, рдпрд╛ рдпрджрд┐ рдХреБрдЫ рднреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ рддреЛ рд╢реВрдиреНрдпред
TXN.set_priv(рдЯреАрдПрдХреНрд╕рдПрди, рдбреЗрдЯрд╛)
рд╡рд░реНрддрдорд╛рди HAProxy рд▓реЗрдирджреЗрди рдореЗрдВ рдХреЛрдИ рднреА рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВред рдпрд╣ рдХреНрд░рд┐рдпрд╛ рдкреБрд░рд╛рдиреЗ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреА рд╣реИ
рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ред
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ рддрд┐рдерд┐ (рдЕрдкрд╛рд░рджрд░реНрд╢реА)-- рд╡рд╣ рдбреЗрдЯрд╛ рдЬреЛ рд▓реЗрдирджреЗрди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИред
TXN.set_var (TXN, рд╡рд░, рдореВрд▓реНрдп)
рдПрдХ Lua рдкреНрд░рдХрд╛рд░ рдХреЛ HAProxy рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ ред
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ рдерд╛ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) - HAProxy рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╛рдо
рд╡рд╛рдХреНрдп - рд╡рд┐рдиреНрдпрд╛рд╕ред
┬╖ рдореВрд▓реНрдп (рдЕрдкрд╛рд░рджрд░реНрд╢реА) -- рд╡рд╣ рдбреЗрдЯрд╛ рдЬреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред
TXN.get_var(TXN, рд╡рд░)
рд▓реБрдЖ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╡реЗрд░рд┐рдПрдмрд▓ рдХрдирд╡рд░реНрдЯрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ рдерд╛ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) - HAProxy рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╛рдо
рд╡рд╛рдХреНрдп - рд╡рд┐рдиреНрдпрд╛рд╕ред
TXN.get_headers(txn)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╣реЗрдбрд░ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
рд░рд┐рдЯрд░реНрди
рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛.
TXN.рд╣реЛ рдЧрдпрд╛(txn)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд▓реЗрдирджреЗрди рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╕рддреНрд░ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рддрдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдХрд┐рд╕реА рдЧрдВрднреАрд░ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдпрд╛ рдЙрд╕рдХреЗ рдмрд╛рдж рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдХреБрдЫ рдбреЗрдЯрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг: рдПрдХ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ)ред
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
TXN.set_loglevel(txn, рдЫрд╛рдВрдЯрдиреЗ рдХрд╛ рд╕реНрддрд░)
рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░реЛрдз рдХреЗ рд▓реЙрдЧ рд╕реНрддрд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред "рд▓реЙрдЧрд▓реЗрд╡рд▓" рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
0 рдФрд░ 7 рдХреЗ рдмреАрдЪ рдкреВрд░реНрдгрд╛рдВрдХ.
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ рд▓реЙрдЧ рд╕реНрддрд░ (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдЖрд╡рд╢реНрдпрдХ рд▓реЙрдЧ рд╕реНрддрд░. рдпрд╣ рд╡реЗрд░рд┐рдПрдмрд▓ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рджреЗрдЦ рдореБрдЦреНрдпред
TXN.set_tos (рдЯреАрдПрдХреНрд╕рдПрди, tos)
рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬреЗ рдЧрдП рдкреИрдХреЗрдЯ рдХреЗ рдЯреАрдУрдПрд╕ рдпрд╛ рдбреАрдПрд╕рд╕реАрдкреА рдлрд╝реАрд▓реНрдб рдорд╛рди рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ "tos" рдореЗрдВ рдореВрд▓реНрдп рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ tos (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдирдпрд╛ рдЯреАрдУрдПрд╕ рдУрдПрд╕ рдбреАрдПрд╕рд╕реАрдкреАред
рдЯреАрдПрдХреНрд╕рдПрди.рд╕реЗрдЯ_рдорд╛рд░реНрдХ(рдЯреАрдПрдХреНрд╕рдПрди, рдирд┐рд╢рд╛рди)
рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬреЗ рдЧрдП рд╕рднреА рдкреИрдХреЗрдЯреЛрдВ рдкрд░ рдиреЗрдЯрдлрд┐рд▓реНрдЯрд░ рдорд╛рд░реНрдХ рдХреЛ рдореВрд▓реНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЙрди рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ "рдорд╛рд░реНрдХ" рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЬреЛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред
рддрд░реНрдХ
┬╖ TXN (рдХреНрд▓рд╛рд╕_txn) -- рдХреНрд▓рд╛рд╕ txn рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╣реИред
┬╖ рдирд┐рд╢рд╛рди (рдкреВрд░реНрдгрд╛рдВрдХ)--рдЪрд┐рд╣реНрди рдорд╛рди.
рдХрдХреНрд╖рд╛ рд╕реЙрдХреЗрдЯ()
рдпрд╣ рд╡рд░реНрдЧ рд▓реБрдЖ рд╕реЙрдХреЗрдЯ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреЗрд╡рд▓ 'рдЧреНрд░рд╛рд╣рдХ'
рдлрд╝рдВрдХреНрд╢рди рдЙрдкрд▓рдмреНрдз рд╣реИрдВ. рд▓реБрдЖ рд╕реЙрдХреЗрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрдЦреЗрдВ:
http://w3.impa.br/~diego/software/luasocket/tcp.html
рд╕реЙрдХреЗрдЯ.рдмрдВрдж рдХрд░реЗрдВ(рд╕реЙрдХреЗрдЯ)
рдПрдХ рдЯреАрд╕реАрдкреА рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЖрдВрддрд░рд┐рдХ рд╕реЙрдХреЗрдЯ рдмрдВрдж рд╣реИ рдФрд░ рд╕реНрдерд╛рдиреАрдп рд╣реИ
рдЬрд┐рд╕ рдкрддреЗ рдкрд░ рд╡рд╕реНрддреБ рдмрдВрдзреА рдереА рдЙрд╕реЗ рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд╣реАрдВ
рдЖрдЧреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди (рдХреНрд▓реЛрдЬ рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреА рдХреЙрд▓ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ
рдмрдВрдж рд╕реЙрдХреЗрдЯ.
рддрд░реНрдХ
┬╖ рд╕реЙрдХреЗрдЯ (рдХреНрд▓рд╛рд╕_рд╕реЙрдХреЗрдЯ) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЙрдХреЗрдЯ рд╣реИред
рдзреНрдпрд╛рди рджреЗрдВ: рд╕рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реЙрдХреЗрдЯ рдХреЛ рддрдм рд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬрдм рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ
рдХрдИ рд╕рд┐рд╕реНрдЯрдо, рдкреНрд░рддреНрдпреЗрдХ рд╕реЙрдХреЗрдЯ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╕реАрдорд┐рдд рд╕рд┐рд╕реНрдЯрдо рд╣реИрдВ
рд╕рдВрд╕рд╛рдзрдиред рдХрдЪрд░рд╛-рдПрдХрддреНрд░рд┐рдд рд╡рд╕реНрддреБрдПрдВ рдирд╖реНрдЯ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ,
рд╣рд╛рд▓рд╛рдВрдХрд┐ред
рд╕реЙрдХреЗрдЯ.рдХрдиреЗрдХреНрдЯ(рд╕реЙрдХреЗрдЯ, рдкрддрд╛[, рдкрддреНрддрди])
рд╕реЙрдХреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ред
рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдзрд┐ рд╢реВрдиреНрдп рд▓реМрдЯрд╛рддреА рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рддреНрд░реБрдЯрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрддреА рд╣реИред
рд╕рдлрд▓рддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдзрд┐ 1 рд▓реМрдЯрд╛рддреА рд╣реИред
рддрд░реНрдХ
┬╖ рд╕реЙрдХреЗрдЯ (рдХреНрд▓рд╛рд╕_рд╕реЙрдХреЗрдЯ) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЙрдХреЗрдЯ рд╣реИред
┬╖ рдкрддрд╛ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдПрдХ рдЖрдИрдкреА рдкрддрд╛ рдпрд╛ рд╣реЛрд╕реНрдЯ рдирд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджреЗрдЦреЗрдВ
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реАред
┬╖ рдмрдВрджрд░рдЧрд╛рд╣ (рдкреВрд░реНрдгрд╛рдВрдХ) -- [1..64K] рд╢реНрд░реЗрдгреА рдореЗрдВ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред
рд░рд┐рдЯрд░реНрди
1 рдпрд╛ рд╢реВрдиреНрдп.
рдПрдХ рдкрддрд╛ рдлрд╝реАрд▓реНрдб рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрдЯ() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдЯреАрд╕реАрдкреА рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдзрд╛рд░рд╛ред рд╕рд┐рдВрдкрд▓рдЖрдИрдкреАрд╡реА4 рдпрд╛ рдЖрдИрдкреАрд╡реА6 рдПрдбреНрд░реЗрд╕ рд╡рд╛рд▓рд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ
рдореВрд▓рддрдГ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкреНрд░рд╛рд░реВрдк. рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд▓рд┐рдП рдкреЛрд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ.
рд╕реНрд╡реАрдХреГрдд рдЕрдиреНрдп рдкреНрд░рд╛рд░реВрдк "/рд╕реЙрдХреЗрдЯ/рдкрде" рдЬреИрд╕реЗ рд╕реЙрдХреЗрдЯ рдкрде рд╣реИрдВ, рдпрд╣ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдПрдХ рд╕реЙрдХреЗрдЯ рдХреЗ рд▓рд┐рдП. рдЕрдореВрд░реНрдд рдирд╛рдорд╕реНрдерд╛рди рдЙрдкрд╕рд░реНрдЧ "abns@", рдФрд░ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ
рдПрдХ рдлрд╛рдЗрд▓рдПрд╕реНрдХреНрд░рд┐рдпреЛрдЯреНрд░ рдХреЛ рдЙрдкрд╕рд░реНрдЧ "fd@" рдХреЗ рд╕рд╛рде рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрд╕рд░реНрдЧ "ipv4@", "ipv6@"
рдФрд░ "unix@" рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред рдкреЛрд░реНрдЯ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕
"127.0.0.1:1234" рдорд╛рдиреНрдп рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреИрд░рд╛рдореАрдЯрд░ рдмрдВрджрд░рдЧрд╛рд╣ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рд╕реЙрдХреЗрдЯ.рдХрдиреЗрдХреНрдЯ_рдПрд╕рдПрд╕рдПрд▓(рд╕реЙрдХреЗрдЯ, рдкрддрд╛, рдкреЛрд░реНрдЯ)
рдлрд╝рдВрдХреНрд╢рди рд╕реЙрдХреЗрдЯ рд╕реЗ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░: рдХрдиреЗрдХреНрдЯ, рд▓реЗрдХрд┐рди рдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рд╕реЙрдХреЗрдЯ (рдХреНрд▓рд╛рд╕_рд╕реЙрдХреЗрдЯ) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЙрдХреЗрдЯ рд╣реИред
рд░рд┐рдЯрд░реНрди
1 рдпрд╛ рд╢реВрдиреНрдп.
рд╕реЙрдХреЗрдЯ.getpeername(рд╕реЙрдХреЗрдЯ)
рдХрд┐рд╕реА рдХрдиреЗрдХреНрдЯреЗрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рджреВрд░рд╕реНрде рдкрдХреНрд╖ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рд╕рд╣рдХрд░реНрдореА рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рдж рдкреЛрд░реНрдЯ рдирдВрдмрд░ рджреЗрддрд╛ рд╣реИ
рд╕рд╣рдХрд░реНрдореА рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ. рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдзрд┐ рд╢реВрдиреНрдп рд▓реМрдЯрд╛рддреА рд╣реИред
рддрд░реНрдХ
┬╖ рд╕реЙрдХреЗрдЯ (рдХреНрд▓рд╛рд╕_рд╕реЙрдХреЗрдЯ) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЙрдХреЗрдЯ рд╣реИред
рд░рд┐рдЯрд░реНрди
рд╕рд░реНрд╡рд░ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред
рд╕реЙрдХреЗрдЯ.рдЧреЗрдЯрд╕реЙрдХрдирд╛рдо(рд╕реЙрдХреЗрдЯ)
рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕реНрдерд╛рдиреАрдп рдкрддреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рд╡рд┐рдзрд┐ рд╕реНрдерд╛рдиреАрдп рдЖрдИрдкреА рдкрддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдФрд░ рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддреА рд╣реИред рдореЗрдВ
рддреНрд░реБрдЯрд┐ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╡рд┐рдзрд┐ рд╢реВрдиреНрдп рд▓реМрдЯрд╛рддреА рд╣реИред
рддрд░реНрдХ
┬╖ рд╕реЙрдХреЗрдЯ (рдХреНрд▓рд╛рд╕_рд╕реЙрдХреЗрдЯ) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЙрдХреЗрдЯ рд╣реИред
рд░рд┐рдЯрд░реНрди
рдХреНрд▓рд╛рдЗрдВрдЯ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред
рд╕реЙрдХреЗрдЯ.рдкреНрд░рд╛рдкреНрдд(рд╕реЙрдХреЗрдЯ[, рдирдореВрдирд╛[, рдЙрдкрд╕рд░реНрдЧ]])
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░реАрдб рдкреИрдЯрд░реНрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИред рдкреИрдЯрд░реНрдиреНрд╕
рд▓реБрдЖ рдлрд╝рд╛рдЗрд▓ I/O рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ, рдФрд░ рд╕рднреА рдХреЗ рдмреАрдЪ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЕрдВрддрд░
рдкреИрдЯрд░реНрди рдирдЧрдгреНрдп рд╣реИ.
рддрд░реНрдХ
┬╖ рд╕реЙрдХреЗрдЯ (рдХреНрд▓рд╛рд╕_рд╕реЙрдХреЗрдЯ) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЙрдХреЗрдЯ рд╣реИред
┬╖ рдкреИрдЯрд░реНрди (рд╕реНрдЯреНрд░рд┐рдВрдЧ|рдкреВрд░реНрдгрд╛рдВрдХ) -- рд╡рд░реНрдгрди рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ)ред
┬╖ рдЙрдкрд╕рд░реНрдЧ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) - рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛ рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рдЙрдкрд╕рд░реНрдЧ рд╣реЛрдЧреАред
рд░рд┐рдЯрд░реНрди
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдпрд╛ рд╢реВрдиреНрдп рд╣реИред
рдкреИрдЯрд░реНрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:
┬╖
`*рдП`: рдкрдврд╝рддрд╛ рд╕реЗ la рд╕реЙрдХреЗрдЯ рдЬрдм рддрдХ la рд╕рдВрдмрдВрдз is рдмрдиреНрдж рд╣реИред рдирд╣реАрдВ
рдЕрдВрдд-рдкрдВрдХреНрддрд┐ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
┬╖
`*рдПрд▓`: рдкрдврд╝рддрд╛ a line of рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗ la рд╕реЙрдХреЗрдЯред RSI line is рд╕рдорд╛рдкреНрдд by a
рдПрд▓рдПрдл рд╡рд░реНрдг (рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ 10), рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╕реАрдЖрд░ рд╡рд░реНрдг (рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ 13) рд╣реЛрддрд╛ рд╣реИред
рд╕реАрдЖрд░ рдФрд░ рдПрд▓рдПрдл рд╡рд░реНрдг рд▓реМрдЯрд╛рдИ рдЧрдИ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ,
рд╕рднреА рд╕реАрдЖрд░ рд╡рд░реНрдгреЛрдВ рдХреЛ рдкреИрдЯрд░реНрди рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрдЯрд░реНрди рд╣реИ.
┬╖
рд╕рдВрдЦреНрдпрд╛: рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ la рддрд░реАрдХрд╛ рд╕реЗрд╡рд╛ рдореЗрд░реЗ рдкрдврд╝рдирд╛ a рд╡рд┐рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ of рдмрд╛рдЗрдЯреНрд╕ рд╕реЗ la
рд╕реЙрдХреЗрдЯ. рдЙрдкрд╕рд░реНрдЧ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬрд┐рд╕реЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рд╣реИ
рд╡рд╛рдкрд╕реА рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХрд╛ред
┬╖ рдЦрд╛рд▓реА: рдпрджрд┐ рдкреИрдЯрд░реНрди рдЦрд╛рд▓реА рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдк рд╣реИ *l.
рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, рд╡рд┐рдзрд┐ рдкреНрд░рд╛рдкреНрдд рдкреИрдЯрд░реНрди рд▓реМрдЯрд╛ рджреЗрддреА рд╣реИред рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
рд╡рд┐рдзрд┐ рд╢реВрдиреНрдп рд▓реМрдЯрд╛рддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЖрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ 'рдмрдВрдж' рд╣реЛ рд╕рдХрддреА рд╣реИ
рдпрджрд┐ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдкреВрд░рд╛ рд╣реЛрдиреЗ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛
рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ 'рдЯрд╛рдЗрдордЖрдЙрдЯ'ред рд╕рд╛рде рд╣реА, рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рдж
рд╕рдВрджреЗрд╢, рдлрд╝рдВрдХреНрд╢рди рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХрд╛ рдЖрдВрд╢рд┐рдХ рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреЛрдЯ: рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдорд▓реНрдЯреАрдкрд▓ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рдерд╛
рдкреИрдЯрд░реНрди (рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛) рдФрд░ рдЕрдм рдпрд╣ рдирд╣реАрдВ рд╣реИред
рдЖрдВрд╢рд┐рдХ рдкрд░рд┐рдгрд╛рдо рд╕рдлрд▓ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рддрд░рд╣ рд╣реА рд▓реМрдЯрд╛рдП рдЬрд╛рддреЗ рдереЗред рдпрд╣
рдЕрдВрддрд┐рдо рд╕реБрд╡рд┐рдзрд╛ рдиреЗ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдХрд┐ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рддреНрд░реБрдЯрд┐ рдкрд░ рд╢реВрдиреНрдп рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкреНрд░рдХрд╛рд░
рдЗрд╕реЗ рднреА рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛.
рд╕реЙрдХреЗрдЯ.рд╕реЗрдВрдб(рд╕реЙрдХреЗрдЯ, рдбреЗрдЯрд╛[, рд╢реБрд░реВ рдХрд░рдирд╛[, рдЕрдВрдд]])
рдХреНрд▓рд╛рдЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рд╕реЙрдХреЗрдЯ (рдХреНрд▓рд╛рд╕_рд╕реЙрдХреЗрдЯ) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЙрдХреЗрдЯ рд╣реИред
┬╖ рддрд┐рдерд┐ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдЬреЛ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛.
┬╖ рдкреНрд░рд╛рд░рдВрдн (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдбреЗрдЯрд╛ рдХреЗ рдмрдлрд╝рд░ рдореЗрдВ рдкреНрд░рд╛рд░рдВрдн рд╕реНрдерд┐рддрд┐ рдЬреЛ рд╣реЛрдЧреА
рднреЗрдЬрд╛ рдЧрдпрд╛ред
┬╖ рд╕рдорд╛рдкреНрдд (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдбреЗрдЯрд╛ рдХреЗ рдмрдлрд╝рд░ рдореЗрдВ рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рдЬреЛ рд╣реЛрдЧреА
рднреЗрдЬ рджрд┐рдпрд╛ред
рд░рд┐рдЯрд░реНрди
рдирд┐рдЪреЗ рджреЗрдЦреЛред
рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ. рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХ i рдФрд░ j рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕реЗ рд╣реА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ
рд╕рдмрд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдЪрдпрди рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ.рд╕рдм рд▓реБрдЖ рдлрд╝рдВрдХреНрд╢рдиред
рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, рд╡рд┐рдзрд┐ [рдкреНрд░рд╛рд░рдВрдн, рдЕрдВрдд] рдХреЗ рднреАрддрд░ рдЕрдВрддрд┐рдо рдмрд╛рдЗрдЯ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд▓реМрдЯрд╛рддреА рд╣реИ
рд╡рд╣ рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ. рдзреНрдпрд╛рди рджреЗрдВ, рдпрджрд┐ рдкреНрд░рд╛рд░рдВрдн 1 рдпрд╛ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рд╣реИ
рднреЗрдЬреЗ рдЧрдП рдмрд╛рдЗрдЯреНрд╕ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛. рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд┐рдзрд┐ рд╢реВрдиреНрдп рд▓реМрдЯрд╛рддреА рд╣реИ, рдЙрд╕рдХреЗ рдмрд╛рдж
рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢, рдЙрд╕рдХреЗ рдмрд╛рдж [рдкреНрд░рд╛рд░рдВрдн, рдЕрдВрдд] рдХреЗ рднреАрддрд░ рдЕрдВрддрд┐рдо рдмрд╛рдЗрдЯ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ
рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЙрд╕рдХреЗ рдмрд╛рдж рдмрд╛рдЗрдЯ рд╕реЗ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВред рддреНрд░реБрдЯрд┐
рдпрджрд┐ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рд╕реЗ рдкрд╣рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддреЛ рд╕рдВрджреЗрд╢ 'рдмрдВрдж' рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ 'рдЯрд╛рдЗрдордЖрдЙрдЯ' рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ
рдСрдкрд░реЗрд╢рдиред
рдиреЛрдЯ: рдЖрдЙрдЯрдкреБрдЯ рдмрдлрд╝рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЫреЛрдЯреЗ рддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ
рдЙрдиреНрд╣реЗрдВ рд▓реБрдЖ рдореЗрдВ ('..' рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде) рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдХреЙрд▓ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рднреЗрдЬреЗрдВ
рд╡рд┐рдзрд┐ рдХреЛ рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд░рдирд╛ред
рд╕реЙрдХреЗрдЯ.рд╕реЗрдЯрдСрдкреНрд╢рди(рд╕реЙрдХреЗрдЯ, рд╡рд┐рдХрд▓реНрдк[, рдХреАрдордд])
рдХреЗрд╡рд▓ рдЕрдиреБрдХреВрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдпрд╣ рдХреИрд▓ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ред
рд╕реЙрдХреЗрдЯ.рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ(рд╕реЙрдХреЗрдЯ, рдХреАрдордд[, рддрд░реАрдХрд╛])
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рди рдмрджрд▓рддрд╛ рд╣реИред рд╕рднреА I/O рдкрд░рд┐рдЪрд╛рд▓рди рдЕрд╡рд░реБрджреНрдз рд╣реЛ рд░рд╣реЗ рд╣реИрдВ. рд╡рд╣
рд╣реИ, рднреЗрдЬрдиреЗ, рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рдХреЛрдИ рднреА рдХреЙрд▓ рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рдПрдЧреА,
рдЬрдм рддрдХ рдСрдкрд░реЗрд╢рди рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛. рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ рд╡рд┐рдзрд┐ рд░рд╛рд╢рд┐ рдкрд░ рдПрдХ рд╕реАрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ
I/O рд╡рд┐рдзрд┐рдпрд╛рдБ рдХрд┐рддрдиреЗ рд╕рдордп рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдЬрдм рдПрдХ рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рдордп рдмреАрдд рдЪреБрдХрд╛ рд╣реИ, рддреЛ рдкреНрд░рднрд╛рд╡рд┐рдд
рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣рд╛рд░ рдорд╛рди рд▓реЗрддреА рд╣реИрдВ рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред
рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рд╕реЗрдХрдВрдб рдореЗрдВ рдорд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЯрд╛рдЗрдордЖрдЙрдЯ рдореЛрдб рдмреЙрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╣реИрдВ, рдПрдХрдорд╛рддреНрд░ рдирд┐рдкрдЯрд╛рди рдпреЛрдЧреНрдп рдЯрд╛рдЗрдордЖрдЙрдЯ рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рд╣реИ
рдЖрдВрддрд░рд┐рдХ рдмрдлрд╝рд░ рднреЗрдЬрдиреЗ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордпред
рддрд░реНрдХ
┬╖ рд╕реЙрдХреЗрдЯ (рдХреНрд▓рд╛рд╕_рд╕реЙрдХреЗрдЯ) -- рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЙрдХреЗрдЯ рд╣реИред
┬╖ рдореВрд▓реНрдп (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдЯрд╛рдЗрдордЖрдЙрдЯ рдорд╛рди.
рдХрдХреНрд╖рд╛ рдирдХреНрд╢рд╛()
рдпрд╣ рд╡рд░реНрдЧ HAProxy рдорд╛рдирдЪрд┐рддреНрд░реЛрдВ рдореЗрдВ рдХреБрдЫ рд▓реБрдХрдЕрдк рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдШреЛрд╖рд┐рдд рдорд╛рдирдЪрд┐рддреНрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
HAProxy рдкреНрд░рдмрдВрдзрди рд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рдирдЯрд╛рдЗрдо рдХреЗ рджреМрд░рд╛рди рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ = "рдпреВрдПрд╕рдП"
- рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рдПрдВ рдФрд░ рд▓реЛрдб рдХрд░реЗрдВ
рдЬрд┐рдпреЛ = рдореИрдк.рдиреНрдпреВ("рдЬрд┐рдпреЛ.рдореИрдк", рдореИрдк.рдЖрдИрдкреА);
- рдирдпрд╛ рдлрд╝реЗрдЪ рдмрдирд╛рдПрдВ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рджреЗрд╢ рд▓реМрдЯрд╛рдП
core.register_fetches("рджреЗрд╢", рдлрд╝рдВрдХреНрд╢рди(txn)
рд╕реНрдерд╛рдиреАрдп рд╕реНрд░реЛрдд;
рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рди;
src = txn.f:fhdr('x-forwarded-for');
рдпрджрд┐ (src == рд╢реВрдиреНрдп) рддреЛ
src = txn.f:src()
рдпрджрд┐ (src == рд╢реВрдиреНрдп) рддреЛ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд╛рдкрд╕реА;
рд╕рдорд╛рдкреНрдд
рд╕рдорд╛рдкреНрдд
-- рд▓реБрдХрдЕрдк рдХрд░реЗрдВ
рд╕реНрдерд╛рди = рднреВ:рд▓реБрдХрдЕрдк(src);
рдпрджрд┐ (loc == рд╢реВрдиреНрдп) рддреЛ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд╛рдкрд╕реА;
рд╕рдорд╛рдкреНрдд
рд╡рд╛рдкрд╕реА рд╕реНрдерд╛рди;
рдЕрдВрдд);
рдорд╛рдирдЪрд┐рддреНрд░.int
HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.txt рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ, рдЕрдзреНрдпрд╛рдп "ACL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдирдореВрдиреЗ рд▓рд╛рдирд╛"
рдЗрд╕ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдЕрдзреНрдпрд╛рдп "рдПрд╕реАрдПрд▓ рдореВрд▓ рдмрд╛рддреЗрдВ"ред
рдорд╛рдирдЪрд┐рддреНрд░.рдЖрдИрдкреА HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.txt рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ, рдЕрдзреНрдпрд╛рдп "ACL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдирдореВрдиреЗ рд▓рд╛рдирд╛"
рдЗрд╕ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдЕрдзреНрдпрд╛рдп "рдПрд╕реАрдПрд▓ рдореВрд▓ рдмрд╛рддреЗрдВ"ред
рдорд╛рдирдЪрд┐рддреНрд░.str
HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.txt рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ, рдЕрдзреНрдпрд╛рдп "ACL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдирдореВрдиреЗ рд▓рд╛рдирд╛"
рдЗрд╕ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдЕрдзреНрдпрд╛рдп "рдПрд╕реАрдПрд▓ рдореВрд▓ рдмрд╛рддреЗрдВ"ред
рдирдХреНрд╢рд╛.рднреАрдЦ
HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.txt рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ, рдЕрдзреНрдпрд╛рдп "ACL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдирдореВрдиреЗ рд▓рд╛рдирд╛"
рдЗрд╕ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдЕрдзреНрдпрд╛рдп "рдПрд╕реАрдПрд▓ рдореВрд▓ рдмрд╛рддреЗрдВ"ред
рдорд╛рдирдЪрд┐рддреНрд░.рдЙрдк
HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.txt рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ, рдЕрдзреНрдпрд╛рдп "ACL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдирдореВрдиреЗ рд▓рд╛рдирд╛"
рдЗрд╕ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдЕрдзреНрдпрд╛рдп "рдПрд╕реАрдПрд▓ рдореВрд▓ рдмрд╛рддреЗрдВ"ред
рдирдХреНрд╢рд╛.рдбреАрдЖрдИрдЖрд░
HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.txt рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ, рдЕрдзреНрдпрд╛рдп "ACL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдирдореВрдиреЗ рд▓рд╛рдирд╛"
рдЗрд╕ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдЕрдзреНрдпрд╛рдп "рдПрд╕реАрдПрд▓ рдореВрд▓ рдмрд╛рддреЗрдВ"ред
рдореИрдк.рдбреЛрдо
HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.txt рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ, рдЕрдзреНрдпрд╛рдп "ACL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдирдореВрдиреЗ рд▓рд╛рдирд╛"
рдЗрд╕ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдЕрдзреНрдпрд╛рдп "рдПрд╕реАрдПрд▓ рдореВрд▓ рдмрд╛рддреЗрдВ"ред
рдорд╛рдирдЪрд┐рддреНрд░ рдЕрдВрдд
HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.txt рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ, рдЕрдзреНрдпрд╛рдп "ACL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдирдореВрдиреЗ рд▓рд╛рдирд╛"
рдЗрд╕ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдЕрдзреНрдпрд╛рдп "рдПрд╕реАрдПрд▓ рдореВрд▓ рдмрд╛рддреЗрдВ"ред
рдирдХреНрд╢рд╛.рд░реЗрдЧ
HAProxy рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди.txt рдлрд╝рд╛рдЗрд▓ рджреЗрдЦреЗрдВ, рдЕрдзреНрдпрд╛рдп "ACL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдирдореВрдиреЗ рд▓рд╛рдирд╛"
рдЗрд╕ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдЕрдзреНрдпрд╛рдп "рдПрд╕реАрдПрд▓ рдореВрд▓ рдмрд╛рддреЗрдВ"ред
рдорд╛рдирдЪрд┐рддреНрд░.рдирдпрд╛(рдлрд╝рд╛рдЗрд▓, рддрд░реАрдХрд╛)
рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рдПрдВ рдФрд░ рд▓реЛрдб рдХрд░реЗрдВ.
рддрд░реНрдХ
┬╖ рдкрдЯреНрдЯрд┐рдХрд╛ (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдХреНрдпрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд╛рдирдЪрд┐рддреНрд░ рд╣реИред
┬╖ рддрд░реАрдХрд╛ (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдорд╛рдирдЪрд┐рддреНрд░ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рд╡рд┐рдзрд┐ рд╣реИред рдЧреБрдг рджреЗрдЦреЗрдВ
рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд░реНрдЧ рдХрд╛.
рд░рд┐рдЯрд░реНрди
рдПрдХ рдХреНрд▓рд╛рд╕ рдореИрдк рдСрдмреНрдЬреЗрдХреНрдЯред
рджреЗрдЦ рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ.
рдорд╛рдирдЪрд┐рддреНрд░.рд▓реБрдХрдЕрдк(рдорд╛рдирдЪрд┐рддреНрд░, рдПрд╕рдЯреАрдЖрд░)
рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рд▓реБрдХрдЕрдк рдХрд░реЗрдВ.
рддрд░реНрдХ
┬╖ рдирдХреНрд╢рд╛ (рдХреНрд▓рд╛рд╕_рдореИрдк) -- рдХреНрд▓рд╛рд╕ рдореИрдк рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред
┬╖ str (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдХреНрдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд░рд┐рдЯрд░реНрди
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рдпрд╛ рдпрджрд┐ рдХреЛрдИ рдорд┐рд▓рд╛рди рди рд╣реЛ рддреЛ рд╢реВрдиреНрдпред
Map.slookup(рдорд╛рдирдЪрд┐рддреНрд░, рдПрд╕рдЯреАрдЖрд░)
рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рд▓реБрдХрдЕрдк рдХрд░реЗрдВ.
рддрд░реНрдХ
┬╖ рдирдХреНрд╢рд╛ (рдХреНрд▓рд╛рд╕_рдореИрдк) -- рдХреНрд▓рд╛рд╕ рдореИрдк рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред
┬╖ str (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рдХреНрдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдВрдЬреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд░рд┐рдЯрд░реНрди
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рд╣реЛ рдпрд╛ рдпрджрд┐ рдХреЛрдИ рдорд┐рд▓рд╛рди рди рд╣реЛ рддреЛ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧред
рдХрдХреНрд╖рд╛ AppletHTTP()
рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдПрдкреНрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП 'http' рдореЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред http рдПрдкреНрд▓реЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реЛрдВ рдХреЛрд░.рд░рдЬрд┐рд╕реНрдЯрд░_рд╕реЗрд╡рд╛() рд╕рдорд╛рд░реЛрд╣ред рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
HAProxy рдХреЗ рдкреАрдЫреЗ рдПрдХ рд╕рд░реНрд╡рд░ рдХреА рддрд░рд╣ http рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ред
рдпрд╣ рдПрдХ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдирдореВрдирд╛ рдХреЛрдб рд╣реИ:
core.register_service("рд╣реИрд▓реЛ-рд╡рд░реНрд▓реНрдб", "http", рдлрд╝рдВрдХреНрд╢рди(рдПрдкреНрд▓реЗрдЯ)
рд╕реНрдерд╛рдиреАрдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ = "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!"
рдПрдкреНрд▓реЗрдЯ:set_status(200)
рдПрдкреНрд▓реЗрдЯ: add_header ("рд╕рд╛рдордЧреНрд░реА-рд▓рдВрдмрд╛рдИ", рд╕реНрдЯреНрд░рд┐рдВрдЧ.рд▓реЗрди (рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛))
рдПрдкреНрд▓реЗрдЯ: add_header ("рд╕рд╛рдордЧреНрд░реА-рдкреНрд░рдХрд╛рд░", "рдкрд╛рда/рд╕рд╛рджрд╛")
рдПрдкреНрд▓реЗрдЯ:start_response()
рдПрдкреНрд▓реЗрдЯ:рднреЗрдЬреЗрдВ(рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛)
рд╕рдорд╛рдкреНрдд)
AppletHTTP.c
рд░рд┐рдЯрд░реНрди
A рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХрдХреНрд╖рд╛
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред
AppletHTTP.sc
рд░рд┐рдЯрд░реНрди
A рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХрдХреНрд╖рд╛
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рд╡рд╕реНрддреБ рдХреЗ рдХрд╛рд░реНрдп
рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
AppletHTTP.f
рд░рд┐рдЯрд░реНрди
A рдлрд╝реЗрдЪ рдХрдХреНрд╖рд╛
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдПрдХ Fetches рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдкреНрд▓реЗрдЯ рдирд┐рд╖реНрдкрд╛рджрди
рд╕реНрдерд╛рди рд╡реИрдз HAProxy рдХреЛрд░ HTTP рд▓реЗрдирджреЗрди рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдирдореВрдирд╛
HTTP рдкрд░ рдирд┐рд░реНрднрд░ рдорд╛рдиреЛрдВ (рдПрдЪрдбреАрдЖрд░, рдкрде,...) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред
AppletHTTP.sf
рд░рд┐рдЯрд░реНрди
A рдлрд╝реЗрдЪ рдХрдХреНрд╖рд╛
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдПрдХ Fetches рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рд╡рд╕реНрддреБ рдХреЗ рдХрд╛рд░реНрдп
рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдкреНрд▓реЗрдЯ рдирд┐рд╖реНрдкрд╛рджрди рд╕реНрдерд╛рди рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛
рд╡реИрдз HAProxy рдХреЛрд░ HTTP рд▓реЗрдирджреЗрди, рдЗрд╕рд▓рд┐рдП HTTP рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдирдореВрдирд╛ рдлрд╝реЗрдХреНрдЪреЗрд╕
рдЖрд╢реНрд░рд┐рдд рдорд╛рди (рдПрдЪрдбреАрдЖрд░, рдкрде, ...) рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред
AppletHTTP.рд╡рд┐рдзрд┐
рд░рд┐рдЯрд░реНрди
рд╕реНрдЯреНрд░рд┐рдВрдЧ
рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд┐рдзрд┐ HTTP рд╡рд┐рдзрд┐ рд╡рд╛рд▓реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддреА рд╣реИред
AppletHTTP.рд╕рдВрд╕реНрдХрд░рдг
рд░рд┐рдЯрд░реНрди
рд╕реНрдЯреНрд░рд┐рдВрдЧ
рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рдВрд╕реНрдХрд░рдг, HTTP рдЕрдиреБрд░реЛрдз рд╕рдВрд╕реНрдХрд░рдг рд╡рд╛рд▓реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
AppletHTTP.рдкрде
рд░рд┐рдЯрд░реНрди
рд╕реНрдЯреНрд░рд┐рдВрдЧ
рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрде HTTP рдЕрдиреБрд░реЛрдз рдкрде рд╡рд╛рд▓реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
AppletHTTP.qs
рд░рд┐рдЯрд░реНрди
рд╕реНрдЯреНрд░рд┐рдВрдЧ
рд╡рд┐рд╢реЗрд╖рддрд╛ qs HTTP рдЕрдиреБрд░реЛрдз рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рд▓реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддреА рд╣реИред
AppletHTTP.рд▓рдВрдмрд╛рдИ
рд░рд┐рдЯрд░реНрди
рдкреВрд░реНрдгрд╛рдВрдХ
рд╡рд┐рд╢реЗрд╖рддрд╛ рд▓рдВрдмрд╛рдИ HTTP рдмреЙрдбреА рд▓рдВрдмрд╛рдИ рд╡рд╛рд▓рд╛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд▓реМрдЯрд╛рддреА рд╣реИред
AppletHTTP.рд╣реЗрдбрд░
рд░рд┐рдЯрд░реНрди
рд╕рд░рдгреА
рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реЗрдбрд░ HTTP рд╣реЗрдбрд░ рдпреБрдХреНрдд рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╣реЗрдбрд░
рдирд╛рдо рд╣рдореЗрд╢рд╛ рдЫреЛрдЯреЗ рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЬреИрд╕реЗ рдХрд┐ рд╣реЗрдбрд░ рдирд╛рдо рд╕реЗ рдЕрдзрд┐рдХ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдПрдХ рдмрд╛рд░, рдорд╛рди рдХреЛ рдкрд╣рд▓реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ 0 рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд░рдгреА
рдпрд╣ рдлрд╝реЙрд░реНрдо рд╣реИ:
AppletHTTP.headers[' '][ ] = " "
AppletHTTP.headers["host"][0] = "www.test.com"
AppletHTTP.headers["рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ"][0] = "рдСрдбрд┐рдпреЛ/рдмреЗрд╕рд┐рдХ q=1"
AppletHTTP.headers["рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ"][1] = "рдСрдбрд┐рдпреЛ/*, q=0.2"
AppletHTTP.headers["рд╕реНрд╡реАрдХрд╛рд░"][2] = "*/*, q=0.1"
AppletHTTP.рд╣реЗрдбрд░
рдЗрд╕рдореЗрдВ рд╕рднреА рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦреЛрдВ рд╡рд╛рд▓реА рдПрдХ рд╕рд░рдгреА рд╢рд╛рдорд┐рд▓ рд╣реИред
AppletHTTP.set_status(рдПрдкреНрд▓реЗрдЯ, рдХреЛрдб)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП HTTP рд╕реНрдерд┐рддрд┐ рдХреЛрдб рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрдордд рдХреЛрдб рд╕реЗ рд╣реИрдВ
100 рдХреЛ 599.
рддрд░реНрдХ
┬╖ рдПрдкреНрд▓реЗрдЯ (class_AppleHTTP) -- рдПрдХ AppletHTTP рдХрдХреНрд╖рд╛
┬╖ рдХреЛрдб (рдкреВрд░реНрдгрд╛рдВрдХ)--рд╕реНрдЯреЗрдЯрд╕ рдХреЛрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓реМрдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ред
AppletHTTP.add_header(рдПрдкреНрд▓реЗрдЯ, рдирд╛рдо, рдореВрд▓реНрдп)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдХ рд╣реЗрдбрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд┐рдП рдЧрдП рд╣реЗрдбрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ.
рд╡рд┐рд╢реЗрд╖ рд╢реАрд░реНрд╖рд▓реЗрдЦ рдХрдВрдЯреЗрдВрдЯ рдХреА рд▓рдореНрдмрд╛рдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд░ рдпрд╣
рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рдг-рдПрдиреНрдХреЛрдбрд┐рдВрдЧ: рдардЧрд╛ рд╣реБрдЖ рд╕реЗрдЯ рд╣реИ, рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╕рднреА рд▓реЗрдЦрди
AppletHTTP:рднреЗрдЬреЗрдВ() рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдмрди рдЬрд╛рдУ.
рддрд░реНрдХ
┬╖ рдПрдкреНрд▓реЗрдЯ (class_AppleHTTP) -- рдПрдХ AppletHTTP рдХрдХреНрд╖рд╛
┬╖ рдирд╛рдо (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдирд╛рдо
┬╖ рдореВрд▓реНрдп (рд╕реНрдЯреНрд░рд┐рдВрдЧ) -- рд╣реЗрдбрд░ рдорд╛рди
AppletHTTP.start_response(рдПрдкреНрд▓реЗрдЯ)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди HTTP рдЗрдВрдЬрди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╢реАрд░реНрд╖рд▓реЗрдЦ. рдЗрд╕ рдХреЙрд▓ рдХреЗ рдмрд╛рдж рд╣рдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╣реЗрдбрд░ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ; рд╣рдо
рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ AppletHTTP:рднреЗрдЬреЗрдВ() рдХрд╛рд░реНрдп рдХрд░реЗрдВ рдпрджрд┐ AppletHTTP:start_response() рдирд╣реАрдВ рд╣реИ
рдмреБрд▓рд╛рдпрд╛ред
рддрд░реНрдХ
┬╖ рдПрдкреНрд▓реЗрдЯ (class_AppleHTTP) -- рдПрдХ AppletHTTP рдХрдХреНрд╖рд╛
AppletHTTP.getline(рдПрдкреНрд▓реЗрдЯ)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди http рдмреЙрдбреА рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рд╡рд╛рд▓реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдбреЗрдЯрд╛
рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдореЗрдВ рдЕрдВрддрд┐рдо '\n' рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╕реНрдЯреНрд░реАрдо рдЦрд╝рддреНрдо рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ.
рддрд░реНрдХ
┬╖ рдПрдкреНрд▓реЗрдЯ (class_AppleHTTP) -- рдПрдХ AppletHTTP рдХрдХреНрд╖рд╛
рд░рд┐рдЯрд░реНрди
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред рдпрджрд┐ рд╣рдо рд╕реНрдЯреНрд░реАрдо рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ рддреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИред
AppletHTTP.рдкреНрд░рд╛рдкреНрдд(рдПрдкреНрд▓реЗрдЯ[, рдЖрдХрд╛рд░])
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░реАрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░ HTTP рдмреЙрдбреА рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ рдЖрдХрд╛рд░ред рдЕрдЧрд░ рдЖрдХрд╛рд░ is
рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдкрд░, рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреНрд░реАрдо рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░
la рдЖрдХрд╛рд░ http рдмреЙрдбреА рд╕реЗ рдмрдбрд╝рд╛ рд╣реИ, рдпрд╣ рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдХреА рдорд╛рддреНрд░рд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рдПрдкреНрд▓реЗрдЯ (class_AppleHTTP) -- рдПрдХ AppletHTTP рдХрдХреНрд╖рд╛
┬╖ рдЖрдХрд╛рд░ (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдЖрд╡рд╢реНрдпрдХ рдкрдврд╝рдиреЗ рдХрд╛ рдЖрдХрд╛рд░ред
рд░рд┐рдЯрд░реНрди
рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдВ, рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИред
AppletHTTP.send(рдПрдкреНрд▓реЗрдЯ, рд╕рдВрджреЗрд╢)
рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВ msg http рдЕрдиреБрд░реЛрдз рдирд┐рдХрд╛рдп рдкрд░.
рддрд░реНрдХ
┬╖ рдПрдкреНрд▓реЗрдЯ (class_AppleHTTP) -- рдПрдХ AppletHTTP рдХрдХреНрд╖рд╛
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ)--рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢.
рдХрдХреНрд╖рд╛ AppletTCP()
рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрди рдПрдкреНрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рд▓рд┐рдП 'tcp' рдореЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЯреАрд╕реАрдкреА рдПрдкреНрд▓реЗрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдХреЗ рд╕рд╛рде рдкрдВрдЬреАрдХреГрдд рд╣реИ рдХреЛрд░.рд░рдЬрд┐рд╕реНрдЯрд░_рд╕реЗрд╡рд╛() рд╕рдорд╛рд░реЛрд╣ред рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
HAProxy рдХреЗ рдкреАрдЫреЗ рдПрдХ рд╕рд░реНрд╡рд░ рдХреА рддрд░рд╣ рдПрдХ рдЯреАрд╕реАрдкреА рд╕реНрдЯреНрд░реАрдоред
AppletTCP.c
рд░рд┐рдЯрд░реНрди
A рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХрдХреНрд╖рд╛
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред
AppletTCP.sc
рд░рд┐рдЯрд░реНрди
A рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХрдХреНрд╖рд╛
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕ рд╡рд╕реНрддреБ рдХреЗ рдХрд╛рд░реНрдп
рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
AppletTCP.f
рд░рд┐рдЯрд░реНрди
A рдлрд╝реЗрдЪ рдХрдХреНрд╖рд╛
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдПрдХ Fetches рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред
AppletTCP.sf
рд░рд┐рдЯрд░реНрди
A рдлрд╝реЗрдЪ рдХрдХреНрд╖рд╛
рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдПрдХ Fetches рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред
AppletTCP.getline(рдПрдкреНрд▓реЗрдЯ)
рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рд╡рд╛рд▓реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдбреЗрдЯрд╛
рд▓реМрдЯрд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдореЗрдВ рдЕрдВрддрд┐рдо '\n' рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ
рд╕реНрдЯреНрд░реАрдо рдЦрд╝рддреНрдо рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ.
рддрд░реНрдХ
┬╖ рдПрдкреНрд▓реЗрдЯ (рдХреНрд▓рд╛рд╕_рдПрдкреНрд▓реЗрдЯрдЯреАрд╕реАрдкреА) -- рдПрдХ AppletTCP рдХрдХреНрд╖рд╛
рд░рд┐рдЯрд░реНрди
рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧред рдпрджрд┐ рд╣рдо рд╕реНрдЯреНрд░реАрдо рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВ рддреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИред
AppletTCP.рдкреНрд░рд╛рдкреНрдд(рдПрдкреНрд▓реЗрдЯ[, рдЖрдХрд╛рд░])
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░реАрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЯреАрд╕реАрдкреА рд╕реНрдЯреНрд░реАрдо рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ рдЖрдХрд╛рд░ред рдЕрдЧрд░ рдЖрдХрд╛рд░
рдЧрд╛рдпрдм рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдЯреНрд░реАрдо рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЕрдВрдд рддрдХ рдкрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред
рддрд░реНрдХ
┬╖ рдПрдкреНрд▓реЗрдЯ (рдХреНрд▓рд╛рд╕_рдПрдкреНрд▓реЗрдЯрдЯреАрд╕реАрдкреА) -- рдПрдХ AppletTCP рдХрдХреНрд╖рд╛
┬╖ рдЖрдХрд╛рд░ (рдкреВрд░реНрдгрд╛рдВрдХ) -- рдЖрд╡рд╢реНрдпрдХ рдкрдврд╝рдиреЗ рдХрд╛ рдЖрдХрд╛рд░ред
рд░рд┐рдЯрд░реНрди
рд╣рдореЗрд╢рд╛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рдПрдВ, рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддреА рд╣реИред
AppletTCP.рднреЗрдЬреЗрдВ(рдПрдкреНрд▓реЗрдЯрдПрдордПрд╕рдЬреА)
рд╕реНрдЯреНрд░реАрдо рдкрд░ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдВ.
рддрд░реНрдХ
┬╖ рдПрдкреНрд▓реЗрдЯ (рдХреНрд▓рд╛рд╕_рдПрдкреНрд▓реЗрдЯрдЯреАрд╕реАрдкреА) -- рдПрдХ AppletTCP рдХрдХреНрд╖рд╛
┬╖ msg (рд╕реНрдЯреНрд░рд┐рдВрдЧ)--рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджреЗрд╢.
рдмрд╣реБрдд рд╕рд╛рд░реА рдЙрдкрдпреЛрдЧреА рд▓реБрдЖ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╣рд╛рдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ:
┬╖ https://lua-toolbox.com/
рд░реЗрдбрд┐рд╕ рдкрд╣реБрдБрдЪ:
┬╖ https://github.com/nrk/redis-lua
рдпрд╣ HAProxy рдХреЗ рд╕рд╛рде Redis рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓
рдпрджрд┐ рд╕реЙрдХреЗрдЯ рдХрдиреЗрдХреНрд╢рди рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдХреЛрдИ рднреА рдлрд╝рдВрдХреНрд╢рди рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
- рд░реЗрдбрд┐рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд▓реЛрдб рдХрд░реЗрдВ
рд╕реНрдерд╛рдиреАрдп рд░реЗрдбрд┐рд╕ = рдЖрд╡рд╢реНрдпрдХрддрд╛ ("рд░реЗрдбрд┐рд╕");
рдлрд╝рдВрдХреНрд╢рди do_something(txn)
- рдирдпрд╛ рдЯреАрд╕реАрдкреА рд╕реЙрдХреЗрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ
рд╕реНрдерд╛рдиреАрдп рдЯреАрд╕реАрдкреА = рдХреЛрд░.рдЯреАрд╕реАрдкреА();
рдЯреАрд╕реАрдкреА:рд╕реЗрдЯрдЯрд╛рдЗрдордЖрдЙрдЯ; (1)
рдЯреАрд╕реАрдкреА: рдХрдиреЗрдХреНрдЯ ("127.0.0.1", 6379);
- рдЗрд╕ рдирдП рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рд░реЗрдбрд┐рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рд╕реНрдерд╛рдиреАрдп рдЧреНрд░рд╛рд╣рдХ = redis.connect({socket=tcp});
рдЧреНрд░рд╛рд╣рдХ:рдкрд┐рдВрдЧ();
рд╕рдорд╛рдкреНрдд
рдУрдкрдирдПрд╕рдПрд╕рдПрд▓:
┬╖ http://mkottman.github.io/luacrypto/index.html
┬╖ https://github.com/brunoos/luasec/wiki
onworks.net рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдирд▓рд╛рдЗрди haproxy-lua рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ