เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud
เบชเบฐเบšเบฒเบเบ”เบต, เบ‚เป‰เบญเบเปเบกเปˆเบ™ Sergey Elantsev, เบ‚เป‰เบญเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบ เปƒเบ™ Yandex.Cloud. เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ™เปเบฒเบžเบฒเบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ L7 balancer เบชเปเบฒเบฅเบฑเบš Yandex portal - เป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เป€เบงเบปเป‰เบฒเบ•เบฐเบซเบฅเบปเบเบงเปˆเบฒเบšเปเปˆเบงเปˆเบฒเบ‚เป‰เบญเบเบˆเบฐเป€เบฎเบฑเบ”เบซเบเบฑเบ‡เบเปเปˆเบ•เบฒเบก, เบกเบฑเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบšเบญเบเบœเบนเป‰เบญเปˆเบฒเบ™ Habr เบงเบดเบ—เบตเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป‚เบซเบผเบ”เปƒเบ™เป€เบงเบ—เบตเบŸเบฑเบ‡, เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบซเบฑเบ™เบงเปˆเบฒเป€เบ›เบฑเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบฑเบ™เบฅเบธเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ™เบตเป‰, เปเบฅเบฐเบงเบดเบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰.

เบเปˆเบญเบ™เบญเบทเปˆเบ™, เบ‚เปเปเบ™เบฐเบ™เบณเบšเบฒเบ‡เบ„เบณเบชเบฑเบš:

  • VIP (Virtual IP) - เบ—เบตเปˆเบขเบนเปˆ IP balancer
  • เป€เบŠเบตเบšเป€เบงเบต, backend, instance - เป€เบ„เบทเปˆเบญเบ‡ virtual เปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™
  • RIP (Real IP) - เบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ
  • Healthcheck - เบเบงเบ”เป€เบšเบดเปˆเบ‡เบ„เบงเบฒเบกเบžเป‰เบญเบกเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ
  • Availability Zone, AZ - เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเป‚เบ”เบ”เบ”เปˆเบฝเบงเปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™
  • เบžเบฒเบเบžเบทเป‰เบ™ - เบชเบฐเบซเบฐเบžเบฑเบ™เบ‚เบญเบ‡ AZs เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™

Load balancers เปเบเป‰เป„เบ‚เบชเบฒเบกเบซเบ™เป‰เบฒเบงเบฝเบเบ•เบปเป‰เบ™เบ•เป: เบžเบงเบเป€เบ‚เบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบ‚เบญเบ‡เบกเบฑเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™. เบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปเบกเปˆเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”: เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเปเบฅเบฐเบšเปเปˆเบฅเบงเบกเป€เบญเบปเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบˆเบฒเบเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบ—เบตเปˆเบšเปเปˆเบœเปˆเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบŠเบตเบงเบดเบ”. เบเบฒเบ™เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เปเบกเปˆเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เป‚เบ”เบเบเบฒเบ™เปเบˆเบเบขเบฒเบเบเบฒเบ™เป‚เบซเบผเบ”เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เปƒเบ™เบ—เบปเปˆเบงเบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบšเบดเบ™เป„เบ”เป‰. เบ–เป‰เบฒเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบšเปเปˆเป€เบ›เบฑเบ™เป€เบญเบเบฐเบžเบฒเบšเบžเบฝเบ‡เบžเป, เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบตเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”, เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบ–เบทเป„เบ”เป‰เบซเบ™เป‰เบญเบ.

เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบกเบฑเบเบˆเบฐเบ–เบทเบเบˆเบฑเบ”เบ›เบฐเป€เบžเบ”เป‚เบ”เบเบŠเบฑเป‰เบ™เป‚เบ›เบฃเป‚เบ•เบ„เปเบˆเบฒเบเบฎเบนเบšเปเบšเบš OSI เบ—เบตเปˆเบกเบฑเบ™เปเบฅเปˆเบ™. Cloud Balancer เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบขเบนเปˆเปƒเบ™เบฅเบฐเบ”เบฑเบš TCP, เป€เบŠเบดเปˆเบ‡เบเบปเบ‡เบเบฑเบšเบŠเบฑเป‰เบ™เบ—เบตเบชเบตเปˆ, L4.

เบกเบฒเป€เบšเบดเปˆเบ‡เบžเบฒเบšเบฅเบงเบกเบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณ Cloud balancer. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ„เปˆเบญเบเป†เป€เบžเบตเปˆเบกเบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”. เบžเบงเบเป€เบฎเบปเบฒเปเบšเปˆเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบชเบฒเบกเบŠเบฑเป‰เบ™. เบซเป‰เบญเบ‡เบฎเบฝเบ™ config เปเบกเปˆเบ™เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฐเบ–เบฒเบ™เบฐเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบš. เบเบปเบ™เบ„เบงเบšเบ„เบธเบกเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ›เบฐเบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปเบฅเบฐเบˆเบฑเบ”เบเบฒเบ™เบฅเบฐเบšเบปเบšเบˆเบฒเบเบŠเบฑเป‰เบ™เบเบปเบ™เบ‚เปเป‰เบกเบนเบ™, เป€เบŠเบดเปˆเบ‡เบกเบตเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเป‚เบ”เบเบเบปเบ‡เปƒเบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบˆเบฒเบเบฅเบนเบเบ„เป‰เบฒเป„เบ›เบซเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

เบเบปเบ™เบ‚เปเป‰เบกเบนเบ™

เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบชเบดเป‰เบ™เบชเบธเบ”เบฅเบปเบ‡เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบฅเบฒเบ„เบฒเปเบžเบ‡เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ routers เบŠเบฒเบเปเบ”เบ™. เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”, เบญเบธเบ›เบฐเบเบญเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบซเบผเบฒเบเบญเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบžเป‰เบญเบกเบเบฑเบ™เบขเบนเปˆเปƒเบ™เบชเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบ”เบฝเบง. เบ•เปเปˆเป„เบ›, เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เบซเบฒเบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบฒเบ”เบ—เบตเปˆเบขเบนเปˆ IP เบ‚เบญเบ‡ anycast เบเบฑเบš AZs เบ—เบฑเบ‡เบซเบกเบปเบ”เบœเปˆเบฒเบ™ BGP เบชเปเบฒเบฅเบฑเบšเบฅเบนเบเบ„เป‰เบฒ. 

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud

เบเบฒเบ™เบˆเบฒเบฅเบฐเบˆเบญเบ™เบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™ ECMP - เบ™เบตเป‰เปเบกเปˆเบ™เบเบธเบ”เบ—เบฐเบชเบฒเบ”เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ•เบฒเบกเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบกเบตเบซเบผเบฒเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบ”เบตเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™เบเบฑเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ (เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบˆเบฐเป€เบ›เบฑเบ™เบ—เบตเปˆเบขเบนเปˆ IP เบ›เบฒเบเบ—เบฒเบ‡) เปเบฅเบฐเปเบžเบฑเบเป€เบเบฑเบ”เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเบปเปˆเบ‡เบ•เบฒเบกเบžเบงเบเบกเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบซเบผเบฒเบเป€เบ‚เบ”เบ—เบตเปˆเบกเบตเปƒเบซเป‰เบญเบตเบ‡เบ•เบฒเบกเป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบžเบงเบเป€เบฎเบปเบฒเป‚เบ„เบชเบฐเบ™เบฒเบ—เบตเปˆเบขเบนเปˆเปƒเบ™เปเบ•เปˆเบฅเบฐเป€เบ‚เบ”, เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เปƒเบเป‰เบ—เบตเปˆเบชเบธเบ”เปเบฅเบฐเบšเปเปˆเป€เบเบตเบ™เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบกเบฑเบ™. เบ•เปเปˆเบกเบฒเปƒเบ™เบเบฒเบ™เบ•เบญเบšเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™.

Config เบเบปเบ™

 
เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบเบปเบ™ config เปเบกเปˆเบ™ API, เป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ‚เบฑเป‰เบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบเบฑเบšเบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”: เบเบฒเบ™เบชเป‰เบฒเบ‡, เบฅเบถเบš, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบš, เปเบฅเบฐเบญเบทเปˆเบ™เป†, เปƒเบ™เบญเบตเบเบ”เป‰เบฒเบ™เบซเบ™เบถเปˆเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™ REST API, เปเบฅเบฐเปƒเบ™. เบญเบทเปˆเบ™เป†, เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเปƒเบ™ Cloud เบกเบฑเบเบˆเบฐเปƒเบŠเป‰เบเบญเบš gRPC, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒ "เปเบ›" REST เบเบฑเบš gRPC เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆ gRPC. เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบ”เป†เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบชเป‰เบฒเบ‡เบŠเบธเบ”เบ‚เบญเบ‡เบงเบฝเบเบ‡เบฒเบ™ idempotent asynchronous เบ—เบตเปˆเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบขเบนเปˆเปƒเบ™เบเบธเปˆเบกเบ„เบปเบ™เบ‡เบฒเบ™ Yandex.Cloud เบ—เบปเปˆเบงเป„เบ›. เปœเป‰เบฒเบงเบฝเบเบ–เบทเบเบ‚เบฝเบ™เป„เบงเป‰เปƒเบ™เปเบšเบšเบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เบ–เบทเบเบฅเบฐเบ‡เบฑเบšเป„เบ”เป‰เบ—เบธเบเป€เบงเบฅเบฒ เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเปเปˆ. เบ™เบตเป‰เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ, เบเบฒเบ™เป€เบฎเบฑเบ”เป€เบฅเบทเป‰เบกเบ„เบทเบ™เปเบฅเบฐเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™.

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบงเบฝเบเบ‡เบฒเบ™เบˆเบฒเบ API เบˆเบฐเป€เบฎเบฑเบ”เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบœเบนเป‰เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ balancer, เป€เบŠเบดเปˆเบ‡เบ‚เบฝเบ™เปƒเบ™ Go. เบกเบฑเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เป€เบžเบตเปˆเบกโ€‹เปเบฅเบฐโ€‹เป€เบญเบปเบฒ balancersโ€‹, เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡โ€‹เบญเบปเบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบ‚เบญเบ‡ backends เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ„เปˆเบฒโ€‹. 

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud

เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฅเบฑเบ”เบ‚เบญเบ‡เบ•เบปเบ™เบขเบนเปˆเปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ Yandex, เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบ–เบทเบเบ„เบธเป‰เบกเบ„เบญเบ‡เบ—เบตเปˆเปเบˆเบเบขเบฒเบเบ—เบตเปˆเบ—เปˆเบฒเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰เปƒเบ™เป„เบงเป†เบ™เบตเป‰. เปƒเบ™ Yandex.Cloud, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเปเบฅเป‰เบง เบšเบญเบ, เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบญเบฒเบซเบฒเบ™เบซเบกเบฒเปƒเบŠเป‰เป„เบ”เป‰: เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡เปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบฅเบนเบเบ„เป‰เบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเปเปˆเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบเบดเบ™เบ”เบตเบ—เบตเปˆเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบžเบงเบเบกเบฑเบ™. เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™ Yandex เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง. เบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเปƒเบ™ YDB, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฎเบฑเบเบชเบฒเปเบฅเบฐเบ‚เบฐเบซเบเบฒเบเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™: เบšเบฑเบ™เบซเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ–เบทเบเปเบเป‰เป„เบ‚เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™.

