ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud

ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud
ืฉืœื•ื, ืื ื™ ืกืจื’ื™ื™ ืืœื ืฆื‘, ืื ื™ ืžืชืคืชื— ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud. ื‘ืขื‘ืจ ื”ื•ื‘ืœืชื™ ืืช ืคื™ืชื•ื— ื”ืื™ื–ื•ืŸ L7 ืœืคื•ืจื˜ืœ Yandex - ืขืžื™ืชื™ื ืžืชื‘ื“ื—ื™ื ืฉืœื ืžืฉื ื” ืžื” ืื ื™ ืขื•ืฉื”, ืžืกืชื‘ืจ ืฉื”ื•ื ืžืื–ืŸ. ืื ื™ ืื’ื™ื“ ืœืงื•ืจืื™ Habr ื›ื™ืฆื“ ืœื ื”ืœ ืืช ื”ืขื•ืžืก ื‘ืคืœื˜ืคื•ืจืžืช ืขื ืŸ, ืžื” ืื ื• ืจื•ืื™ื ื›ื›ืœื™ ื”ืื™ื“ื™ืืœื™ ืœื”ืฉื’ืช ืžื˜ืจื” ื–ื•, ื•ื›ื™ืฆื“ ืื ื• ืžืชืงื“ืžื™ื ืœืงืจืืช ื‘ื ื™ื™ืช ื”ื›ืœื™ ื”ื–ื”.

ืจืืฉื™ืช, ื‘ื•ืื• ื ืฆื™ื’ ื›ืžื” ืžื•ื ื—ื™ื:

  • VIP (Virtual IP) - ื›ืชื•ื‘ืช IP ืžืื–ื ืช
  • ืฉืจืช, ืื—ื•ืจื™, ืžื•ืคืข - ืžื›ื•ื ื” ื•ื™ืจื˜ื•ืืœื™ืช ืฉืžืจื™ืฆื” ืืคืœื™ืงืฆื™ื”
  • RIP (Real IP) - ื›ืชื•ื‘ืช IP ืฉืœ ื”ืฉืจืช
  • ื‘ื“ื™ืงืช ื‘ืจื™ืื•ืช - ื‘ื“ื™ืงืช ืžื•ื›ื ื•ืช ื”ืฉืจืช
  • Availability Zone, AZ - ืชืฉืชื™ืช ืžื‘ื•ื“ื“ืช ื‘ืžืจื›ื– ื ืชื•ื ื™ื
  • ืื–ื•ืจ - ืื™ื—ื•ื“ ืฉืœ AZs ืฉื•ื ื™ื

ืžืื–ื ื™ ืขื•ืžืกื™ื ืคื•ืชืจื™ื ืฉืœื•ืฉ ืžืฉื™ืžื•ืช ืขื™ืงืจื™ื•ืช: ื”ื ืžื‘ืฆืขื™ื ืืช ื”ืื™ื–ื•ืŸ ื‘ืขืฆืžื, ืžืฉืคืจื™ื ืืช ืกื‘ื™ืœื•ืช ื”ืชืงืœื•ืช ืฉืœ ื”ืฉื™ืจื•ืช ื•ืžืคืฉื˜ื™ื ืืช ืงื ื” ื”ืžื™ื“ื” ืฉืœื•. ืกื•ื‘ืœื ื•ืช ืชืงืœื•ืช ืžื•ื‘ื˜ื—ืช ื‘ืืžืฆืขื•ืช ื ื™ื”ื•ืœ ืชืขื‘ื•ืจื” ืื•ื˜ื•ืžื˜ื™: ื”ืžืื–ืŸ ืขื•ืงื‘ ืื—ืจ ืžืฆื‘ ื”ืืคืœื™ืงืฆื™ื” ื•ืžื•ืฆื™ื ืžืื™ื–ื•ืŸ ืžืงืจื™ื ืฉืื™ื ื ืขื•ื‘ืจื™ื ืืช ื‘ื“ื™ืงืช ื”ื—ื™ื™ื. ืงื ื” ื”ืžื™ื“ื” ืžื•ื‘ื˜ื— ืขืœ ื™ื“ื™ ื—ืœื•ืงื” ืฉื•ื•ื” ืฉืœ ื”ืขื•ืžืก ื‘ื™ืŸ ืžื•ืคืขื™ื, ื›ืžื• ื’ื ืขื“ื›ื•ืŸ ืจืฉื™ืžืช ื”ืžื•ืคืขื™ื ืชื•ืš ื›ื“ื™ ืชื ื•ืขื”. ืื ื”ืื™ื–ื•ืŸ ืื™ื ื• ืื—ื™ื“ ืžืกืคื™ืง, ื—ืœืง ืžื”ืžื•ืคืขื™ื ื™ืงื‘ืœื• ืขื•ืžืก ื”ืขื•ืœื” ืขืœ ืžื’ื‘ืœืช ื”ืงื™ื‘ื•ืœืช ืฉืœื”ื, ื•ื”ืฉื™ืจื•ืช ื™ื”ืคื•ืš ืคื—ื•ืช ืืžื™ืŸ.

ืžืื–ืŸ ืขื•ืžืกื™ื ืžืกื•ื•ื’ ืœืจื•ื‘ ืœืคื™ ืฉื›ื‘ืช ื”ืคืจื•ื˜ื•ืงื•ืœ ืžืžื•ื“ืœ ื”-OSI ืขืœื™ื• ื”ื•ื ืคื•ืขืœ. ื”-Cloud Balancer ืคื•ืขืœ ื‘ืจืžืช TCP, ื”ืชื•ืืžืช ืืช ื”ืฉื›ื‘ื” ื”ืจื‘ื™ืขื™ืช, L4.

ื‘ื•ืื• ื ืขื‘ื•ืจ ืœืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ืื™ื–ื•ืŸ ื‘ืขื ืŸ. ื ืขืœื” ื‘ื”ื“ืจื’ื” ืืช ืจืžืช ื”ืคื™ืจื•ื˜. ืื ื• ืžื—ืœืงื™ื ืืช ืžืจื›ื™ื‘ื™ ื”ืื™ื–ื•ืŸ ืœืฉืœื•ืฉื” ืžื—ืœืงื•ืช. ืžื—ืœืงืช ืžื˜ื•ืก ื”ืชืฆื•ืจื” ืื—ืจืื™ืช ืœืื™ื ื˜ืจืืงืฆื™ื” ืฉืœ ื”ืžืฉืชืžืฉ ื•ืžืื—ืกื ืช ืืช ืžืฆื‘ ื”ื™ืขื“ ืฉืœ ื”ืžืขืจื›ืช. ืžื™ืฉื•ืจ ื”ื‘ืงืจื” ืžืื—ืกืŸ ืืช ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™ ืฉืœ ื”ืžืขืจื›ืช ื•ืžื ื”ืœ ืžืขืจื›ื•ืช ืžืžื—ืœืงืช ืžื™ืฉื•ืจ ื”ื ืชื•ื ื™ื, ืืฉืจ ืื—ืจืื™ื•ืช ื™ืฉื™ืจื•ืช ืขืœ ื”ืขื‘ืจืช ืชืขื‘ื•ืจื” ืžืœืงื•ื—ื•ืช ืœืžื•ืคืขื™ื ืฉืœืš.

ืžื™ืฉื•ืจ ื ืชื•ื ื™ื

