เดนเดพเดชเตเดฐเต‹เด•เตเดธเดฟเด•เตเด•เดพเดฏเดฟ เดตเต†เดฌเต-เดœเดฟเดฏเตเด เดŽเดดเตเดคเตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต† เด†เด•เดธเตเดฎเดฟเด•เดฎเดพเดฏเดฟ เดคเตเดŸเดฐเดพเด‚

เดŽเดดเตเดคเดฟเดฏเดฟเดŸเตเดŸเต เดฐเดฃเตเดŸเต เดตเตผเดทเดตเตเด‚ 4 เดฆเดฟเดตเดธเดตเตเด‚ เด•เดดเดฟเดžเตเดžเต เดนเดพเดชเตเดฐเต‹เด•เตเดธเดฟเด•เตเด•เต เดตเต‡เดฃเตเดŸเดฟ เด†เด•เดธเตเดฎเดฟเด•เดฎเดพเดฏเดฟ เด’เดฐเต เดตเต†เดฌเต-เดœเดฟเดฏเตเด เดŽเด™เตเด™เดจเต† เดŽเดดเตเดคเดพเด‚, เดŽเดจเตเดจเดพเตฝ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดตเดณเดฐเต†เด•เตเด•เดพเดฒเดฎเดพเดฏเดฟ เด…เดตเดฟเดŸเต† เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ - เดŽเดฒเตเดฒเดพเด‚ เดฎเดพเดฑเตเด•เดฏเตเด‚ เดตเดฟเด•เดธเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† HAProxy-WI เดˆ เดชเตเดฐเดตเดฃเดคเดฏเตโ€Œเด•เตเด•เตŠเดชเตเดชเด‚ เดคเตเดŸเดฐเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต. เดฐเดฃเตเดŸเต เดตเตผเดทเดคเตเดคเดฟเดจเตเดณเตเดณเดฟเตฝ เด’เดฐเตเดชเดพเดŸเต เดœเต‹เดฒเดฟเด•เตพ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เด‡เดชเตเดชเต‹เตพ เดชเตเดฐเดงเดพเดจ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ: "เดชเต‚เดšเตเดš" เดฏเดฟเดฒเต‡เด•เตเด•เต เดธเตเดตเดพเด—เดคเด‚.

เดนเดพเดชเตเดฐเต‹เด•เตเดธเดฟเด•เตเด•เดพเดฏเดฟ เดตเต†เดฌเต-เดœเดฟเดฏเตเด เดŽเดดเตเดคเตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต† เด†เด•เดธเตเดฎเดฟเด•เดฎเดพเดฏเดฟ เดคเตเดŸเดฐเดพเด‚

1. เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เดฃเตเดฃเต เดชเดฟเดŸเดฟเด•เตเด•เตเดจเตเดจ เด†เดฆเตเดฏเดคเตเดคเต† เด•เดพเดฐเตเดฏเด‚ เดžเดพเตป เด†เดฐเด‚เดญเดฟเด•เตเด•เตเด‚, เด‡เดคเต เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เดกเดฟเดธเตˆเตป เด†เดฃเต. เดŽเดจเตเดฑเต† เด…เดญเดฟเดชเตเดฐเดพเดฏเดคเตเดคเดฟเตฝ, เดŽเดฒเตเดฒเดพเด‚ เด•เต‚เดŸเตเดคเตฝ เดฏเตเด•เตเดคเดฟเดธเดนเดตเตเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเดตเตเดจเตเดจเดคเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเดฎเดพเดฃเต, เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เดฎเดจเต‹เดนเดฐเดตเตเด‚ :). เดฎเต†เดจเต เดตเดฟเดญเดพเด—เด™เตเด™เตพ เด•เต‚เดŸเตเดคเตฝ เด˜เดŸเดจเดพเดชเดฐเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

2. เด“เดฐเต‹ เดธเต†เตผเดตเดฑเดฟเดจเตเด‚ เดชเต‡เดœเตเด•เตพ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเต, เด‡เดคเต เดตเตเดฏเด•เตเดคเดฟเด—เดค เดธเต‡เดตเดจเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฃเต. เด‡เดคเต เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเดจเตเดจเต:

เดนเดพเดชเตเดฐเต‹เด•เตเดธเดฟเด•เตเด•เดพเดฏเดฟ เดตเต†เดฌเต-เดœเดฟเดฏเตเด เดŽเดดเตเดคเตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต† เด†เด•เดธเตเดฎเดฟเด•เดฎเดพเดฏเดฟ เดคเตเดŸเดฐเดพเด‚