เปƒเบซเป‰เบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡. เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เปเบฅเบฐเบชเบปเปˆเบ‡เบงเบฝเบเบ‡เบฒเบ™เป€เบžเบทเปˆเบญเบเบงเบ”เบเบฒเป€เบšเบดเปˆเบ‡เบ„เบงเบฒเบกเบžเป‰เบญเบกเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual เบเบฑเบšเบœเบนเป‰เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบš.

เบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš

เบกเบฑเบ™เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบ›เปˆเบฝเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบš, เบšเบฑเบ™เบ—เบถเบเบžเบงเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™ YDB, เปเบˆเบเบขเบฒเบเบงเบฝเบเบ‡เบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เปเป‰ healtcheck เปเบฅเบฐเบฅเบงเบšเบฅเบงเบกเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰เปƒเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปเบฅเบฐเบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเบ•เบปเบงเบ„เบงเบšเบ„เบธเบก loadbalancer. เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, เบกเบฑเบ™เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเปƒเบซเป‰เบ›เปˆเบฝเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡ cluster เปƒเบ™เบเบปเบ™เบ‚เปเป‰เบกเบนเบ™เป„เบ›เบซเบฒ loadbalancer-node, เป€เบŠเบดเปˆเบ‡เบ‚เป‰เบญเบเบˆเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud

เบกเบฒเบฅเบปเบกเบเบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš. เบžเบงเบเป€เบ‚เบปเบฒเบชเบฒเบกเบฒเบ”เปเบšเปˆเบ‡เบญเบญเบเป€เบ›เบฑเบ™เบซเบผเบฒเบเบซเป‰เบญเบ‡เบฎเบฝเบ™. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบกเบตเป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบ„เบงเบฒเบกเบชเปเบฒเป€เบฅเบฑเบ”เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบเบฒเบ™เบเบงเบ”เบชเบญเบš TCP เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบชเป‰เบฒเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบžเบฒเบเปƒเบ™เป„เบฅเบเบฐเป€เบงเบฅเบฒเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”เป„เบงเป‰. เบเบฒเบ™เบเบงเบ”เบชเบญเบš HTTP เบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบฑเบ‡เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบ—เบตเปˆเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ—เบตเปˆเบกเบตเบฅเบฐเบซเบฑเบ”เบชเบฐเบ–เบฒเบ™เบฐ 200.

เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰, เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปƒเบ™เบซเป‰เบญเบ‡เบฎเบฝเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” - เบžเบงเบเป€เบ‚เบปเบฒเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเปเบฅเบฐเบ•เบปเบงเบ•เบฑเป‰เบ‡เบ•เบปเบงเบ•เบต. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบšเบš Passive เบžเบฝเบ‡เปเบ•เปˆเบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบžเบดเป€เบชเบ”เปƒเบ”เป†. เบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบœเบปเบ™เบ”เบตเบซเบผเบฒเบเปƒเบ™ L4 เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบฑเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เป‚เบ›เป‚เบ•เบ„เบญเบ™เบฅเบฐเบ”เบฑเบšเบชเบนเบ‡: เปƒเบ™ L4 เบšเปเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เบ”เบปเบ™เบ›เบฒเบ™เปƒเบ”เบซเบผเบทเบงเปˆเบฒเบเบฒเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบกเปˆเบ™เบ”เบตเบซเบผเบทเบšเปเปˆเบ”เบต. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบขเปˆเบฒเบ‡เบซเป‰เบฒเบงเบซเบฑเบ™เบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบชเบปเปˆเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบซเบฒเปเบ•เปˆเบฅเบฐเป€เบŠเบตเบšเป€เบงเบต.

เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบชเปˆเบงเบ™เปƒเบซเบเปˆเป€เบฎเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบŠเบตเบงเบดเบ”เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบขเบนเปˆ Cloud, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเปเบเบเบžเบฒเบเบชเปˆเบงเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ. เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบฑเบเบชเบฒเบˆเปเบฒเบ™เบงเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบšเบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™. เบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบกเปˆเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบ nodes เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เปƒเบ™เบ—เบปเปˆเบงเบ—เบตเปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเปเบกเปˆเบ™ sharded เปเบฅเบฐ replicated. เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบˆเบฒเบเป€เบˆเบปเป‰เบฒเบžเบฒเบšเบซเบ™เบถเปˆเบ‡, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบญเบฒเบ”เบˆเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบง. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบฅเบฒเบงเบเบงเบ”เป€เบšเบดเปˆเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเปเบฅเบฐเบ™เบตเปƒเบ”เบ™เบถเปˆเบ‡เบˆเบฒเบเบขเปˆเบฒเบ‡เปœเป‰เบญเบเบชเบฒเบกเบ‚เปเป‰เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš. เบžเบงเบเป€เบฎเบปเบฒเปเบšเปˆเบ‡เบ›เบฑเบ™เบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบฅเบฐเบซเบงเปˆเบฒเบ‡ nodes เป‚เบ”เบเปƒเบŠเป‰เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ hashing เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡.

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud

เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปเบฅเบฐเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบšเบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆเบšเบฑเบ™เบซเบฒ. เบ–เป‰เบฒเบ‚เปเป‰เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆเบ•เบปเบงเบขเปˆเบฒเบ‡, เบ‚เป‰เบฒเบกเบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡ (เป€เบŠเบดเปˆเบ‡เบ›เบฐเบˆเบธเบšเบฑเบ™เบšเปเปˆเป„เบ”เป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™), เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเปเบ›เบเบ›เบฐเบซเบผเบฒเบ”เป€เบเบตเบ”เบ‚เบทเป‰เบ™: เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบกเบตเบŠเบตเบงเบดเบ”เบขเบนเปˆ, เปเบ•เปˆเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบฅเบธเป„เบ”เป‰. เบžเบงเบเป€เบฎเบปเบฒเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบ”เป‰เบงเบเบงเบดเบ—เบตเบ™เบตเป‰: เบžเบงเบเป€เบฎเบปเบฒเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ—เบตเปˆเบˆเบฐเบฅเบดเป€เบฅเบตเปˆเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบšเบœเปˆเบฒเบ™เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡. เปƒเบ™เบ„เปเบฒเบชเบฑเบšเบ•เปˆเบฒเบ‡เป†เบญเบทเปˆเบ™เป†, เป‚เบ„เบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบกเบตเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบˆเบฒเบเบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเบˆเบฒเบเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบšเปเบกเปˆเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”: เปƒเบ™เบ—เบฑเบ‡เบชเบญเบ‡เบเปเบฅเบฐเบ™เบต, packets เบˆเบฐเป„เบ›เป€เบ–เบดเบ‡เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡, เป€เบŠเบดเปˆเบ‡เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเป„เบ›เบซเบฒเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ.

เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบฅเบนเบเบ„เป‰เบฒเป€เบฎเบฑเบ”เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆ VIP, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบšเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบ•เปเปˆ RIP เปเบ•เปˆเบฅเบฐเบ„เบปเบ™. เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰: เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เป‚เบญเบเบฒเบ”เบœเบนเป‰เปƒเบŠเป‰เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ IP เบชเบตเบ‚เบตเป‰เป€เบ–เบปเปˆเบฒ. เบ‚เปเปƒเบซเป‰เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบกเบตเป€เบˆเบปเป‰เบฒเบ‚เบญเบ‡เบ„เบฅเบฒเบงเบชเบญเบ‡เบ„เบปเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ—เบตเปˆเป„เบ”เป‰เป€เบŠเบทเปˆเบญเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡. เปเบ•เปˆเบฅเบฐเบžเบงเบเบกเบฑเบ™เบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบขเบนเปˆเปƒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบ 10.0.0.1/24, เบ—เบตเปˆเบกเบตเบ—เบตเปˆเบขเบนเปˆเบ”เบฝเบงเบเบฑเบ™. เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เบˆเปเบฒเปเบ™เบเปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ somehow, เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ dive เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เป€เบ„เบทเบญเบ‚เปˆเบฒเบ virtual Yandex.Cloud. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเบ—เบตเปˆเบˆเบฐเบŠเบญเบเบซเบฒเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™ เบงเบดเบ”เบตเป‚เบญเบˆเบฒเบเบเปˆเบฝเบงเบเบฑเบš:เป€เบซเบ”เบเบฒเบ™เบ„เบฅเบฒเบง, เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เบตเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบกเบตเบซเบผเบฒเบเบŠเบฑเป‰เบ™เปเบฅเบฐเบกเบตเบญเบธเป‚เบกเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบˆเปเบฒเปเบ™เบเป„เบ”เป‰เป‚เบ”เบ subnet id.

Healthcheck nodes เบ•เบดเบ”เบ•เปเปˆเบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เป‚เบ”เบเปƒเบŠเป‰เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒเบ—เบตเปˆเบขเบนเปˆ quasi-IPv6. เบ—เบตเปˆเบขเบนเปˆ quasi-address เปเบกเปˆเบ™เบ—เบตเปˆเบขเบนเปˆ IPv6 เบ—เบตเปˆเบกเบตเบ—เบตเปˆเบขเบนเปˆ IPv4 เปเบฅเบฐ id subnet เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบเบฑเบ‡เบขเบนเปˆเปƒเบ™เบกเบฑเบ™. เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เบฎเบญเบ”เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡, เป€เบŠเบดเปˆเบ‡เบชเบฐเบเบฑเบ”เบ—เบตเปˆเบขเบนเปˆเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ IPv4 เบˆเบฒเบเบกเบฑเบ™, เปเบ—เบ™ IPv6 เบ”เป‰เบงเบ IPv4 เปเบฅเบฐเบชเบปเปˆเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เป„เบ›เบซเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰.

เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ—เบตเปˆเบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™เป„เบ›เปƒเบ™เบ—เบฒเบ‡เบ”เบฝเบงเบเบฑเบ™: เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เป€เบซเบฑเบ™เบงเปˆเบฒเบˆเบธเบ”เบซเบกเบฒเบเบ›เบฒเบเบ—เบฒเบ‡เปเบกเปˆเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบชเบตเบ‚เบตเป‰เป€เบ–เบปเปˆเบฒเบˆเบฒเบเบœเบนเป‰เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš, เปเบฅเบฐเบ›เปˆเบฝเบ™ IPv4 เป€เบ›เบฑเบ™ IPv6.

VPP - เบซเบปเบงเปƒเบˆเบ‚เบญเบ‡เบเบปเบ™เบ‚เปเป‰เบกเบนเบ™

เป€เบ„เบทเปˆเบญเบ‡เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป‚เบ”เบเปƒเบŠเป‰เป€เบ—เบเป‚เบ™เป‚เบฅเบเบต Vector Packet Processing (VPP), เบเบญเบšเบˆเบฒเบ Cisco เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™ batch เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบเบญเบšเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเป€เบ—เบดเบ‡เบ‚เบญเบ‡เบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบญเบธเบ›เบฐเบเบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบœเบนเป‰เปƒเบŠเป‰ - Data Plane Development Kit (DPDK). เบ™เบตเป‰เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบชเบนเบ‡: เบเบฒเบ™เบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบซเบ™เป‰เบญเบเบฅเบปเบ‡เปƒเบ™ kernel, เปเบฅเบฐเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆ kernel เปเบฅเบฐเบžเบทเป‰เบ™เบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰. 