ื”ืชืขื‘ื•ืจื” ืžืกืชื™ื™ืžืช ื‘ืžื›ืฉื™ืจื™ื ื™ืงืจื™ื ื”ื ืงืจืื™ื ื ืชื‘ื™ ื’ื‘ื•ืœ. ื›ื“ื™ ืœื”ื’ื‘ื™ืจ ืืช ืกื‘ื™ืœื•ืช ื”ืชืงืœื•ืช, ืžืกืคืจ ืžื›ืฉื™ืจื™ื ื›ืืœื” ืคื•ืขืœื™ื ื‘ื•-ื–ืžื ื™ืช ื‘ืžืจื›ื– ื ืชื•ื ื™ื ืื—ื“. ืœืื—ืจ ืžื›ืŸ, ื”ืชืขื‘ื•ืจื” ืขื•ื‘ืจืช ืœืžืื–ื ื™ื, ื”ืžื›ืจื™ื–ื™ื ืขืœ ื›ืชื•ื‘ื•ืช IP ื›ืœืฉื”ืŸ ืœื›ืœ ื”-AZ ื‘ืืžืฆืขื•ืช BGP ืขื‘ื•ืจ ืœืงื•ื—ื•ืช. 

ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud

ื”ืชื ื•ืขื” ืžื•ืขื‘ืจืช ื“ืจืš ECMP - ื–ื•ื”ื™ ืืกื˜ืจื˜ื’ื™ื™ืช ื ื™ืชื•ื‘ ืœืคื™ื” ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืžืกืคืจ ืžืกืœื•ืœื™ื ื˜ื•ื‘ื™ื ื‘ืื•ืชื” ืžื™ื“ื” ืืœ ื”ื™ืขื“ (ื‘ืžืงืจื” ืฉืœื ื•, ื”ื™ืขื“ ื™ื”ื™ื” ื›ืชื•ื‘ืช ื”-IP ืฉืœ ื”ื™ืขื“) ื•ื ื™ืชืŸ ืœืฉืœื•ื— ืžื ื•ืช ืœืื•ืจืš ื›ืœ ืื—ื“ ืžื”ื. ื›ืžื• ื›ืŸ, ืื ื• ืชื•ืžื›ื™ื ื‘ืขื‘ื•ื“ื” ื‘ืžืกืคืจ ืื–ื•ืจื™ ื–ืžื™ื ื•ืช ืœืคื™ ื”ืกื›ืžื” ื”ื‘ืื”: ืื ื• ืžืคืจืกืžื™ื ื›ืชื•ื‘ืช ื‘ื›ืœ ืื–ื•ืจ, ื”ืชื ื•ืขื” ืžื’ื™ืขื” ืœืžืงื•ื ื”ืงืจื•ื‘ ื•ืื™ื ื” ื—ื•ืจื’ืช ืžื’ื‘ื•ืœื•ืชื™ื”. ื‘ื”ืžืฉืš ื”ืคื•ืกื˜ ื ื‘ื—ืŸ ื‘ื™ืชืจ ืคื™ืจื•ื˜ ืžื” ืงื•ืจื” ืœืชื ื•ืขื”.

ืžื˜ื•ืก ืชืฆื•ืจื”

 
ืžืจื›ื™ื‘ ื”ืžืคืชื— ืฉืœ ืžื™ืฉื•ืจ ื”ืชืฆื•ืจื” ื”ื•ื ื”-API, ืฉื‘ืืžืฆืขื•ืชื• ืžืชื‘ืฆืขื•ืช ืคืขื•ืœื•ืช ื‘ืกื™ืกื™ื•ืช ืขื ืžืื–ื ื™ื: ื™ืฆื™ืจื”, ืžื—ื™ืงื”, ืฉื™ื ื•ื™ ื”ืจื›ื‘ ื”ืžื•ืคืขื™ื, ืงื‘ืœืช ืชื•ืฆืื•ืช ื‘ื“ื™ืงื•ืช ื‘ืจื™ืื•ืช ื•ื›ื•'. ืžืฆื“ ืื—ื“, ื–ื”ื• REST API, ื•ืžืฆื“ ืื—ื“. ืื—ืจ, ืื ื—ื ื• ื‘ืขื ืŸ ืžืฉืชืžืฉื™ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืžืื•ื“ ื‘ืžืกื’ืจืช gRPC, ืื– ืื ื—ื ื• "ืžืชืจื’ืžื™ื" REST ืœ-gRPC ื•ืื– ืžืฉืชืžืฉื™ื ืจืง ื‘-gRPC. ื›ืœ ื‘ืงืฉื” ืžื•ื‘ื™ืœื” ืœื™ืฆื™ืจืช ืกื“ืจื” ืฉืœ ืžืฉื™ืžื•ืช ื-ืกื™ื ื›ืจื•ื ื™ื•ืช ืื“ืžื•ืžื™ื•ืช ื”ืžื‘ื•ืฆืขื•ืช ื‘ืžืื’ืจ ืžืฉื•ืชืฃ ืฉืœ ืขื•ื‘ื“ื™ Yandex.Cloud. ืžืฉื™ืžื•ืช ื›ืชื•ื‘ื•ืช ื‘ืฆื•ืจื” ื›ื–ื• ืฉื ื™ืชืŸ ืœื”ืฉืขื•ืช ืื•ืชืŸ ื‘ื›ืœ ืขืช ื•ืื– ืœื”ืคืขื™ืœ ืื•ืชืŸ ืžื—ื“ืฉ. ื–ื” ืžื‘ื˜ื™ื— ืžื“ืจื’ื™ื•ืช, ื—ื–ืจืชื™ื•ืช ื•ืจื™ืฉื•ื ืคืขื•ืœื•ืช.

ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud

ื›ืชื•ืฆืื” ืžื›ืš, ื”ืžืฉื™ืžื” ืžื”-API ืชื‘ืฆืข ื‘ืงืฉื” ืœื‘ืงืจ ืฉื™ืจื•ืช ื”ืื™ื–ื•ืŸ, ืืฉืจ ื›ืชื•ื‘ื” ื‘-Go. ื–ื” ื™ื›ื•ืœ ืœื”ื•ืกื™ืฃ ื•ืœื”ืกื™ืจ ืžืื–ื ื™ื, ืœืฉื ื•ืช ืืช ื”ื”ืจื›ื‘ ืฉืœ backends ื•ื”ื’ื“ืจื•ืช. 

ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud

ื”ืฉื™ืจื•ืช ืžืื—ืกืŸ ืืช ืžืฆื‘ื• ื‘-Yandex Database, ืžืกื“ ื ืชื•ื ื™ื ืžื ื•ื”ืœ ืžื‘ื•ื–ืจ ืฉื‘ื• ืชื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ืงืจื•ื‘. ื‘-Yandex.Cloud, ื›ืžื• ื›ื‘ืจ ืกื™ืคืจ, ืชืคื™ืกืช ื”ืžื–ื•ืŸ ืœื›ืœื‘ื™ื ื—ืœื”: ืื ืื ื—ื ื• ื‘ืขืฆืžื ื• ืžืฉืชืžืฉื™ื ื‘ืฉื™ืจื•ืชื™ื ื•, ืื– ื’ื ื”ืœืงื•ื—ื•ืช ืฉืœื ื• ื™ืฉืžื—ื• ืœื”ืฉืชืžืฉ ื‘ื”ื. ืžืกื“ ื”ื ืชื•ื ื™ื ืฉืœ Yandex ื”ื•ื ื“ื•ื’ืžื” ืœื™ื™ืฉื•ื ืžื•ืฉื’ ื›ื–ื”. ืื ื—ื ื• ืžืื—ืกื ื™ื ืืช ื›ืœ ื”ื ืชื•ื ื™ื ืฉืœื ื• ื‘-YDB, ื•ืื ื—ื ื• ืœื ืฆืจื™ื›ื™ื ืœื—ืฉื•ื‘ ืขืœ ืชื—ื–ื•ืงื” ื•ืงื ื” ืžื™ื“ื” ืฉืœ ืžืกื“ ื”ื ืชื•ื ื™ื: ื”ื‘ืขื™ื•ืช ื”ืืœื” ื ืคืชืจื•ืช ืขื‘ื•ืจื ื•, ืื ื—ื ื• ืžืฉืชืžืฉื™ื ื‘ืžืกื“ ื”ื ืชื•ื ื™ื ื›ืฉื™ืจื•ืช.