3. Nginx เดชเดฟเดจเตเดคเตเดฃ เด‡เดชเตเดชเต‹เตพ เดฒเดญเตเดฏเดฎเดพเดฃเต! เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, Nginx-เดจเตเดฑเต† เดธเตŒเดœเดจเตเดฏ เดชเดคเดฟเดชเตเดชเดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเด•เตเด•เดฃเด•เตเด•เตเด•เตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดฆเดฐเดฟเดฆเตเดฐเดฎเดพเดฏ เด•เดดเดฟเดตเตเด•เตพ เด•เดพเดฐเดฃเด‚ HAProxy เดชเต‹เดฒเต† เดคเดจเตเดจเต† เดธเด‚เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดžเตเดžเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ HAProxy-WI-เดฏเตเดŸเต† เดชเตเดฐเดงเดพเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ (เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตฝ, เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเตฝ, เดชเดคเดฟเดชเตเดชเต เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตฝ, เดธเต‡เดตเดจเด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตฝ) เดŽเดจเตเดจเดฟเดตเดฏเดพเดฃเต. Nginx-เดจเต เด‡เดชเตเดชเต‹เดดเตเด‚ เดฒเดญเตเดฏเดฎเดพเดฃเต.

เดนเดพเดชเตเดฐเต‹เด•เตเดธเดฟเด•เตเด•เดพเดฏเดฟ เดตเต†เดฌเต-เดœเดฟเดฏเตเด เดŽเดดเตเดคเตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต† เด†เด•เดธเตเดฎเดฟเด•เดฎเดพเดฏเดฟ เดคเตเดŸเดฐเดพเด‚

4. เดจเดฟเด™เตเด™เตพเด•เตเด•เต HAProxy, Nginx เดŽเดจเตเดจเดฟเดตเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดจเดฟเดฐเต€เด•เตเดทเดฃเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚! เด‡เดคเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต: เด—เตเดฐเดพเดซเดพเดจ, เดชเตเดฐเต‹เดฎเดฟเดคเตเดฏเต‚เดธเต, เดŽเตปเดœเดฟเตปเด•เตเดธเต, เดนเดพเดชเตเดฐเต‹เด•เตเดธเดฟ เด•เดฏเดฑเตเดฑเตเดฎเดคเดฟเด•เตเด•เดพเตผ. เดฐเดฃเตเดŸเต เด•เตเดฒเดฟเด•เตเด•เตเด•เตพ, เดกเดพเดทเตโ€Œเดฌเต‹เตผเดกเตเด•เดณเดฟเดฒเต‡เด•เตเด•เต เดธเตเดตเดพเด—เดคเด‚!

5. เดฎเตเดฎเตเดชเดคเตเดคเต† เดชเต‹เดธเตเดฑเตเดฑเดฟเดฒเต† เด•เดฎเดจเตเดฑเตเด•เดณเดฟเตฝ, เดธเต‡เดตเดจเด™เตเด™เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเตป เดฌเดพเดทเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด•เดพเดฒเดฟเตฝ เดธเตเดตเดฏเด‚ เดตเต†เดŸเดฟเดตเดฏเตเด•เตเด•เตเด•เดฏเดพเดฃเต†เดจเตเดจเต เดŽเดจเตเดจเต‹เดŸเต เดชเดฒเดคเดตเดฃ เดชเดฑเดžเตเดžเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดžเดพเตป เด…เดตเดฐเต‹เดŸเต เดฏเต‹เดœเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต 95% เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเดจเตเด•เดณเตเด‚ เด‡เดชเตเดชเต‹เตพ เด…เตปเดธเดฟเดฌเดฟเดณเดฟเดฒเต‚เดŸเต† เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจเดคเต. เดถเดฐเดฟเด•เตเด•เตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเด‚ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดตเตเดฎเดพเดฃเต. เดšเตเดฑเตเดฑเตเด‚ เด’เดฐเต เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเต!

6. เดธเตˆเด•เตเด•เดฟเดณเดฟเดจเตเดณเตเดณเดฟเตฝ เดธเตˆเด•เตเด•เดฟเตพ เดตเต€เดฃเตเดŸเตเด‚ เด•เดฃเตเดŸเตเดชเดฟเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต† เด’เดดเดฟเดตเดพเด•เตเด•เดพเด‚? เด’เดฐเต เดธเตˆเด•เตเด•เดฟเดณเดฟเดจเตเดฑเต† เด•เตเดŸเตเดŸเดฟ, เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เดพเตป... เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดธเตˆเด•เตเด•เดฟเตพ เดฌเตˆเด•เตเด•เต, เด’เดฐเตเดชเด•เตเดทเต‡ เดคเตเดฐเดฟเดšเด•เตเดฐเด‚: เดชเต‹เตผเดŸเตเดŸเต เดฒเดญเตเดฏเดค, HTTP เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เดพเดฏเดฟ เดชเต‹เตผเดŸเตเดŸเตเด•เตพ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเดจเตเด‚ เด•เต€เดตเต‡เดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดคเดฟเด•เดฐเดฃเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เดพเดจเตเดฎเตเดณเตเดณ เด•เดดเดฟเดตเต. เด…เดคเต†, เดงเดพเดฐเดพเดณเด‚ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เตพ เด‡เดฒเตเดฒ, เดชเด•เตเดทเต‡ เด‡เดคเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต :)