VPP เป„เบ›เบ•เบทเปˆเบกเบญเบตเบเปเบฅเบฐเบšเบตเบšเบญเบฑเบ”เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบ‚เบถเป‰เบ™เบญเบญเบเบˆเบฒเบเบฅเบฐเบšเบปเบšเป‚เบ”เบเบเบฒเบ™เบฅเบงเบกเบŠเบธเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบŠเบธเบ”. เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ”เป‰เบฒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบฎเบธเบเบฎเบฒเบ™เบ‚เบญเบ‡เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเปƒเบ™เป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบ—เบตเปˆเบ—เบฑเบ™เบชเบฐเป„เบซเบก. เบ—เบฑเบ‡เบชเบญเบ‡เปเบ„เบ”เบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเปƒเบŠเป‰ (เปเบžเบฑเบเป€เบเบฑเบ”เบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เปƒเบ™ "vectors", เบ‚เปเป‰เบกเบนเบ™เบขเบนเปˆเปƒเบเป‰เบเบฑเบ™) เปเบฅเบฐเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ: เปƒเบ™ VPP, packet processing เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบฒเบŸ, nodes เบ—เบตเปˆเบกเบตเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ”เบฝเบงเบเบฑเบ™.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ” IP เปƒเบ™ VPP เป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เบฅเปเบฒเบ”เบฑเบšเบ•เปเปˆเป„เบ›เบ™เบตเป‰: เบ—เปเบฒเบญเบดเบ”, เบซเบปเบงเบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบ–เบทเบเปเบเบเบขเบนเปˆเปƒเบ™เป‚เบซเบ™เบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐ, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเบกเบฑเบ™เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเป‚เบซเบ™เบ”, เป€เบŠเบดเปˆเบ‡เบชเบปเปˆเบ‡เบ•เปเปˆเปเบžเบฑเบเป€เบเบฑเบ”เบ•เปเปˆเป„เบ›เบ•เบฒเบกเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡.

เบเบฒเบเปœเป‰เบญเบเปœเบถเปˆเบ‡. เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบญเบ‡ VPP เบšเปเปˆเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบเบฒเบ™เบ›เบฐเบ™เบตเบ›เบฐเบ™เบญเบกเปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบต, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบฐเบซเบฑเบ”เบ›เบปเบเบเบฐเบ•เบดเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡ vector เบ‚เบญเบ‡ packets เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ vectorization เบ„เบนเปˆเบกเบท: เบกเบต loop เบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เบ—เบตเปˆเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เป€เบŠเบฑเปˆเบ™: "เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบชเบตเปˆเบŠเบญเบ‡เปƒเบ™เปเบ–เบง" เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบ„เบทเบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบชเบญเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ - เบชเปเบฒเบฅเบฑเบšเบซเบ™เบถเปˆเบ‡. เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒ prefetch เบกเบฑเบโ€‹เบˆเบฐโ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เป€เบžเบทเปˆเบญโ€‹เป‚เบซเบผเบ”โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป„เบ›โ€‹เปƒเบ™โ€‹เบ–เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹เป€เบžเบทเปˆเบญโ€‹เป€เบฅเบฑเปˆเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบญเบตเบโ€‹เป€เบ—เบทเปˆเบญโ€‹เบซเบ™เบถเปˆเบ‡โ€‹.

n_left_from = frame->n_vectors;
while (n_left_from > 0)
{
    vlib_get_next_frame (vm, node, next_index, to_next, n_left_to_next);
    // ...
    while (n_left_from >= 4 && n_left_to_next >= 2)
    {
        // processing multiple packets at once
        u32 next0 = SAMPLE_NEXT_INTERFACE_OUTPUT;
        u32 next1 = SAMPLE_NEXT_INTERFACE_OUTPUT;
        // ...
        /* Prefetch next iteration. */
        {
            vlib_buffer_t *p2, *p3;

            p2 = vlib_get_buffer (vm, from[2]);
            p3 = vlib_get_buffer (vm, from[3]);

            vlib_prefetch_buffer_header (p2, LOAD);
            vlib_prefetch_buffer_header (p3, LOAD);

            CLIB_PREFETCH (p2->data, CLIB_CACHE_LINE_BYTES, STORE);
            CLIB_PREFETCH (p3->data, CLIB_CACHE_LINE_BYTES, STORE);
        }
        // actually process data
        /* verify speculative enqueues, maybe switch current next frame */
        vlib_validate_buffer_enqueue_x2 (vm, node, next_index,
                to_next, n_left_to_next,
                bi0, bi1, next0, next1);
    }

    while (n_left_from > 0 && n_left_to_next > 0)
    {
        // processing packets by one
    }

    // processed batch
    vlib_put_next_frame (vm, node, next_index, n_left_to_next);
}

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, Healthchecks เป€เบงเบปเป‰เบฒเบซเบผเบฒเบเบเบงเปˆเบฒ IPv6 เบเบฑเบš VPP, เป€เบŠเบดเปˆเบ‡เบ›เปˆเบฝเบ™เบžเบงเบเบกเบฑเบ™เป€เบ›เบฑเบ™ IPv4. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป‚เบ”เบ node เปƒเบ™เบเบฒเบŸ, เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบตเป‰เบ™เบงเปˆเบฒ algorithmic NAT. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ›เบตเป‰เบ™เบเบฑเบšเบเบฑเบ™ (เปเบฅเบฐเบเบฒเบ™เปเบ›เบ‡เบˆเบฒเบ IPv6 เป€เบ›เบฑเบ™ IPv4) เบกเบต algorithmic NAT node เบ”เบฝเบงเบเบฑเบ™.

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud

เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป‚เบ”เบเบเบปเบ‡เบˆเบฒเบเบฅเบนเบเบ„เป‰เบฒ balancer เป„เบ›เป‚เบ”เบเบœเปˆเบฒเบ™เป€เบชเบฑเป‰เบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡. 

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud

เป‚เบซเบ™เบ”เบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบกเบซเบ™เบฝเบง. เบกเบฑเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ hash เบ‚เบญเบ‡ 5-tuple เบชเปเบฒเบฅเบฑเบšเบเบญเบ‡เบ›เบฐเบŠเบธเบกเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™. 5-tuple เบ›เบฐเบเบญเบšเบกเบตเบ—เบตเปˆเบขเบนเปˆเปเบฅเบฐเบžเบญเบ”เบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเบ—เบตเปˆเบ‚เปเป‰เบกเบนเบ™เบ–เบทเบเบชเบปเปˆเบ‡, เบ—เบตเปˆเบขเบนเปˆเปเบฅเบฐเบžเบญเบ”เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบฎเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเป‚เบ›เป‚เบ•เบ„เบญเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ. 

The 5-tuple hash เบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบซเบ™เป‰เบญเบเบฅเบปเบ‡เปƒเบ™ node hashing เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบš, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบผเบฑเบ‡ balancer. เป€เบกเบทเปˆเบญเปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบŠเบ”เบŠเบฑเบ™เบกเบฒเบฎเบญเบ”เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡, เบกเบฑเบ™เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒเป‚เบซเบ™เบ” hashing เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰ hashing เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡: เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบˆเบฒเบเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ "เบชเบปเบ”" เบ—เบตเปˆเบกเบตเบขเบนเปˆ. เบ•เปเปˆเป„เบ›, เปเบžเบฑเบเป€เบเบฑเบ”เบ–เบทเบเบชเบปเปˆเบ‡เป„เบ›เบซเบฒ NAT node, เป€เบŠเบดเปˆเบ‡เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเปเบ—เบ™เบ—เบตเปˆเบขเบนเปˆเบ›เบฒเบเบ—เบฒเบ‡เปเบฅเบฐเบ„เบดเบ”เป„เบฅเปˆ checksums เบ„เบทเบ™เปƒเบซเบกเปˆ. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป€เบซเบฑเบ™เป„เบ”เป‰, เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ‚เบญเบ‡ VPP - เบกเบฑเบเบกเบฑเบ, เบเบฒเบ™เบˆเบฑเบ”เบเบธเปˆเบกเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ•เบดเบžเบฒเบšเบ‚เบญเบ‡เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบ‚เบญเบ‡เป‚เบ›เป€เบŠเบ”เป€เบŠเบต.

hashing เบชเบญเบ”เบ„เปˆเบญเบ‡

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเบญเบเบกเบฑเบ™เปเบฅเบฐเบกเบฑเบ™เปเบกเปˆเบ™เบซเบเบฑเบ‡? เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ - เบเบฒเบ™เป€เบฅเบทเบญเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบˆเบฒเบเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆ. 

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud

เบ”เป‰เบงเบเบเบฒเบ™ hashing เบ—เบตเปˆเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡, hash เบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒเป„เบ”เป‰เบ–เบทเบเบ„เบดเบ”เป„เบฅเปˆ, เปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ–เบทเบเป€เบฅเบทเบญเบเบˆเบฒเบเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเป‚เบ”เบเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™ hash เบ™เบตเป‰เบ”เป‰เบงเบเบˆเปเบฒเบ™เบงเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™. เบ•เบฒเบšเปƒเบ”เบ—เบตเปˆเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบเบฑเบ‡เบ„เบปเบ‡เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡, เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบต: เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเป€เบซเบกเบตเบชเบปเปˆเบ‡เปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบกเบต 5-tuple เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เบ”เบฝเบงเบเบฑเบ™. เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบขเปˆเบฒเบ‡, เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบขเบธเบ”เป€เบŠเบปเบฒเบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เบ•เปเปˆเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบš, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡ hashes เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡. เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ TCP เบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเบˆเบฐเปเบ•เบเบซเบฑเบ: เปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡ A เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบฅเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเบซเบฒเบ•เบปเบงเบขเปˆเบฒเบ‡ B, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบšเป€เบŠเบ”เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเปเบžเบฑเบเป€เบเบฑเบ”เบ™เบตเป‰.

hashing เบชเบญเบ”เบ„เปˆเบญเบ‡เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป„เบ”เป‰เบญเบฐเบ—เบดเบšเบฒเบ. เบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบญเบฐเบ—เบดเบšเบฒเบเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰เปเบกเปˆเบ™เบ™เบตเป‰: เบˆเบดเบ™เบ•เบฐเบ™เบฒเบเบฒเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบกเบตเบงเบปเบ‡เปเบซเบงเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เปเบˆเบเบขเบฒเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เป‚เบ”เบ hash (เบ•เบปเบงเบขเปˆเบฒเบ‡, เป‚เบ”เบ IP: port). เบเบฒเบ™เป€เบฅเบทเบญเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปเบกเปˆเบ™เบเบฒเบ™เบซเบฑเบ™เบฅเปเป‰เป‚เบ”เบเบกเบธเบก, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบ hash เบ‚เบญเบ‡เปเบžเบฑเบเป€เบเบฑเบ”.

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud

เบ™เบตเป‰เบˆเบฐเบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เปเบˆเบเบขเบฒเบเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปƒเบซเป‰เปœเป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เป€เบกเบทเปˆเบญเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบเบฒเบ™เบฅเบถเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบชเปˆเบงเบ™เบ‚เบญเบ‡เบงเบปเบ‡เบเบฒเบ™ hashing เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เบ—เบตเปˆเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ™เบฑเป‰เบ™เบ•เบฑเป‰เบ‡เบขเบนเปˆ. เบเบฒเบ™เป€เบžเบตเปˆเบกเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบเบฑเบ‡เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เปเบˆเบเบขเบฒเบ, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบต node sessions เบซเบ™เบฝเบง, เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ›เปˆเบฝเบ™ sessions เบ—เบตเปˆเบ•เบฑเป‰เบ‡เป„เบงเป‰เปเบฅเป‰เบงเป„เบ›เบซเบฒเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบซเบกเปˆ.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป‚เบ”เบเบเบปเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™. เบ•เบญเบ™เบ™เบตเป‰เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบเบฑเบšเบ„เบทเบ™. เบกเบฑเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเบฎเบนเบšเปเบšเบšเบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™ - เบœเปˆเบฒเบ™ NAT algorithmic, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบœเปˆเบฒเบ™ NAT 44 เบ›เบตเป‰เบ™เบเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบญเบ‡เบฅเบนเบเบ„เป‰เบฒเปเบฅเบฐเบœเปˆเบฒเบ™ NAT 46 เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบš. เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบกเป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡: เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปเบฅเบฐเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เบ‚เบญเบ‡เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡.

Loadbalancer-node เปเบฅเบฐเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ›เบฐเบเบญเบš

เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เบœเบนเป‰เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เปเบฅเบฐเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบ™ VPP เปเบกเปˆเบ™เบฅเบฒเบเบ‡เบฒเบ™เป‚เบ”เบเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™ - loadbalancer-node . เบกเบฑเบ™เบˆเบญเบ‡เบเบฐเปเบชเป€เบซเบ”เบเบฒเบ™เบˆเบฒเบ loadbalancer-controller เปเบฅเบฐเบชเบฒเบกเบฒเบ”เบงเบฒเบ‡เปเบœเบ™เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบฐเบ–เบฒเบ™เบฐ VPP เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปเบฅเบฐเบชเบฐเบ–เบฒเบ™เบฐเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเบˆเบฒเบเบ•เบปเบงเบ„เบงเบšเบ„เบธเบก. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบดเบ”: เป€เบซเบ”เบเบฒเบ™เบˆเบฒเบ API เบกเบฒเบฎเบญเบ”เบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡, เป€เบŠเบดเปˆเบ‡เบกเบญเบšเบงเบฝเบเปƒเบซเป‰เบœเบนเป‰เบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบธเบ‚เบฐเบžเบฒเบšเป€เบžเบทเปˆเบญเบเบงเบ”เป€เบšเบดเปˆเบ‡ "เบŠเบตเบงเบดเบ”" เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™. เบงเปˆเบฒ, เปƒเบ™เบ—เบฒเบ‡เบเบฑเบšเบเบฑเบ™, เบกเบญเบšเบซเบกเบฒเบเบงเบฝเบเบ‡เบฒเบ™เปƒเบซเป‰ healthcheck-node เปเบฅเบฐเบฅเบงเบšเบฅเบงเบกเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบชเบปเปˆเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡. Loadbalancer-node เบˆเบญเบ‡เป€เบซเบ”เบเบฒเบ™เบˆเบฒเบเบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเปเบฅเบฐเบ›เปˆเบฝเบ™เบชเบฐเบ–เบฒเบ™เบฐเบ‚เบญเบ‡ VPP. เปƒเบ™เบฅเบฐเบšเบปเบšเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบ•เปˆเบฅเบฐเบšเปเบฅเบดเบเบฒเบ™เบฎเบนเป‰เบžเบฝเบ‡เปเบ•เปˆเบชเบดเปˆเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปƒเบเป‰เบ„เบฝเบ‡. เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เปเบกเปˆเบ™โ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เปเบฅเบฐโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบ‡เบฒเบ™โ€‹เปเบฅเบฐโ€‹เบเบฒเบ™โ€‹เบ‚เบฐโ€‹เบซเบเบฒเบโ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบญเบดเบ”โ€‹เบชเบฐโ€‹เบซเบผเบฐโ€‹.

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบ‚เบญเบ‡เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเปƒเบ™ Yandex.Cloud

เบšเบฑเบ™เบซเบฒเปƒเบ”เปเบ”เปˆเบ–เบทเบเบซเบผเบตเบเป€เบงเบฑเป‰เบ™?

เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เปเบปเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเปƒเบ™เบเบปเบ™เบ„เบงเบšเบ„เบธเบกเปเบกเปˆเบ™เบ‚เบฝเบ™เปƒเบ™ Go เปเบฅเบฐเบกเบตเบฅเบฑเบเบชเบฐเบ™เบฐเบเบฒเบ™เบ›เบฑเบšเบ‚เบฐเปœเบฒเบ”เบ—เบตเปˆเบ”เบต เปเบฅเบฐเบกเบตเบ„เบงเบฒเบกเปœเป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบท. Go เบกเบตเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเปเบˆเบเบขเบฒเบ. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ GRPC เบขเปˆเบฒเบ‡เบˆเบดเบ‡เบˆเบฑเบ‡, เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบฑเบ‡เปเบปเบ”เบกเบตเปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ„เบปเป‰เบ™เบžเบปเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ - เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ•เบดเบ”เบ•เบฒเบกเบเบงเบ”เบเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบกเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡ GRPC. เบชเปเบฒเบฅเบฑเบš metrics, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เปƒเบŠเป‰เบเบฒเบ™เปเบเป‰เป„เบ‚เปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”. เปƒเบ™เบเบปเบ™เบ‚เปเป‰เบกเบนเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปเบฅเบฐเบชเบฐเบซเบ‡เบงเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ: เบกเบฑเบ™เบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเบ›เบฐเบเบญเบšเบˆเบธเบ”เบขเบทเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡ VPP, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบšเบฑเบ”เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบฒเบ”เป€เบซเบผเบฑเบ.

เบšเบฑเบ™เบซเบฒเปเบฅเบฐเบเบฒเบ™เปเบเป‰เป„เบ‚