ื ื—ื–ื•ืจ ืœื‘ืงืจ ื”ืื™ื–ื•ืŸ. ื”ืžืฉื™ืžื” ืฉืœื• ื”ื™ื ืœืฉืžื•ืจ ืžื™ื“ืข ืขืœ ื”ืžืื–ืŸ ื•ืœืฉืœื•ื— ืžืฉื™ืžื” ืœื‘ื“ื™ืงืช ืžื•ื›ื ื•ืช ื”ืžื›ื•ื ื” ื”ื•ื™ืจื˜ื•ืืœื™ืช ืœื‘ืงืจ ื”- Healthcheck.

ื‘ืงืจ ื‘ื“ื™ืงืช ื‘ืจื™ืื•ืช

ื”ื•ื ืžืงื‘ืœ ื‘ืงืฉื•ืช ืœืฉื™ื ื•ื™ ื›ืœืœื™ ื‘ื“ื™ืงื”, ืฉื•ืžืจ ืื•ืชื ื‘-YDB, ืžืคื™ืฅ ืžืฉื™ืžื•ืช ื‘ื™ืŸ ืฆืžืชื™ื ืœื‘ื“ื™ืงื•ืช ื‘ืจื™ืื•ืช ื•ืžืฆื‘ืจ ืืช ื”ืชื•ืฆืื•ืช, ืฉื ืฉืžืจื•ืช ืœืื—ืจ ืžื›ืŸ ื‘ืžืกื“ ื”ื ืชื•ื ื™ื ื•ื ืฉืœื—ื•ืช ืœื‘ืงืจ ื”ืขื•ืžืก. ื”ื•ื, ื‘ืชื•ืจื•, ืฉื•ืœื— ื‘ืงืฉื” ืœืฉื ื•ืช ืืช ื”ืจื›ื‘ ื”ืืฉื›ื•ืœ ื‘ืžื™ืฉื•ืจ ื”ื ืชื•ื ื™ื ืœ-loadbalancer-node, ืขืœื™ื• ืื“ื•ืŸ ื‘ื”ืžืฉืš.

ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud

ื‘ื•ืื• ื ื“ื‘ืจ ื™ื•ืชืจ ืขืœ ื‘ื“ื™ืงื•ืช ื‘ืจื™ืื•ืช. ื ื™ืชืŸ ืœื—ืœืง ืื•ืชื ืœืžืกืคืจ ื›ื™ืชื•ืช. ืœื‘ื™ืงื•ืจื•ืช ื™ืฉ ืงืจื™ื˜ืจื™ื•ื ื™ื ืฉื•ื ื™ื ืœื”ืฆืœื—ื”. ื‘ื“ื™ืงื•ืช TCP ืฆืจื™ื›ื•ืช ืœื™ืฆื•ืจ ื—ื™ื‘ื•ืจ ื‘ื”ืฆืœื—ื” ื‘ืชื•ืš ืคืจืง ื–ืžืŸ ืงื‘ื•ืข. ื‘ื“ื™ืงื•ืช HTTP ื“ื•ืจืฉื•ืช ื’ื ื—ื™ื‘ื•ืจ ืžื•ืฆืœื— ื•ื’ื ืชื’ื•ื‘ื” ืขื ืงื•ื“ ืกื˜ื˜ื•ืก 200.

ื›ืžื• ื›ืŸ, ื”ืฆ'ืงื™ื ื ื‘ื“ืœื™ื ื‘ืกื•ื’ ื”ืชื‘ื™ืขื” - ื”ื ืืงื˜ื™ื‘ื™ื™ื ื•ืคืกื™ื‘ื™ื™ื. ื‘ื“ื™ืงื•ืช ืคืกื™ื‘ื™ื•ืช ืคืฉื•ื˜ ืขื•ืงื‘ื•ืช ืื—ืจ ืžื” ืฉืงื•ืจื” ื‘ืชื ื•ืขื” ืžื‘ืœื™ ืœื ืงื•ื˜ ื‘ืคืขื•ืœื” ืžื™ื•ื—ื“ืช. ื–ื” ืœื ืขื•ื‘ื“ ื›ืœ ื›ืš ื˜ื•ื‘ ื‘-L4 ื›ื™ ื–ื” ืชืœื•ื™ ื‘ืœื•ื’ื™ืงื” ืฉืœ ื”ืคืจื•ื˜ื•ืงื•ืœื™ื ื‘ืจืžื” ื’ื‘ื•ื”ื” ื™ื•ืชืจ: ื‘-L4 ืื™ืŸ ืžื™ื“ืข ืขืœ ื›ืžื” ื–ืžืŸ ืœืงื— ื”ืคืขื•ืœื” ืื• ืื ื”ืฉืœืžืช ื”ื—ื™ื‘ื•ืจ ื”ื™ื™ืชื” ื˜ื•ื‘ื” ืื• ื’ืจื•ืขื”. ื‘ื“ื™ืงื•ืช ืืงื˜ื™ื‘ื™ื•ืช ืžื—ื™ื™ื‘ื•ืช ืืช ื”ืžืื–ืŸ ืœืฉืœื•ื— ื‘ืงืฉื•ืช ืœื›ืœ ืžื•ืคืข ืฉืจืช.

ืจื•ื‘ ืžืื–ื ื™ ื”ืขื•ืžืก ืžื‘ืฆืขื™ื ื‘ื“ื™ืงื•ืช ื—ื™ื™ื ื‘ืขืฆืžื. ื‘-Cloud ื”ื—ืœื˜ื ื• ืœื”ืคืจื™ื“ ื‘ื™ืŸ ื—ืœืงื™ื ืืœื” ืฉืœ ื”ืžืขืจื›ืช ื›ื“ื™ ืœื”ื’ื‘ื™ืจ ืืช ื”ืžื“ืจื’ื™ื•ืช. ื’ื™ืฉื” ื–ื• ืชืืคืฉืจ ืœื ื• ืœื”ื’ื“ื™ืœ ืืช ืžืกืคืจ ื”ืื™ื–ื•ื ื™ื ืชื•ืš ืฉืžื™ืจื” ืขืœ ืžืกืคืจ ื‘ืงืฉื•ืช ื”ื‘ืจื™ืื•ืช ืœืฉื™ืจื•ืช. ื”ื‘ื“ื™ืงื•ืช ืžื‘ื•ืฆืขื•ืช ืขืœ ื™ื“ื™ ืฆืžืชื™ื ื ืคืจื“ื™ื ืฉืœ ื‘ื“ื™ืงืช ื‘ืจื™ืื•ืช, ืฉืœืจื•ื—ื‘ ืžื˜ืจื•ืช ื”ื‘ื“ื™ืงื” ืžื—ื•ืœืงื•ืช ื•ืžืฉื•ื›ืคืœื•ืช. ืื™ื ืš ื™ื›ื•ืœ ืœื‘ืฆืข ื‘ื“ื™ืงื•ืช ืžืืจื— ืื—ื“, ืžื›ื™ื•ื•ืŸ ืฉื”ื•ื ืขืœื•ืœ ืœื”ื™ื›ืฉืœ. ืื– ืœื ื ืงื‘ืœ ืืช ืžืฆื‘ ื”ืžืงืจื™ื ืฉื”ื•ื ื‘ื“ืง. ืื ื• ืžื‘ืฆืขื™ื ื‘ื“ื™ืงื•ืช ื‘ื›ืœ ืื—ื“ ืžื”ืžื•ืคืขื™ื ืžืฉืœื•ืฉื” ืฆืžืชื™ื ืฉืœ ื‘ื“ื™ืงืช ื‘ืจื™ืื•ืช ืœืคื—ื•ืช. ืื ื• ืžื—ืœืงื™ื ืืช ืžื˜ืจื•ืช ื”ื‘ื“ื™ืงื•ืช ื‘ื™ืŸ ืฆืžืชื™ื ื‘ืืžืฆืขื•ืช ืืœื’ื•ืจื™ืชืžื™ ื’ื™ื‘ื•ื‘ ืขืงื‘ื™ื™ื.

ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud

ื”ืคืจื“ืช ืื™ื–ื•ืŸ ื•ื‘ื“ื™ืงืช ื‘ืจื™ืื•ืช ื™ื›ื•ืœื” ืœื”ื•ื‘ื™ืœ ืœื‘ืขื™ื•ืช. ืื ืฆื•ืžืช ื”- Healthcheck ืžื’ื™ืฉ ื‘ืงืฉื•ืช ืœืžื•ืคืข, ืขื•ืงืฃ ืืช ื”ืื™ื–ื•ืŸ (ืฉืœื ืžืฉืจืช ื›ืจื’ืข ืชืขื‘ื•ืจื”), ืื– ื ื•ืฆืจ ืžืฆื‘ ืžื•ื–ืจ: ื ืจืื” ืฉื”ืžืฉืื‘ ื—ื™, ืื‘ืœ ื”ืชืขื‘ื•ืจื” ืœื ืชื’ื™ืข ืืœื™ื•. ืื ื—ื ื• ืคื•ืชืจื™ื ืืช ื”ื‘ืขื™ื” ื”ื–ื• ื‘ื“ืจืš ื–ื•: ืžื•ื‘ื˜ื— ืœื ื• ืœื™ื–ื•ื ืชืขื‘ื•ืจืช ื‘ื“ื™ืงืช ื‘ืจื™ืื•ืช ื“ืจืš ืžืื–ื ื™ื. ื‘ืžื™ืœื™ื ืื—ืจื•ืช, ื”ืชื•ื›ื ื™ืช ืœื”ืขื‘ืจืช ืžื ื•ืช ืขื ืชืขื‘ื•ืจื” ืžืœืงื•ื—ื•ืช ื•ืžื‘ื“ื™ืงื•ืช ื‘ืจื™ืื•ืช ืฉื•ื ื” ื‘ืื•ืคืŸ ืžื™ื ื™ืžืœื™: ื‘ืฉื ื™ ื”ืžืงืจื™ื, ื”ื—ื‘ื™ืœื•ืช ื™ื’ื™ืขื• ืœืžืื–ื ื™ื, ืฉื™ืขื‘ื™ืจื• ืื•ืชืŸ ืœืžืฉืื‘ื™ ื”ื™ืขื“.

ื”ื”ื‘ื“ืœ ื”ื•ื ืฉืœืงื•ื—ื•ืช ืžื’ื™ืฉื™ื ื‘ืงืฉื•ืช ืœ-VIP, ื‘ืขื•ื“ ืฉื‘ื“ื™ืงื•ืช ื‘ืจื™ืื•ืช ืžื’ื™ืฉื•ืช ื‘ืงืฉื•ืช ืœื›ืœ RIP ื‘ื ืคืจื“. ืžืชืขื•ืจืจืช ื›ืืŸ ื‘ืขื™ื” ืžืขื ื™ื™ื ืช: ืื ื• ื ื•ืชื ื™ื ืœืžืฉืชืžืฉื™ื ืฉืœื ื• ืืช ื”ื”ื–ื“ืžื ื•ืช ืœื™ืฆื•ืจ ืžืฉืื‘ื™ื ื‘ืจืฉืชื•ืช IP ืืคื•ืจื•ืช. ื‘ื•ืื• ื ื“ืžื™ื™ืŸ ืฉื™ืฉ ืฉื ื™ ื‘ืขืœื™ ืขื ืŸ ืฉื•ื ื™ื ืฉื”ืกืชื™ืจื• ืืช ื”ืฉื™ืจื•ืชื™ื ืฉืœื”ื ืžืื—ื•ืจื™ ืื™ื–ื•ื ื™ื. ืœื›ืœ ืื—ื“ ืžื”ื ื™ืฉ ืžืฉืื‘ื™ื ื‘ืจืฉืช ื”ืžืฉื ื” 10.0.0.1/24, ืขื ืื•ืชืŸ ื›ืชื•ื‘ื•ืช. ืืชื” ืฆืจื™ืš ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืื™ื›ืฉื”ื• ืœื”ื‘ื—ื™ืŸ ื‘ื™ื ื™ื”ื, ื•ื›ืืŸ ืืชื” ืฆืจื™ืš ืœืฆืœื•ืœ ืœืชื•ืš ื”ืžื‘ื ื” ืฉืœ ื”ืจืฉืช ื”ื•ื™ืจื˜ื•ืืœื™ืช Yandex.Cloud. ืขื“ื™ืฃ ืœื‘ืจืจ ืคืจื˜ื™ื ื ื•ืกืคื™ื ื‘ ืกืจื˜ื•ืŸ ืžืื™ืจื•ืข about:cloud, ื—ืฉื•ื‘ ืœื ื• ื›ืขืช ืฉื”ืจืฉืช ื”ื™ื ืจื‘-ืฉื›ื‘ืชื™ืช ื•ื‘ืขืœืช ืžื ื”ืจื•ืช ืฉื ื™ืชืŸ ืœื”ื‘ื—ื™ืŸ ื‘ื”ืŸ ืœืคื™ ืžื–ื”ื” ืจืฉืช ืžืฉื ื”.

ืฆืžืชื™ Healthcheck ื™ื•ืฆืจื™ื ืงืฉืจ ืขื ืžืื–ื ื™ื ื‘ืืžืฆืขื•ืช ืžื” ืฉื ืงืจื ื›ืชื•ื‘ื•ืช ืžืขื™ืŸ IPv6. ืžืขื™ืŸ-ื›ืชื•ื‘ืช ื”ื™ื ื›ืชื•ื‘ืช IPv6 ืขื ื›ืชื•ื‘ืช IPv4 ื•ืžื–ื”ื” ืจืฉืช ืžืฉื ื” ืฉืœ ื”ืžืฉืชืžืฉ ืžื•ื˜ืžืขื™ื ื‘ืชื•ื›ื”. ื”ืชืขื‘ื•ืจื” ืžื’ื™ืขื” ืœืžืื–ืŸ, ืฉืžื—ืœืฅ ืžืžื ื• ืืช ื›ืชื•ื‘ืช ืžืฉืื‘ ื”-IPv4, ืžื—ืœื™ืฃ ืืช ื”-IPv6 ื‘-IPv4 ื•ืฉื•ืœื— ืืช ื”ื—ื‘ื™ืœื” ืœืจืฉืช ืฉืœ ื”ืžืฉืชืžืฉ.

ื”ืชืขื‘ื•ืจื” ื”ื”ืคื•ื›ื” ืžืชื ื”ืœืช ื‘ืื•ืชื” ื“ืจืš: ื”ืžืื–ืŸ ืจื•ืื” ืฉื”ื™ืขื“ ื”ื•ื ืจืฉืช ืืคื•ืจื” ืžื‘ื“ื™ืงืช ื‘ืจื™ืื•ืช, ื•ืžืžื™ืจ IPv4 ืœ-IPv6.