เดนเดพเดชเตเดฐเต‹เด•เตเดธเดฟเด•เตเด•เดพเดฏเดฟ เดตเต†เดฌเต-เดœเดฟเดฏเตเด เดŽเดดเตเดคเตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต† เด†เด•เดธเตเดฎเดฟเด•เดฎเดพเดฏเดฟ เดคเตเดŸเดฐเดพเด‚

7. HAProxy RunTime API เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเดณเดฐเต† เดฐเดธเด•เดฐเดฎเดพเดฏ เดœเต‹เดฒเดฟ. เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เด‡เดคเตเดฐ เดคเดฃเตเดชเตเดชเต? เดจเดฎเตเด•เตเด•เตŠเดจเตเดจเต เดฎเดพเดคเตเดฐเดฎเต‡ เด‰เดณเตเดณเต‚... เด’เดฐเตเดชเด•เตเดทเต‡ เดฎเดฑเตเดฑเต†เดฒเตเดฒเดพเดตเดฐเตเด‚. เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เด‡เดคเต เด…เตฝเดชเตเดชเด‚ เดญเดพเดตเดจเดฏเดพเดฃเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด‡เดคเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เดถเดฐเดฟเด•เตเด•เตเด‚ เด‡เดทเตเดŸเดฎเดพเดฃเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเตเดฐเดฟเดฏเดชเตเดชเต†เดŸเตเดŸเดคเตเด‚ เดตเต†เดฑเตเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเดคเตเดฎเดพเดฏ เดจเดฟเดฐเดตเดงเดฟ เดธเตเดฑเตเดฑเดฟเด•เตเด•เต-เดŸเต‡เดฌเดฟเดณเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต†เดฏเดฟเดฐเดฟเด•เตเด•เตเด‚:

เดนเดพเดชเตเดฐเต‹เด•เตเดธเดฟเด•เตเด•เดพเดฏเดฟ เดตเต†เดฌเต-เดœเดฟเดฏเตเด เดŽเดดเตเดคเตเดจเตเดจเดคเต เดŽเด™เตเด™เดจเต† เด†เด•เดธเตเดฎเดฟเด•เดฎเดพเดฏเดฟ เดคเตเดŸเดฐเดพเด‚

เด’เดฐเตเดชเด•เตเดทเต‡ เดชเตเดฐเดงเดพเดจเดตเดฏเต†เดฒเตเดฒเดพเด‚. เด—เตเดฐเต‚เดชเตเดชเตเด•เตพ, เดฑเต‹เดณเตเด•เตพ, เดธเตเดฐเด•เตเดท, เดฌเด—เต เด•เดฃเตเดŸเต†เดคเตเดคเตฝ เดŽเดจเตเดจเดฟเดตเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดŸ เด’เดฐเตเดชเดพเดŸเต เดœเต‹เดฒเดฟเด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต... เดŽเดจเตเดจเดพเตฝ เดชเตŠเดคเตเดตเต‡, เดจเดฟเด™เตเด™เตพเด•เตเด•เดฑเดฟเดฏเดพเดฎเต‹? เด‡เดชเตเดชเต‹เตพ เด’เดฐเต เดตเต†เดฌเตเดธเตˆเดฑเตเดฑเต เด‰เดฃเตเดŸเต, HAProxy-WI เดฏเตเดŸเต† เด’เดฐเต เดกเต†เดฎเต‹ เด‰เดณเตเดณเดฟเดŸเดคเตเดคเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดฒเตเดฒเดพเด‚ เดธเตเดตเดฏเด‚ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเดตเตเดจเตเดจเดคเดพเดฃเต, เด’เดฐเต เดšเต‡เดžเตเดšเตเดฒเต‹เด—เต เด‰เดณเตเดณเดฟเดŸเดคเตเดคเต. เดฆเดฏเดตเดพเดฏเดฟ "เดนเดพเดฌเตเดฐเต‹ เด‡เดซเด•เตเดฑเตเดฑเต" เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒ, เด…เดฒเตเดฒเดพเดคเตเดคเดชเด•เตเดทเด‚ เดŽเดจเดฟเด•เตเด•เต เดธเตˆเดฑเตเดฑเดฟเดจเตเด‚ เดกเต†เดฎเต‹เดฏเตเด•เตเด•เตเด‚ เด’เดฐเต เดฆเตเตผเดฌเดฒเดฎเดพเดฏ เดธเต†เตผเดตเตผ เด‰เดฃเตเดŸเต. เด’เดชเตเดชเด‚ เด’เดฐเต เดฒเดฟเด™เตเด•เตเด‚ เดธเดพเดฎเต‚เดนเดฟเด•เด‚

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•