เบญเบฑเบ™เปƒเบ”เบšเปเปˆเป„เบ”เป‰เบœเบปเบ™เบ”เบต? Go เบกเบตเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”, เปเบ•เปˆเบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบผเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบเบฑเบ‡เบ„เบปเบ‡เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบงเบดเบ—เบตเบ—เบตเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเบˆเบฐเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบžเบงเบเบกเบฑเบ™เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ goroutines เปเบฅเบฐเบˆเบทเปˆเบˆเปเบฒเบ—เบตเปˆเบˆเบฐเบขเบธเบ”เบžเบงเบเบกเบฑเบ™. Takeaway: เป€เบšเบดเปˆเบ‡เบเบฒเบ™เปƒเบŠเป‰เบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเบณเบ‚เบญเบ‡เป‚เบ›เบฃเปเบเบฃเบก Go เบ‚เบญเบ‡เบ—เปˆเบฒเบ™. เป€เบฅเบทเป‰เบญเบเป†เบ•เบปเบงเบŠเบตเป‰เบงเบฑเบ”เบ—เบตเปˆเบ”เบตเปเบกเปˆเบ™เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ goroutines. เบกเบตเบšเบงเบเปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰: เปƒเบ™ Go เบกเบฑเบ™เบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™ - เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ, เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เปเบฅเปˆเบ™ goroutines, เปเบฅเบฐเบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบญเบทเปˆเบ™เป†เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ.

เบ™เบญเบเบˆเบฒเบเบ™เบตเป‰, Go เบญเบฒเบ”เบˆเบฐเบšเปเปˆเปเบกเปˆเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปเบกเปˆเบ™เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡ verbose, เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ‚เบญเบ‡ "เปเบฅเปˆเบ™เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปƒเบ™ CI เป€เบ›เบฑเบ™ batch" เปเบกเปˆเบ™เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ. เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบฅเป‰เบงเปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบ—เบตเปˆเป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™เปเบฅเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบเบฒเบ™เบซเบกเบปเบ”เป€เบงเบฅเบฒเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เบ”เป‰เบงเบเป€เบซเบ”เบœเบปเบ™เบ™เบตเป‰, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบญเบฒเบ”เบˆเบฐเบฅเบปเป‰เบกเป€เบซเบฅเบงเป€เบžเบฒเบฐเบงเปˆเบฒ CPU เบซเบเบธเป‰เบ‡เบเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบ. เบชเบฐเบซเบผเบธเบš: เบ–เป‰เบฒเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เป€เบฎเบฑเบ”เบเบฒเบ™เบ—เบปเบ”เบชเบญเบš "เบซเบ™เบฑเบ" เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบซเบ™เปˆเบงเบ. 

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเป€เบซเบ”เบเบฒเบ™ Microservice เปเบกเปˆเบ™เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™เบซเบผเบฒเบเบเปˆเบงเบฒ monolith: เบเบฒเบ™เป€เบเบฑเบšเบšเบฑเบ™เบ—เบถเบเปƒเบ™เบซเบฅเบฒเบเบชเบดเบšเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เปเบกเปˆเบ™เบšเปเปˆเบชเบฐเบ”เบงเบเบซเบผเบฒเบ. เบชเบฐเบซเบผเบธเบš: เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป€เบฎเบฑเบ”เบšเปเบฅเบดเบเบฒเบ™เบˆเบธเบฅเบฐเบžเบฒเบ, เปƒเบซเป‰เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบ—เบฑเบ™เบ—เบต.

เปเบœเบ™เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบ›เบตเบ”เบ•เบปเบงเบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบžเบฒเบเปƒเบ™, เบ•เบปเบงเบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡ IPv6, เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ„เบดเบš Kubernetes, เบชเบทเบšเบ•เปเปˆ shard เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ (เบ›เบฐเบˆเบธเบšเบฑเบ™เบกเบตเบžเบฝเบ‡เปเบ•เปˆ healthcheck-node เปเบฅเบฐ healthcheck-ctrl เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบ–เบทเบเปเบšเปˆเบ‡เบ›เบฑเบ™), เป€เบžเบตเปˆเบกเบเบฒเบ™เบเบงเบ”เบชเบธเบ‚เบฐเบžเบฒเบšเปƒเบซเบกเปˆ, เปเบฅเบฐเบเบฑเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบขเปˆเบฒเบ‡เบชเบฐเบซเบผเบฒเบ”. เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบซเบผเบฒเบเบเบงเปˆเบฒเป€เบเบปเปˆเบฒ - เป€เบžเบทเปˆเบญเปƒเบซเป‰เบžเบงเบเป€เบ‚เบปเบฒเบ•เบดเบ”เบ•เปเปˆเบชเบทเปˆเบชเบฒเบ™เบšเปเปˆเป„เบ”เป‰เป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบเบฑเบ™เปเบฅเบฐเบเบฑเบ™, เปเบ•เปˆเปƒเบŠเป‰เปเบ–เบงเบ‚เปเป‰เบ„เบงเบฒเบก. เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš SQS เป„เบ”เป‰เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™ Cloud เป€เบกเบทเปˆเบญเบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰ เปเบ–เบงเบ‚เปเป‰เบ„เบงเบฒเบก Yandex.

เบšเปเปˆเบ”เบปเบ™เบกเบฒเบ™เบตเป‰, เบเบฒเบ™เบ›เปˆเบญเบเบ•เบปเบงเบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐเบ‚เบญเบ‡ Yandex Load Balancer เป€เบเบตเบ”เบ‚เบถเป‰เบ™. เบชเบณเบซเบผเบงเบ” เป€เบญเบเบฐเบชเบฒเบ™ เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เปƒเบ™เบงเบดเบ—เบตเบ—เบตเปˆเบชเบฐเบ”เบงเบเบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™เปเบฅเบฐเป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ—เบปเบ™เบ—เบฒเบ™เบ•เปเปˆเบ„เบงเบฒเบกเบœเบดเบ”เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™