VPP - ื”ืœื‘ ืฉืœ ืžื™ืฉื•ืจ ื”ื ืชื•ื ื™ื

ื”ืื™ื–ื•ืŸ ืžื™ื•ืฉื ื‘ืืžืฆืขื•ืช ื˜ื›ื ื•ืœื•ื’ื™ื™ืช Vector Packet Processing (VPP), ืžืกื’ืจืช ืžื‘ื™ืช ืกื™ืกืงื• ืœืขื™ื‘ื•ื“ ืืฆื•ื•ื” ืฉืœ ืชืขื‘ื•ืจืช ืจืฉืช. ื‘ืžืงืจื” ืฉืœื ื•, ื”ืžืกื’ืจืช ืคื•ืขืœืช ืขืœ ื’ื‘ื™ ืกืคืจื™ื™ืช ื ื™ื”ื•ืœ ื”ืชืงื ื™ ื”ืจืฉืช ืฉืœ ืžืจื—ื‘ ื”ืžืฉืชืžืฉ - Data Plane Development Kit (DPDK). ื–ื” ืžื‘ื˜ื™ื— ื‘ื™ืฆื•ืขื™ ืขื™ื‘ื•ื“ ืžื ื•ืช ื’ื‘ื•ื”ื™ื: ื”ืจื‘ื” ืคื—ื•ืช ืคืกื™ืงื•ืช ืžืชืจื—ืฉื•ืช ื‘ืœื™ื‘ื”, ื•ืื™ืŸ ืžืขื‘ืจื™ ื”ืงืฉืจ ื‘ื™ืŸ ืžืจื—ื‘ ื”ืงืจื ืœ ืœืžืจื—ื‘ ื”ืžืฉืชืžืฉ. 

VPP ื”ื•ืœืš ืืคื™ืœื• ืจื—ื•ืง ื™ื•ืชืจ ื•ืกื•ื—ื˜ ืขื•ื“ ื™ื•ืชืจ ื‘ื™ืฆื•ืขื™ื ืžื”ืžืขืจื›ืช ืขืœ ื™ื“ื™ ืฉื™ืœื•ื‘ ื—ื‘ื™ืœื•ืช ืœืืฆื•ื•ืช. ื”ืฉื™ืคื•ืจ ื‘ื‘ื™ืฆื•ืขื™ื ื ื•ื‘ืข ืžื”ืฉื™ืžื•ืฉ ื”ืื’ืจืกื™ื‘ื™ ืฉืœ ืžื˜ืžื•ื ื™ื ื‘ืžืขื‘ื“ื™ื ืžื•ื“ืจื ื™ื™ื. ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืฉื ื™ ืžื˜ืžื•ื ื™ ื ืชื•ื ื™ื (ืžื ื•ืช ืžืขื•ื‘ื“ื•ืช ื‘"ื•ืงื˜ื•ืจื™ื", ื”ื ืชื•ื ื™ื ืงืจื•ื‘ื™ื ื–ื” ืœื–ื”) ื•ื‘ืžื˜ืžื•ื ื™ ื”ื•ืจืื•ืช: ื‘-VPP, ืขื™ื‘ื•ื“ ืžื ื•ืช ืขื•ืงื‘ ืื—ืจ ื’ืจืฃ, ืฉื”ืฆืžืชื™ื ืฉืœื• ืžื›ื™ืœื™ื ืคื•ื ืงืฆื™ื•ืช ืฉืžื‘ืฆืขื•ืช ืืช ืื•ืชื” ืžืฉื™ืžื”.

ืœื“ื•ื’ืžื”, ื”ืขื™ื‘ื•ื“ ืฉืœ ืžื ื•ืช IP ื‘-VPP ืžืชืจื—ืฉ ื‘ืกื“ืจ ื”ื‘ื: ืจืืฉื™ืช, ื›ื•ืชืจื•ืช ื”ื—ื‘ื™ืœื•ืช ืžื ื•ืชื—ื•ืช ื‘ืฆื•ืžืช ื”ื ื™ืชื•ื—, ื•ืœืื—ืจ ืžื›ืŸ ื”ืŸ ื ืฉืœื—ื•ืช ืœืฆื•ืžืช, ืฉืžืขื‘ื™ืจ ืืช ื”ื—ื‘ื™ืœื•ืช ื”ืœืื” ืœืคื™ ื˜ื‘ืœืื•ืช ื ื™ืชื•ื‘.

ืงืฆืช ื”ืืจื“ืงื•ืจ. ืžื—ื‘ืจื™ VPP ืื™ื ื ืกื•ื‘ืœื™ื ืคืฉืจื•ืช ื‘ืฉื™ืžื•ืฉ ื‘ืžื˜ืžื•ื ื™ื ืฉืœ ืžืขื‘ื“, ื•ืœื›ืŸ ืงื•ื“ ื˜ื™ืคื•ืกื™ ืœืขื™ื‘ื•ื“ ื•ืงื˜ื•ืจ ืฉืœ ืžื ื•ืช ืžื›ื™ืœ ื•ืงื˜ื•ืจื™ื–ืฆื™ื” ื™ื“ื ื™ืช: ื™ืฉ ืœื•ืœืืช ืขื™ื‘ื•ื“ ืฉื‘ื” ืžืขื•ื‘ื“ ืžืฆื‘ ื›ืžื• "ื™ืฉ ืœื ื• ืืจื‘ืข ืžื ื•ืช ื‘ืชื•ืจ", ื•ืื– ื–ื”ื” ืœืฉื ื™ื™ื, ื•ืื– - ืœืื—ื“. ื”ื•ืจืื•ืช ืื—ื–ื•ืจ ืžืจืืฉ ืžืฉืžืฉื•ืช ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืœื˜ืขื™ื ืช ื ืชื•ื ื™ื ืœืชื•ืš ืžื˜ืžื•ื ื™ื ื›ื“ื™ ืœื”ืื™ืฅ ืืช ื”ื’ื™ืฉื” ืืœื™ื”ื ื‘ืื™ื˜ืจืฆื™ื•ืช ื”ื‘ืื•ืช.

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. ื–ื” ื ืขืฉื” ืขืœ ื™ื“ื™ ืฆื•ืžืช ื‘ื’ืจืฃ, ืฉืื ื• ืงื•ืจืื™ื ืœื• NAT ืืœื’ื•ืจื™ืชืžื™. ืขื‘ื•ืจ ืชืขื‘ื•ืจื” ื”ืคื•ื›ื” (ื•ื”ืžืจื” ืž-IPv6 ืœ-IPv4) ืงื™ื™ื ืื•ืชื• ืฆื•ืžืช NAT ืืœื’ื•ืจื™ืชืžื™.

ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud

ืชืขื‘ื•ืจื” ื™ืฉื™ืจื” ืžืœืงื•ื—ื•ืช ื”ืื™ื–ื•ืŸ ืขื•ื‘ืจืช ื“ืจืš ืฆืžืชื™ ื”ื’ืจืฃ, ืฉืžื‘ืฆืขื™ื ืืช ื”ืื™ื–ื•ืŸ ื‘ืขืฆืžื•. 

ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud

ื”ืฆื•ืžืช ื”ืจืืฉื•ืŸ ื”ื•ื ื”ืคืขืœื•ืช ื“ื‘ื™ืงื•ืช. ื–ื” ืžืื—ืกืŸ ืืช ื”-hash ืฉืœ 5-ื˜ื•ืคืœ ืœืžืคื’ืฉื™ื ืžื‘ื•ืกืกื™ื. 5-tuple ื›ื•ืœืœ ืืช ื”ื›ืชื•ื‘ืช ื•ื”ื™ืฆื™ืื” ืฉืœ ื”ืœืงื•ื— ืฉืžืžื ื• ืžื•ืขื‘ืจ ืžื™ื“ืข, ืืช ื”ื›ืชื•ื‘ืช ื•ื”ื™ืฆื™ืื•ืช ืฉืœ ืžืฉืื‘ื™ื ื”ื–ืžื™ื ื™ื ืœืงื‘ืœืช ืชืขื‘ื•ืจื”, ื›ืžื• ื’ื ืืช ืคืจื•ื˜ื•ืงื•ืœ ื”ืจืฉืช. 

ื”-hash 5-tuple ืขื•ื–ืจ ืœื ื• ืœื‘ืฆืข ืคื—ื•ืช ื—ื™ืฉื•ื‘ ื‘ืฆืžืช ื”-hashing ื”ืขืงื‘ื™ืช ืฉืœืื—ืจ ืžื›ืŸ, ื›ืžื• ื’ื ืœื˜ืคืœ ื˜ื•ื‘ ื™ื•ืชืจ ื‘ืฉื™ื ื•ื™ื™ื ื‘ืจืฉื™ืžืช ื”ืžืฉืื‘ื™ื ืžืื—ื•ืจื™ ื”ืžืื–ืŸ. ื›ืืฉืจ ื—ื‘ื™ืœื” ืฉืขื‘ื•ืจื” ืื™ืŸ ืกืฉืŸ ืžื’ื™ืขื” ืœืžืื–ืŸ, ื”ื™ื ื ืฉืœื—ืช ืœืฆื•ืžืช ื”ื’ื™ื‘ื•ื‘ ื”ืขืงื‘ื™ืช. ื–ื” ื”ืžืงื•ื ืฉื‘ื• ืžืชืจื—ืฉ ืื™ื–ื•ืŸ ื‘ืืžืฆืขื•ืช hashing ืขืงื‘ื™: ืื ื• ื‘ื•ื—ืจื™ื ืžืฉืื‘ ืžืจืฉื™ืžืช ื”ืžืฉืื‘ื™ื ื”"ื—ื™ื™ื" ื”ื–ืžื™ื ื™ื. ืœืื—ืจ ืžื›ืŸ, ื”ื—ื‘ื™ืœื•ืช ื ืฉืœื—ื•ืช ืœืฆื•ืžืช NAT, ืืฉืจ ืœืžืขืฉื” ืžื—ืœื™ืฃ ืืช ื›ืชื•ื‘ืช ื”ื™ืขื“ ื•ืžื—ืฉื‘ ืžื—ื“ืฉ ืืช ืกื›ื•ืžื™ ื”ื‘ื“ื™ืงื”. ื›ืคื™ ืฉืืชื” ื™ื›ื•ืœ ืœืจืื•ืช, ืื ื• ืขื•ืงื‘ื™ื ืื—ืจ ื”ื›ืœืœื™ื ืฉืœ VPP - ื›ืžื• ืœืื”ื•ื‘, ืžืงื‘ืฆื™ื ื—ื™ืฉื•ื‘ื™ื ื“ื•ืžื™ื ื›ื“ื™ ืœื”ื’ื‘ื™ืจ ืืช ื”ื™ืขื™ืœื•ืช ืฉืœ ืžื˜ืžื•ื ื™ ืžืขื‘ื“.

ื’ื™ื‘ื•ื‘ ืขืงื‘ื™

ืœืžื” ื‘ื—ืจื ื• ื‘ื–ื” ื•ืžื” ื–ื” ื‘ื›ืœืœ? ืจืืฉื™ืช, ื‘ื•ืื• ื ื‘ื—ืŸ ืืช ื”ืžืฉื™ืžื” ื”ืงื•ื“ืžืช - ื‘ื—ื™ืจืช ืžืฉืื‘ ืžื”ืจืฉื™ืžื”. 

ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud

ืขื hashing ืœื ืขืงื‘ื™, ื”-hash ืฉืœ ื”ื—ื‘ื™ืœื” ื”ื ื›ื ืกืช ืžื—ื•ืฉื‘, ื•ืžืฉืื‘ ื ื‘ื—ืจ ืžื”ืจืฉื™ืžื” ืขืœ ื™ื“ื™ ืฉืืจ ื—ืœืงื™ ื”-hash ื”ื–ื” ื‘ืžืกืคืจ ื”ืžืฉืื‘ื™ื. ื›ืœ ืขื•ื“ ื”ืจืฉื™ืžื” ื ืฉืืจืช ืœืœื ืฉื™ื ื•ื™, ืกื›ื™ืžื” ื–ื• ืคื•ืขืœืช ื”ื™ื˜ื‘: ืื ื• ืชืžื™ื“ ืฉื•ืœื—ื™ื ืžื ื•ืช ืขื ืื•ืชื• 5-tuple ืœืื•ืชื• ืžื•ืคืข. ืื, ืœืžืฉืœ, ืžืฉืื‘ ื›ืœืฉื”ื• ื”ืคืกื™ืง ืœื”ื’ื™ื‘ ืœื‘ื“ื™ืงื•ืช ื‘ืจื™ืื•ืช, ืื– ืขื‘ื•ืจ ื—ืœืง ื ื™ื›ืจ ืžื”-hash ื”ื‘ื—ื™ืจื” ืชืฉืชื ื”. ื—ื™ื‘ื•ืจื™ ื”-TCP ืฉืœ ื”ืœืงื•ื— ื™ื ื•ืชืงื•: ืžื ื” ืฉื”ื’ื™ืขื” ื‘ืขื‘ืจ ืœืžื•ืคืข A ืขืฉื•ื™ื” ืœื”ืชื—ื™ืœ ืœื”ื’ื™ืข ืœืžื•ืคืข B, ืฉืื™ื ื• ืžื›ื™ืจ ืืช ื”ื”ืคืขืœื” ืฉืœ ืžื ื” ื–ื•.

Hahing ืขืงื‘ื™ ืคื•ืชืจ ืืช ื”ื‘ืขื™ื” ื”ืžืชื•ืืจืช. ื”ื“ืจืš ื”ืงืœื” ื‘ื™ื•ืชืจ ืœื”ืกื‘ื™ืจ ืืช ื”ืžื•ืฉื’ ื”ื–ื” ื”ื™ื ื–ื•: ื“ืžื™ื™ื ื• ืฉื™ืฉ ืœื›ื ื˜ื‘ืขืช ืฉืืœื™ื” ืืชื ืžื—ืœืงื™ื ืžืฉืื‘ื™ื ืœืคื™ hash (ืœื“ื•ื’ืžื”, ืœืคื™ IP:port). ื‘ื—ื™ืจืช ืžืฉืื‘ ื”ื™ื ืกื™ื‘ื•ื‘ ื”ื’ืœื’ืœ ื‘ื–ื•ื•ื™ืช, ืืฉืจ ื ืงื‘ืขืช ืขืœ ื™ื“ื™ ื”-hash ืฉืœ ื”ื—ื‘ื™ืœื”.

ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud

ื–ื” ืžืžื–ืขืจ ืืช ื—ืœื•ืงืช ื”ืชื ื•ืขื” ืžื—ื“ืฉ ื›ืืฉืจ ื”ืจื›ื‘ ื”ืžืฉืื‘ื™ื ืžืฉืชื ื”. ืžื—ื™ืงืช ืžืฉืื‘ ืชืฉืคื™ืข ืจืง ืขืœ ื”ื—ืœืง ืฉืœ ื˜ื‘ืขืช ื”ื’ื™ื‘ื•ื‘ ื”ืขืงื‘ื™ืช ืฉื‘ื• ื ืžืฆื ื”ืžืฉืื‘. ื”ื•ืกืคืช ืžืฉืื‘ ืžืฉื ื” ื’ื ืืช ื”ื”ืคืฆื”, ืื‘ืœ ื™ืฉ ืœื ื• ืฆื•ืžืช ื”ืคืขืœื•ืช ื“ื‘ื™ืง, ืฉืžืืคืฉืจ ืœื ื• ืœื ืœื”ื—ืœื™ืฃ ืกืฉื ื™ื ืฉื›ื‘ืจ ื”ื•ืงืžื” ืœืžืฉืื‘ื™ื ื—ื“ืฉื™ื.

ื‘ื“ืงื ื• ืžื” ืงื•ืจื” ืœืชืขื‘ื•ืจื” ื™ืฉื™ืจื” ื‘ื™ืŸ ื”ืžืื–ืŸ ืœืžืฉืื‘ื™ื. ืขื›ืฉื™ื• ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืชื ื•ืขื” ื—ื•ื–ืจืช. ื–ื” ืขื•ืงื‘ ืื—ืจ ืื•ืชื• ื“ืคื•ืก ื›ืžื• ืชืขื‘ื•ืจืช ื‘ื“ื™ืงื” - ื“ืจืš NAT ืืœื’ื•ืจื™ืชืžื™, ื›ืœื•ืžืจ ื“ืจืš NAT 44 ื”ืคื•ื›ื” ืขื‘ื•ืจ ืชืขื‘ื•ืจืช ืœืงื•ื— ื•ื“ืจืš NAT 46 ืขื‘ื•ืจ ืชืขื‘ื•ืจืช ื‘ื“ื™ืงื•ืช ื‘ืจื™ืื•ืช. ืื ื• ืžืฆื™ื™ืชื™ื ืœืชื›ื ื™ืช ืžืฉืœื ื•: ืื ื• ืžืื—ื“ื™ื ืชื ื•ืขื” ืฉืœ ื‘ื“ื™ืงื•ืช ื‘ืจื™ืื•ืช ื•ืชื ื•ืขืช ืžืฉืชืžืฉื™ื ืืžื™ืชื™ืช.

ืื™ื–ื•ืŸ ืขื•ืžืกื™ื-ืฆื•ืžืช ื•ืจื›ื™ื‘ื™ื ืžื•ืจื›ื‘ื™ื

ื”ืจื›ื‘ ื”ืื™ื–ื•ื ื™ื ื•ื”ืžืฉืื‘ื™ื ื‘-VPP ืžื“ื•ื•ื— ืขืœ ื™ื“ื™ ื”ืฉื™ืจื•ืช ื”ืžืงื•ืžื™ - loadbalancer-node. ื”ื•ื ื ืจืฉื ืœื–ืจื ื”ืื™ืจื•ืขื™ื ืžืžืื–ืŸ ื”ืขื•ืžืก-ื‘ืงืจ ื•ืžืกื•ื’ืœ ืœืฉืจื˜ื˜ ืืช ื”ื”ื‘ื“ืœ ื‘ื™ืŸ ืžืฆื‘ ื”-VPP ื”ื ื•ื›ื—ื™ ืœื‘ื™ืŸ ืžืฆื‘ ื”ื™ืขื“ ื”ืžืชืงื‘ืœ ืžื”ื‘ืงืจ. ืื ื—ื ื• ืžืงื‘ืœื™ื ืžืขืจื›ืช ืกื’ื•ืจื”: ืื™ืจื•ืขื™ื ืžื”-API ืžื’ื™ืขื™ื ืœื‘ืงืจ ื”ืื™ื–ื•ืŸ, ืฉืžืงืฆื” ืžืฉื™ืžื•ืช ืœื‘ืงืจ ื”-Healthcheck ื›ื“ื™ ืœื‘ื“ื•ืง ืืช "ื—ื™ื™ื•ืช" ื”ืžืฉืื‘ื™ื. ื–ื”, ื‘ืชื•ืจื•, ืžืงืฆื” ืžืฉื™ืžื•ืช ืœ- Healthcheck-node ื•ืžืฆื‘ื™ืจื” ืืช ื”ืชื•ืฆืื•ืช, ื•ืœืื—ืจ ืžื›ืŸ ื”ื•ื ืฉื•ืœื— ืื•ืชืŸ ื‘ื—ื–ืจื” ืœื‘ืงืจ ื”ืžืื–ืŸ. Loadbalancer-node ื ืจืฉื ืœืื™ืจื•ืขื™ื ืžื”ื‘ืงืจ ื•ืžืฉื ื” ืืช ืžืฆื‘ ื”-VPP. ื‘ืžืขืจื›ืช ื›ื–ื•, ื›ืœ ืฉื™ืจื•ืช ื™ื•ื“ืข ืจืง ืžื” ื ื—ื•ืฅ ืœื’ื‘ื™ ืฉื™ืจื•ืชื™ื ืฉื›ื ื™ื. ืžืกืคืจ ื”ื—ื™ื‘ื•ืจื™ื ืžื•ื’ื‘ืœ ื•ื™ืฉ ืœื ื• ืืช ื”ื™ื›ื•ืœืช ืœื”ืคืขื™ืœ ื•ืœื”ืจื—ื™ื‘ ืงื˜ืขื™ื ืฉื•ื ื™ื ื‘ืื•ืคืŸ ืขืฆืžืื™.

ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ืžืื–ืŸ ืขื•ืžืกื™ื ื‘ืจืฉืช ื‘-Yandex.Cloud

ืื™ืœื• ื‘ืขื™ื•ืช ื ืžื ืขื•?

ื›ืœ ื”ืฉื™ืจื•ืชื™ื ืฉืœื ื• ื‘ืžื™ืฉื•ืจ ื”ื‘ืงืจื” ื›ืชื•ื‘ื™ื ื‘-Go ื•ื‘ืขืœื™ ืžืืคื™ื™ื ื™ ืงื ื” ืžื™ื“ื” ื•ืืžื™ื ื•ืช ื˜ื•ื‘ื™ื. ืœ-Go ื™ืฉ ืกืคืจื™ื•ืช ืงื•ื“ ืคืชื•ื— ืจื‘ื•ืช ืœื‘ื ื™ื™ืช ืžืขืจื›ื•ืช ืžื‘ื•ื–ืจื•ืช. ืื ื• ืžืฉืชืžืฉื™ื ื‘ืื•ืคืŸ ืคืขื™ืœ ื‘-GRPC, ื›ืœ ื”ืจื›ื™ื‘ื™ื ืžื›ื™ืœื™ื ื”ื˜ืžืขืช ืงื•ื“ ืคืชื•ื— ืฉืœ ื’ื™ืœื•ื™ ืฉื™ืจื•ืช - ื”ืฉื™ืจื•ืชื™ื ืฉืœื ื• ืขื•ืงื‘ื™ื ืื—ืจ ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ื–ื”, ื™ื›ื•ืœื™ื ืœืฉื ื•ืช ืืช ื”ื”ืจื›ื‘ ืฉืœื”ื ื‘ืื•ืคืŸ ื“ื™ื ืžื™, ื•ืงืฉืจื ื• ื–ืืช ืขื ืื™ื–ื•ืŸ GRPC. ืขื‘ื•ืจ ืžื“ื“ื™ื, ืื ื• ืžืฉืชืžืฉื™ื ื’ื ื‘ืคืชืจื•ืŸ ืงื•ื“ ืคืชื•ื—. ื‘ืžื™ืฉื•ืจ ื”ื ืชื•ื ื™ื ืงื™ื‘ืœื ื• ื‘ื™ืฆื•ืขื™ื ื ืื•ืชื™ื ื•ืขืชื•ื“ืช ืžืฉืื‘ื™ื ื’ื“ื•ืœื”: ื”ืชื‘ืจืจ ืฉืงืฉื” ืžืื•ื“ ืœื”ืจื›ื™ื‘ ืžืขืžื“ ืฉืขืœื™ื• ื ื•ื›ืœ ืœื”ืกืชืžืš ืขืœ ื‘ื™ืฆื•ืขื™ื ืฉืœ VPP, ื•ืœื ืขืœ ื›ืจื˜ื™ืก ืจืฉืช ื‘ืจื–ืœ.

