ืฉืืื, ืื ื ืกืจืืื ืืื ืฆื, ืื ื ืืชืคืชื
ืจืืฉืืช, ืืืื ื ืฆืื ืืื ืืื ืืื:
- VIP (Virtual IP) - ืืชืืืช IP ืืืื ืช
- ืฉืจืช, ืืืืจื, ืืืคืข - ืืืื ื ืืืจืืืืืืช ืฉืืจืืฆื ืืคืืืงืฆืื
- RIP (Real IP) - ืืชืืืช IP ืฉื ืืฉืจืช
- ืืืืงืช ืืจืืืืช - ืืืืงืช ืืืื ืืช ืืฉืจืช
- Availability Zone, AZ - ืชืฉืชืืช ืืืืืืช ืืืจืื ื ืชืื ืื
- ืืืืจ - ืืืืื ืฉื AZs ืฉืื ืื
ืืืื ื ืขืืืกืื ืคืืชืจืื ืฉืืืฉ ืืฉืืืืช ืขืืงืจืืืช: ืื ืืืฆืขืื ืืช ืืืืืื ืืขืฆืื, ืืฉืคืจืื ืืช ืกืืืืืช ืืชืงืืืช ืฉื ืืฉืืจืืช ืืืคืฉืืื ืืช ืงื ื ืืืืื ืฉืื. ืกืืืื ืืช ืชืงืืืช ืืืืืืช ืืืืฆืขืืช ื ืืืื ืชืขืืืจื ืืืืืืื: ืืืืื ืขืืงื ืืืจ ืืฆื ืืืคืืืงืฆืื ืืืืฆืื ืืืืืื ืืงืจืื ืฉืืื ื ืขืืืจืื ืืช ืืืืงืช ืืืืื. ืงื ื ืืืืื ืืืืื ืขื ืืื ืืืืงื ืฉืืื ืฉื ืืขืืืก ืืื ืืืคืขืื, ืืื ืื ืขืืืื ืจืฉืืืช ืืืืคืขืื ืชืื ืืื ืชื ืืขื. ืื ืืืืืื ืืื ื ืืืื ืืกืคืืง, ืืืง ืืืืืคืขืื ืืงืืื ืขืืืก ืืขืืื ืขื ืืืืืช ืืงืืืืืช ืฉืืื, ืืืฉืืจืืช ืืืคืื ืคืืืช ืืืื.
ืืืื ืขืืืกืื ืืกืืื ืืจืื ืืคื ืฉืืืช ืืคืจืืืืงืื ืืืืื ื-OSI ืขืืื ืืื ืคืืขื. ื-Cloud Balancer ืคืืขื ืืจืืช TCP, ืืชืืืืช ืืช ืืฉืืื ืืจืืืขืืช, L4.
ืืืื ื ืขืืืจ ืืกืงืืจื ืืืืืช ืฉื ืืจืืืืงืืืจืช ืืืืืื ืืขื ื. ื ืขืื ืืืืจืื ืืช ืจืืช ืืคืืจืื. ืื ื ืืืืงืื ืืช ืืจืืืื ืืืืืื ืืฉืืืฉื ืืืืงืืช. ืืืืงืช ืืืืก ืืชืฆืืจื ืืืจืืืช ืืืื ืืจืืงืฆืื ืฉื ืืืฉืชืืฉ ืืืืืกื ืช ืืช ืืฆื ืืืขื ืฉื ืืืขืจืืช. ืืืฉืืจ ืืืงืจื ืืืืกื ืืช ืืืฆื ืื ืืืื ืฉื ืืืขืจืืช ืืื ืื ืืขืจืืืช ืืืืืงืช ืืืฉืืจ ืื ืชืื ืื, ืืฉืจ ืืืจืืืืช ืืฉืืจืืช ืขื ืืขืืจืช ืชืขืืืจื ืืืงืืืืช ืืืืคืขืื ืฉืื.
ืืืฉืืจ ื ืชืื ืื
ืืชืขืืืจื ืืกืชืืืืช ืืืืฉืืจืื ืืงืจืื ืื ืงืจืืื ื ืชืื ืืืื. ืืื ืืืืืืจ ืืช ืกืืืืืช ืืชืงืืืช, ืืกืคืจ ืืืฉืืจืื ืืืื ืคืืขืืื ืื-ืืื ืืช ืืืจืื ื ืชืื ืื ืืื. ืืืืจ ืืื, ืืชืขืืืจื ืขืืืจืช ืืืืื ืื, ืืืืจืืืื ืขื ืืชืืืืช IP ืืืฉืื ืืื ื-AZ ืืืืฆืขืืช BGP ืขืืืจ ืืงืืืืช.
ืืชื ืืขื ืืืขืืจืช ืืจื ECMP - ืืืื ืืกืืจืืืืืช ื ืืชืื ืืคืื ืืืืืื ืืืืืช ืืกืคืจ ืืกืืืืื ืืืืื ืืืืชื ืืืื ืื ืืืขื (ืืืงืจื ืฉืื ื, ืืืขื ืืืื ืืชืืืช ื-IP ืฉื ืืืขื) ืื ืืชื ืืฉืืื ืื ืืช ืืืืจื ืื ืืื ืืื. ืืื ืื, ืื ื ืชืืืืื ืืขืืืื ืืืกืคืจ ืืืืจื ืืืื ืืช ืืคื ืืกืืื ืืืื: ืื ื ืืคืจืกืืื ืืชืืืช ืืื ืืืืจ, ืืชื ืืขื ืืืืขื ืืืงืื ืืงืจืื ืืืื ื ืืืจืืช ืืืืืืืชืื. ืืืืฉื ืืคืืกื ื ืืื ืืืชืจ ืคืืจืื ืื ืงืืจื ืืชื ืืขื.
ืืืืก ืชืฆืืจื
ืืจืืื ืืืคืชื ืฉื ืืืฉืืจ ืืชืฆืืจื ืืื ื-API, ืฉืืืืฆืขืืชื ืืชืืฆืขืืช ืคืขืืืืช ืืกืืกืืืช ืขื ืืืื ืื: ืืฆืืจื, ืืืืงื, ืฉืื ืื ืืจืื ืืืืคืขืื, ืงืืืช ืชืืฆืืืช ืืืืงืืช ืืจืืืืช ืืื'. ืืฆื ืืื, ืืื REST API, ืืืฆื ืืื. ืืืจ, ืื ืื ื ืืขื ื ืืฉืชืืฉืื ืืขืชืื ืงืจืืืืช ืืืื ืืืกืืจืช gRPC, ืื ืื ืื ื "ืืชืจืืืื" REST ื-gRPC ืืื ืืฉืชืืฉืื ืจืง ื-gRPC. ืื ืืงืฉื ืืืืืื ืืืฆืืจืช ืกืืจื ืฉื ืืฉืืืืช ื-ืกืื ืืจืื ืืืช ืืืืืืืืช ืืืืืฆืขืืช ืืืืืจ ืืฉืืชืฃ ืฉื ืขืืืื Yandex.Cloud. ืืฉืืืืช ืืชืืืืช ืืฆืืจื ืืื ืฉื ืืชื ืืืฉืขืืช ืืืชื ืืื ืขืช ืืื ืืืคืขืื ืืืชื ืืืืฉ. ืื ืืืืื ืืืจืืืืช, ืืืจืชืืืช ืืจืืฉืื ืคืขืืืืช.
ืืชืืฆืื ืืื, ืืืฉืืื ืื-API ืชืืฆืข ืืงืฉื ืืืงืจ ืฉืืจืืช ืืืืืื, ืืฉืจ ืืชืืื ื-Go. ืื ืืืื ืืืืกืืฃ ืืืืกืืจ ืืืื ืื, ืืฉื ืืช ืืช ืืืจืื ืฉื backends ืืืืืจืืช.
ืืฉืืจืืช ืืืืกื ืืช ืืฆืื ื-Yandex Database, ืืกื ื ืชืื ืื ืื ืืื ืืืืืจ ืฉืื ืชืืื ืืืฉืชืืฉ ืืงืจืื. ื-Yandex.Cloud, ืืื ืืืจ
ื ืืืืจ ืืืงืจ ืืืืืื. ืืืฉืืื ืฉืื ืืื ืืฉืืืจ ืืืืข ืขื ืืืืื ืืืฉืืื ืืฉืืื ืืืืืงืช ืืืื ืืช ืืืืื ื ืืืืจืืืืืืช ืืืงืจ ื- Healthcheck.
ืืงืจ ืืืืงืช ืืจืืืืช
ืืื ืืงืื ืืงืฉืืช ืืฉืื ืื ืืืื ืืืืงื, ืฉืืืจ ืืืชื ื-YDB, ืืคืืฅ ืืฉืืืืช ืืื ืฆืืชืื ืืืืืงืืช ืืจืืืืช ืืืฆืืจ ืืช ืืชืืฆืืืช, ืฉื ืฉืืจืืช ืืืืจ ืืื ืืืกื ืื ืชืื ืื ืื ืฉืืืืช ืืืงืจ ืืขืืืก. ืืื, ืืชืืจื, ืฉืืื ืืงืฉื ืืฉื ืืช ืืช ืืจืื ืืืฉืืื ืืืืฉืืจ ืื ืชืื ืื ื-loadbalancer-node, ืขืืื ืืืื ืืืืฉื.
ืืืื ื ืืืจ ืืืชืจ ืขื ืืืืงืืช ืืจืืืืช. ื ืืชื ืืืืง ืืืชื ืืืกืคืจ ืืืชืืช. ืืืืงืืจืืช ืืฉ ืงืจืืืจืืื ืื ืฉืื ืื ืืืฆืืื. ืืืืงืืช TCP ืฆืจืืืืช ืืืฆืืจ ืืืืืจ ืืืฆืืื ืืชืื ืคืจืง ืืื ืงืืืข. ืืืืงืืช HTTP ืืืจืฉืืช ืื ืืืืืจ ืืืฆืื ืืื ืชืืืื ืขื ืงืื ืกืืืืก 200.
ืืื ืื, ืืฆ'ืงืื ื ืืืืื ืืกืื ืืชืืืขื - ืื ืืงืืืืืื ืืคืกืืืืื. ืืืืงืืช ืคืกืืืืืช ืคืฉืื ืขืืงืืืช ืืืจ ืื ืฉืงืืจื ืืชื ืืขื ืืืื ืื ืงืื ืืคืขืืื ืืืืืืช. ืื ืื ืขืืื ืื ืื ืืื ื-L4 ืื ืื ืชืืื ืืืืืืงื ืฉื ืืคืจืืืืงืืืื ืืจืื ืืืืื ืืืชืจ: ื-L4 ืืื ืืืืข ืขื ืืื ืืื ืืงื ืืคืขืืื ืื ืื ืืฉืืืช ืืืืืืจ ืืืืชื ืืืื ืื ืืจืืขื. ืืืืงืืช ืืงืืืืืืช ืืืืืืืช ืืช ืืืืื ืืฉืืื ืืงืฉืืช ืืื ืืืคืข ืฉืจืช.
ืจืื ืืืื ื ืืขืืืก ืืืฆืขืื ืืืืงืืช ืืืื ืืขืฆืื. ื-Cloud ืืืืื ื ืืืคืจืื ืืื ืืืงืื ืืื ืฉื ืืืขืจืืช ืืื ืืืืืืจ ืืช ืืืืจืืืืช. ืืืฉื ืื ืชืืคืฉืจ ืื ื ืืืืืื ืืช ืืกืคืจ ืืืืืื ืื ืชืื ืฉืืืจื ืขื ืืกืคืจ ืืงืฉืืช ืืืจืืืืช ืืฉืืจืืช. ืืืืืงืืช ืืืืฆืขืืช ืขื ืืื ืฆืืชืื ื ืคืจืืื ืฉื ืืืืงืช ืืจืืืืช, ืฉืืจืืื ืืืจืืช ืืืืืงื ืืืืืงืืช ืืืฉืืืคืืืช. ืืื ื ืืืื ืืืฆืข ืืืืงืืช ืืืจื ืืื, ืืืืืื ืฉืืื ืขืืื ืืืืืฉื. ืื ืื ื ืงืื ืืช ืืฆื ืืืงืจืื ืฉืืื ืืืง. ืื ื ืืืฆืขืื ืืืืงืืช ืืื ืืื ืืืืืคืขืื ืืฉืืืฉื ืฆืืชืื ืฉื ืืืืงืช ืืจืืืืช ืืคืืืช. ืื ื ืืืืงืื ืืช ืืืจืืช ืืืืืงืืช ืืื ืฆืืชืื ืืืืฆืขืืช ืืืืืจืืชืื ืืืืื ืขืงืืืื.
ืืคืจืืช ืืืืื ืืืืืงืช ืืจืืืืช ืืืืื ืืืืืื ืืืขืืืช. ืื ืฆืืืช ื- Healthcheck ืืืืฉ ืืงืฉืืช ืืืืคืข, ืขืืงืฃ ืืช ืืืืืื (ืฉืื ืืฉืจืช ืืจืืข ืชืขืืืจื), ืื ื ืืฆืจ ืืฆื ืืืืจ: ื ืจืื ืฉืืืฉืื ืื, ืืื ืืชืขืืืจื ืื ืชืืืข ืืืื. ืื ืื ื ืคืืชืจืื ืืช ืืืขืื ืืื ืืืจื ืื: ืืืืื ืื ื ืืืืื ืชืขืืืจืช ืืืืงืช ืืจืืืืช ืืจื ืืืื ืื. ืืืืืื ืืืจืืช, ืืชืืื ืืช ืืืขืืจืช ืื ืืช ืขื ืชืขืืืจื ืืืงืืืืช ืืืืืืงืืช ืืจืืืืช ืฉืื ื ืืืืคื ืืื ืืืื: ืืฉื ื ืืืงืจืื, ืืืืืืืช ืืืืขื ืืืืื ืื, ืฉืืขืืืจื ืืืชื ืืืฉืืื ืืืขื.
ืืืืื ืืื ืฉืืงืืืืช ืืืืฉืื ืืงืฉืืช ื-VIP, ืืขืื ืฉืืืืงืืช ืืจืืืืช ืืืืฉืืช ืืงืฉืืช ืืื RIP ืื ืคืจื. ืืชืขืืจืจืช ืืื ืืขืื ืืขื ืืื ืช: ืื ื ื ืืชื ืื ืืืฉืชืืฉืื ืฉืื ื ืืช ืืืืืื ืืช ืืืฆืืจ ืืฉืืืื ืืจืฉืชืืช IP ืืคืืจืืช. ืืืื ื ืืืืื ืฉืืฉ ืฉื ื ืืขืื ืขื ื ืฉืื ืื ืฉืืกืชืืจื ืืช ืืฉืืจืืชืื ืฉืืื ืืืืืจื ืืืืื ืื. ืืื ืืื ืืื ืืฉ ืืฉืืืื ืืจืฉืช ืืืฉื ื 10.0.0.1/24, ืขื ืืืชื ืืชืืืืช. ืืชื ืฆืจืื ืืืืืช ืืกืืื ืืืืฉืื ืืืืืื ืืื ืืื, ืืืื ืืชื ืฆืจืื ืืฆืืื ืืชืื ืืืื ื ืฉื ืืจืฉืช ืืืืจืืืืืืช Yandex.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 ืืืืืจืืชืื.
ืชืขืืืจื ืืฉืืจื ืืืงืืืืช ืืืืืื ืขืืืจืช ืืจื ืฆืืชื ืืืจืฃ, ืฉืืืฆืขืื ืืช ืืืืืื ืืขืฆืื.
ืืฆืืืช ืืจืืฉืื ืืื ืืคืขืืืช ืืืืงืืช. ืื ืืืืกื ืืช ื-hash ืฉื
ื-hash 5-tuple ืขืืืจ ืื ื ืืืฆืข ืคืืืช ืืืฉืื ืืฆืืช ื-hashing ืืขืงืืืช ืฉืืืืจ ืืื, ืืื ืื ืืืคื ืืื ืืืชืจ ืืฉืื ืืืื ืืจืฉืืืช ืืืฉืืืื ืืืืืจื ืืืืื. ืืืฉืจ ืืืืื ืฉืขืืืจื ืืื ืกืฉื ืืืืขื ืืืืื, ืืื ื ืฉืืืช ืืฆืืืช ืืืืืื ืืขืงืืืช. ืื ืืืงืื ืฉืื ืืชืจืืฉ ืืืืื ืืืืฆืขืืช hashing ืขืงืื: ืื ื ืืืืจืื ืืฉืื ืืจืฉืืืช ืืืฉืืืื ื"ืืืื" ืืืืื ืื. ืืืืจ ืืื, ืืืืืืืช ื ืฉืืืืช ืืฆืืืช NAT, ืืฉืจ ืืืขืฉื ืืืืืฃ ืืช ืืชืืืช ืืืขื ืืืืฉื ืืืืฉ ืืช ืกืืืื ืืืืืงื. ืืคื ืฉืืชื ืืืื ืืจืืืช, ืื ื ืขืืงืืื ืืืจ ืืืืืื ืฉื VPP - ืืื ืืืืื, ืืงืืฆืื ืืืฉืืืื ืืืืื ืืื ืืืืืืจ ืืช ืืืขืืืืช ืฉื ืืืืื ื ืืขืื.
ืืืืื ืขืงืื
ืืื ืืืจื ื ืืื ืืื ืื ืืืื? ืจืืฉืืช, ืืืื ื ืืื ืืช ืืืฉืืื ืืงืืืืช - ืืืืจืช ืืฉืื ืืืจืฉืืื.
ืขื hashing ืื ืขืงืื, ื-hash ืฉื ืืืืืื ืื ืื ืกืช ืืืืฉื, ืืืฉืื ื ืืืจ ืืืจืฉืืื ืขื ืืื ืฉืืจ ืืืงื ื-hash ืืื ืืืกืคืจ ืืืฉืืืื. ืื ืขืื ืืจืฉืืื ื ืฉืืจืช ืืื ืฉืื ืื, ืกืืืื ืื ืคืืขืืช ืืืื: ืื ื ืชืืื ืฉืืืืื ืื ืืช ืขื ืืืชื 5-tuple ืืืืชื ืืืคืข. ืื, ืืืฉื, ืืฉืื ืืืฉืื ืืคืกืืง ืืืืื ืืืืืงืืช ืืจืืืืช, ืื ืขืืืจ ืืืง ื ืืืจ ืื-hash ืืืืืจื ืชืฉืชื ื. ืืืืืจื ื-TCP ืฉื ืืืงืื ืื ืืชืงื: ืื ื ืฉืืืืขื ืืขืืจ ืืืืคืข A ืขืฉืืื ืืืชืืื ืืืืืข ืืืืคืข B, ืฉืืื ื ืืืืจ ืืช ืืืคืขืื ืฉื ืื ื ืื.
Hahing ืขืงืื ืคืืชืจ ืืช ืืืขืื ืืืชืืืจืช. ืืืจื ืืงืื ืืืืชืจ ืืืกืืืจ ืืช ืืืืฉื ืืื ืืื ืื: ืืืืื ื ืฉืืฉ ืืื ืืืขืช ืฉืืืื ืืชื ืืืืงืื ืืฉืืืื ืืคื hash (ืืืืืื, ืืคื IP:port). ืืืืจืช ืืฉืื ืืื ืกืืืื ืืืืื ืืืืืืช, ืืฉืจ ื ืงืืขืช ืขื ืืื ื-hash ืฉื ืืืืืื.
ืื ืืืืขืจ ืืช ืืืืงืช ืืชื ืืขื ืืืืฉ ืืืฉืจ ืืจืื ืืืฉืืืื ืืฉืชื ื. ืืืืงืช ืืฉืื ืชืฉืคืืข ืจืง ืขื ืืืืง ืฉื ืืืขืช ืืืืืื ืืขืงืืืช ืฉืื ื ืืฆื ืืืฉืื. ืืืกืคืช ืืฉืื ืืฉื ื ืื ืืช ืืืคืฆื, ืืื ืืฉ ืื ื ืฆืืืช ืืคืขืืืช ืืืืง, ืฉืืืคืฉืจ ืื ื ืื ืืืืืืฃ ืกืฉื ืื ืฉืืืจ ืืืงืื ืืืฉืืืื ืืืฉืื.
ืืืงื ื ืื ืงืืจื ืืชืขืืืจื ืืฉืืจื ืืื ืืืืื ืืืฉืืืื. ืขืืฉืื ืืืื ื ืกืชืื ืขื ืชื ืืขื ืืืืจืช. ืื ืขืืงื ืืืจ ืืืชื ืืคืืก ืืื ืชืขืืืจืช ืืืืงื - ืืจื NAT ืืืืืจืืชืื, ืืืืืจ ืืจื NAT 44 ืืคืืื ืขืืืจ ืชืขืืืจืช ืืงืื ืืืจื NAT 46 ืขืืืจ ืชืขืืืจืช ืืืืงืืช ืืจืืืืช. ืื ื ืืฆืืืชืื ืืชืื ืืช ืืฉืื ื: ืื ื ืืืืืื ืชื ืืขื ืฉื ืืืืงืืช ืืจืืืืช ืืชื ืืขืช ืืฉืชืืฉืื ืืืืชืืช.
ืืืืื ืขืืืกืื-ืฆืืืช ืืจืืืืื ืืืจืืืื
ืืจืื ืืืืืื ืื ืืืืฉืืืื ื-VPP ืืืืื ืขื ืืื ืืฉืืจืืช ืืืงืืื - loadbalancer-node. ืืื ื ืจืฉื ืืืจื ืืืืจืืขืื ืืืืื ืืขืืืก-ืืงืจ ืืืกืืื ืืฉืจืื ืืช ืืืืื ืืื ืืฆื ื-VPP ืื ืืืื ืืืื ืืฆื ืืืขื ืืืชืงืื ืืืืงืจ. ืื ืื ื ืืงืืืื ืืขืจืืช ืกืืืจื: ืืืจืืขืื ืื-API ืืืืขืื ืืืงืจ ืืืืืื, ืฉืืงืฆื ืืฉืืืืช ืืืงืจ ื-Healthcheck ืืื ืืืืืง ืืช "ืืืืืช" ืืืฉืืืื. ืื, ืืชืืจื, ืืงืฆื ืืฉืืืืช ื- Healthcheck-node ืืืฆืืืจื ืืช ืืชืืฆืืืช, ืืืืืจ ืืื ืืื ืฉืืื ืืืชื ืืืืจื ืืืงืจ ืืืืื. Loadbalancer-node ื ืจืฉื ืืืืจืืขืื ืืืืงืจ ืืืฉื ื ืืช ืืฆื ื-VPP. ืืืขืจืืช ืืื, ืื ืฉืืจืืช ืืืืข ืจืง ืื ื ืืืฅ ืืืื ืฉืืจืืชืื ืฉืื ืื. ืืกืคืจ ืืืืืืจืื ืืืืื ืืืฉ ืื ื ืืช ืืืืืืช ืืืคืขืื ืืืืจืืื ืงืืขืื ืฉืื ืื ืืืืคื ืขืฆืืื.
ืืืื ืืขืืืช ื ืื ืขื?
ืื ืืฉืืจืืชืื ืฉืื ื ืืืืฉืืจ ืืืงืจื ืืชืืืื ื-Go ืืืขืื ืืืคืืื ื ืงื ื ืืืื ืืืืื ืืช ืืืืื. ื-Go ืืฉ ืกืคืจืืืช ืงืื ืคืชืื ืจืืืช ืืื ืืืช ืืขืจืืืช ืืืืืจืืช. ืื ื ืืฉืชืืฉืื ืืืืคื ืคืขืื ื-GRPC, ืื ืืจืืืืื ืืืืืื ืืืืขืช ืงืื ืคืชืื ืฉื ืืืืื ืฉืืจืืช - ืืฉืืจืืชืื ืฉืื ื ืขืืงืืื ืืืจ ืืืืฆืืขืื ืฉื ืื, ืืืืืื ืืฉื ืืช ืืช ืืืจืื ืฉืืื ืืืืคื ืืื ืื, ืืงืฉืจื ื ืืืช ืขื ืืืืื GRPC. ืขืืืจ ืืืืื, ืื ื ืืฉืชืืฉืื ืื ืืคืชืจืื ืงืื ืคืชืื. ืืืืฉืืจ ืื ืชืื ืื ืงืืืื ื ืืืฆืืขืื ื ืืืชืื ืืขืชืืืช ืืฉืืืื ืืืืื: ืืชืืจืจ ืฉืงืฉื ืืืื ืืืจืืื ืืขืื ืฉืขืืื ื ืืื ืืืกืชืื ืขื ืืืฆืืขืื ืฉื VPP, ืืื ืขื ืืจืืืก ืจืฉืช ืืจืื.
ืืขืืืช ืืคืชืจืื ืืช
ืื ืื ืขืื ืื ืื ืืื? ื-Go ืืฉ ื ืืืื ืืืืจืื ืืืืืืื, ืืื ืืืืคืืช ืืืืจืื ืขืืืื ืืชืจืืฉืืช. ืืืจื ืืงืื ืืืืชืจ ืืืชืืืื ืืืชื ืืื ืืืคืขืื ืืจืืืื ืื ืืืืืืจ ืืืคืกืืง ืืืชื. Takeaway: ืฆืคื ืืฆืจืืืช ืืืืืจืื ืฉื ืชืืื ืืืช ื-Go ืฉืืื. ืืขืชืื ืงืจืืืืช ืืื ืืืงืืืจ ืืื ืืื ืืกืคืจ ืืืืจืืืื. ืืฉ ืืชืจืื ืืกืืคืืจ ืืื: ื-Go ืงื ืืงืื ื ืชืื ื ืืื ืจืืฆื - ืฆืจืืืช ืืืืจืื, ืืกืคืจ ืืืืจืืืื ืืคืืขืืื ืืคืจืืืจืื ืจืืื ืืืจืื.
ืืื ืื, Go ืืืื ืื ืืืืืจื ืืืืื ืืืืชืจ ืขืืืจ ืืืืงืืช ืคืื ืงืฆืืื ืืืืช. ืื ืื ืืืืืืืื, ืืืืืฉื ืืกืื ืืจืืืช ืฉื "ืืืจืืฅ ืืื ื-CI ืืืฆืืื" ืื ืืืื ืืชืืืื ืืื. ืืขืืืื ืืื ืฉืืืืงืืช ืคืื ืงืฆืืื ืืืืช ืืืจืฉืืช ืืฉืืืื ืืืชืจ ืืืืจืืืช ืืคืกืงื ืืื ืืืืชืืื. ืืืื ืื, ืืืืงืืช ืขืืืืืช ืืืืืฉื ืืืืืื ืฉื-CPU ืขืกืืง ืืืืืงืืช ืืืืืืช. ืืกืงื ื: ืืืืืช ืืืคืฉืจ, ืืฆืข ืืืืงืืช "ืืืืืช" ืื ืคืจื ืืืืืงืืช ืืืืื.
ืืจืืืืงืืืจืช ืืืจืืขืื ืฉื Microservice ืืืจืืืช ืืืชืจ ืืืื ืืืื: ืืืกืืฃ ืืืื ืื ืืขืฉืจืืช ืืืื ืืช ืฉืื ืืช ืืื ื ื ืื ืืืืืื. ืืกืงื ื: ืื ืืชื ืืืืฆืจ ืฉืืจืืชื ืืืงืจื, ืชืืฉืื ืืื ืขื ืืขืงื.
ืืชืื ืืืช ืฉืื ื
ื ืฉืืง ืืืืื ืคื ืืื, ืืืืื IPv6, ื ืืกืืฃ ืชืืืื ืืกืงืจืืคืืื ืฉื Kubernetes, ื ืืฉืื ืืจืกืืก ืืช ืืฉืืจืืชืื ืฉืื ื (ืืจืืข ืจืง healthcheck-node ื-healthcheck-ctrl ืืจืืกืงืื), ื ืืกืืฃ ืืืืงืืช ืืจืืืืช ืืืฉืืช, ืืื ื ืืืืข ืฆืืืจื ืืืื ืฉื ืืืืงืืช. ืื ื ืฉืืงืืื ืืคืฉืจืืช ืืืคืื ืืช ืืฉืืจืืชืื ืฉืื ื ืืขืฆืืืืื ืขืื ืืืชืจ - ืื ืฉืื ืืชืงืฉืจืื ืื ืืฉืืจืืช ืืื ืขื ืืฉื ื, ืืื ืืืืฆืขืืช ืชืืจ ืืืืขืืช. ืฉืืจืืช ืชืืื SQS ืืืคืืข ืืืืจืื ื ืืขื ื
ืืืืจืื ื ืืชืงืืืื ืืืคืฆื ืืคืืืืืช ืฉื Yandex Load Balancer. ืึทืืงืึนืจ
ืืงืืจ: www.habr.com