ื‘ืขื™ื•ืช ื•ืคืชืจื•ื ื•ืช

ืžื” ืœื ืขื‘ื“ ื›ืœ ื›ืš ื˜ื•ื‘? ืœ-Go ื™ืฉ ื ื™ื”ื•ืœ ื–ื™ื›ืจื•ืŸ ืื•ื˜ื•ืžื˜ื™, ืื‘ืœ ื“ืœื™ืคื•ืช ื–ื™ื›ืจื•ืŸ ืขื“ื™ื™ืŸ ืžืชืจื—ืฉื•ืช. ื”ื“ืจืš ื”ืงืœื” ื‘ื™ื•ืชืจ ืœื”ืชืžื•ื“ื“ ืื™ืชื ื”ื™ื ืœื”ืคืขื™ืœ ื’ืจื•ื˜ื™ื ื™ื ื•ืœื–ื›ื•ืจ ืœื”ืคืกื™ืง ืื•ืชื. Takeaway: ืฆืคื• ื‘ืฆืจื™ื›ืช ื”ื–ื™ื›ืจื•ืŸ ืฉืœ ืชื•ื›ื ื™ื•ืช ื”-Go ืฉืœื›ื. ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืื™ื ื“ื™ืงื˜ื•ืจ ื˜ื•ื‘ ื”ื•ื ืžืกืคืจ ื”ื’ื•ืจื•ื˜ื™ืŸ. ื™ืฉ ื™ืชืจื•ืŸ ื‘ืกื™ืคื•ืจ ื”ื–ื”: ื‘-Go ืงืœ ืœืงื‘ืœ ื ืชื•ื ื™ ื–ืžืŸ ืจื™ืฆื” - ืฆืจื™ื›ืช ื–ื™ื›ืจื•ืŸ, ืžืกืคืจ ื”ื’ื•ืจื•ื˜ื™ืŸ ื”ืคื•ืขืœื™ื ื•ืคืจืžื˜ืจื™ื ืจื‘ื™ื ืื—ืจื™ื.

ื›ืžื• ื›ืŸ, Go ืื•ืœื™ ืœื ื”ื‘ื—ื™ืจื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ืขื‘ื•ืจ ื‘ื“ื™ืงื•ืช ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช. ื”ื ื“ื™ ืžื™ืœื•ืœื™ื™ื, ื•ื”ื’ื™ืฉื” ื”ืกื˜ื ื“ืจื˜ื™ืช ืฉืœ "ืœื”ืจื™ืฅ ื”ื›ืœ ื‘-CI ื‘ืืฆื•ื•ื”" ืœื ืžืื•ื“ ืžืชืื™ืžื” ืœื”ื. ื”ืขื•ื‘ื“ื” ื”ื™ื ืฉื‘ื“ื™ืงื•ืช ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื“ื•ืจืฉื•ืช ืžืฉืื‘ื™ื ื™ื•ืชืจ ื•ื’ื•ืจืžื•ืช ืœืคืกืงื™ ื–ืžืŸ ืืžื™ืชื™ื™ื. ื‘ื’ืœืœ ื–ื”, ื‘ื“ื™ืงื•ืช ืขืœื•ืœื•ืช ืœื”ื™ื›ืฉืœ ืžื›ื™ื•ื•ืŸ ืฉื”-CPU ืขืกื•ืง ื‘ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื•ืช. ืžืกืงื ื”: ื‘ืžื™ื“ืช ื”ืืคืฉืจ, ื‘ืฆืข ื‘ื“ื™ืงื•ืช "ื›ื‘ื“ื•ืช" ื‘ื ืคืจื“ ืžื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื”. 

ืืจื›ื™ื˜ืงื˜ื•ืจืช ืื™ืจื•ืขื™ื ืฉืœ Microservice ืžื•ืจื›ื‘ืช ื™ื•ืชืจ ืžืžื•ื ื•ืœื™ื˜: ืื™ืกื•ืฃ ื™ื•ืžื ื™ื ื‘ืขืฉืจื•ืช ืžื›ื•ื ื•ืช ืฉื•ื ื•ืช ืื™ื ื• ื ื•ื— ื‘ืžื™ื•ื—ื“. ืžืกืงื ื”: ืื ืืชื” ืžื™ื™ืฆืจ ืฉื™ืจื•ืชื™ ืžื™ืงืจื•, ืชื—ืฉื•ื‘ ืžื™ื“ ืขืœ ืžืขืงื‘.

ื”ืชื›ื ื™ื•ืช ืฉืœื ื•

ื ืฉื™ืง ืื™ื–ื•ืŸ ืคื ื™ืžื™, ืื™ื–ื•ืŸ IPv6, ื ื•ืกื™ืฃ ืชืžื™ื›ื” ื‘ืกืงืจื™ืคื˜ื™ื ืฉืœ Kubernetes, ื ืžืฉื™ืš ืœืจืกื™ืก ืืช ื”ืฉื™ืจื•ืชื™ื ืฉืœื ื• (ื›ืจื’ืข ืจืง healthcheck-node ื•-healthcheck-ctrl ืžืจื•ืกืงื™ื), ื ื•ืกื™ืฃ ื‘ื“ื™ืงื•ืช ื‘ืจื™ืื•ืช ื—ื“ืฉื•ืช, ื•ื’ื ื ื˜ืžื™ืข ืฆื‘ื™ืจื” ื—ื›ืžื” ืฉืœ ื‘ื“ื™ืงื•ืช. ืื ื• ืฉื•ืงืœื™ื ืืคืฉืจื•ืช ืœื”ืคื•ืš ืืช ื”ืฉื™ืจื•ืชื™ื ืฉืœื ื• ืœืขืฆืžืื™ื™ื ืขื•ื“ ื™ื•ืชืจ - ื›ืš ืฉื”ื ืžืชืงืฉืจื™ื ืœื ื™ืฉื™ืจื•ืช ืื—ื“ ืขื ื”ืฉื ื™, ืืœื ื‘ืืžืฆืขื•ืช ืชื•ืจ ื”ื•ื“ืขื•ืช. ืฉื™ืจื•ืช ืชื•ืื SQS ื”ื•ืคื™ืข ืœืื—ืจื•ื ื” ื‘ืขื ืŸ ืชื•ืจ ื”ื•ื“ืขื•ืช ืฉืœ Yandex.

ืœืื—ืจื•ื ื” ื”ืชืงื™ื™ืžื” ื”ื”ืคืฆื” ื”ืคื•ืžื‘ื™ืช ืฉืœ Yandex Load Balancer. ืœึทื—ืงื•ึนืจ ืชื™ืขื•ื“ ืœืฉื™ืจื•ืช, ื ื”ืœ ืžืื–ื ื™ื ื‘ืฆื•ืจื” ื ื•ื—ื” ืœืš ื•ื”ื’ื‘ืจ ืืช ืกื•ื‘ืœื ื•ืช ื”ืชืงืœื•ืช ืฉืœ ื”ืคืจื•ื™ืงื˜ื™ื ืฉืœืš!

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”