ααααΆααα½α, αααα»αααΊ Sergey Elantsev, αααα»αα’αα·αααα
ααΆααααΌαααΌαααααΆαααΆααααα½αα ααα½αα
- ααΈα’αΆαααΈ (α’αΆαααΈαα·αααα·α) - α’αΆααααααΆα IP αααααΆααα»αααααΆα
- Server, backend, instance - αααΆαααΈααα·αααα·αααααααα»αααααΎαααΆααααααα·ααΈ
- RIP (α’αΆαααΈαα·αααααΆαα) - α’αΆααααααΆα IP αααααααΆαααΈααα
- ααΆααα·αα·ααααα»αααΆα - αα·αα·αααααΎαααΆαααααααααα½ααααααααΆαααΈααα
- Availability Zone, AZ - α αααααΆαα ααΆααααααααααΆα ααααααΆααα αααα»αααααααααααα·αααααα
- ααααα - αα ααΈααα AZs αααααααααΆ
Load Balancers αααααααΆααα·α αα ααΆαααααΆαααα ααα½αααΈα αα½αααα’αα»αααααα»αααααΆααααα½αααΆ ααααΎα’αααααααΎαα‘αΎαααΌαααΆαα’αααααααααααα α»αααααααΆαααα αα·αααααΎα±ααααΆαααααααΆαααααααΆααΆαααΆαααΆααααα ααΆαα’ααα±αα ααααααα α»αααααΌαααΆαααΆααΆααΆααααααΆααααααααααα ααΆα ααααααααααααααααααα·α αα»αααααΆααααα½ααα·αα·αααααααΆαααΆααααααααα·ααΈ αα·ααα·αααΆαααααα αΌαααααΈααΈαα»αααααΆαααααα·αααααααΆααααΆααααα½ααα·αα·αααααΆαααααααΎαα ααΆαααααΎααΆαααααααΆαααααΌαααΆαααΆααΆαααααΆαα ααα αΆαααααα»αααααΎαααααΆαα ααΌααΆααααααα» ααααΌα ααΆααΆαααααΎαα αα α»ααααααααΆααααααΈααααααα»ααααΆααα ααααα·αααΎαααα»ααααα·αααααΎααααΆαααααααααΆαααα ααααΈαα½αα ααα½αααΉαααα½αααΆαααααα»αααΎαααΈαααααααααααααααΆααααααα½ααα α αΎαααααΆααααααΉαααΆαααααα½αα±αααα»αα α·αααα
α§ααααααααα»ααα»αααααΆαααααΌαααΆαα αΆααααααΆααααΆααΉαααΆααααααααααΆαααα·ααΈααΆαααΈααααΌ OSI αααααΆααααΎαααΆαα Cloud Balancer ααααΎαααΆααα ααααα·α TCP αααααααΌαααΉααααααΆααααΈ 4 LXNUMX α
α αΌααααααα αα·αααααΆαααΌαα ααααααΆαααααααα Cloud balancer α ααΎαααΉααααααΎαααααα·αααααααααΆααααα’α·αααααα·α αααααα ααΎααααα αααααΆαααΆαα»αα»αααααΆαααΆααΈααααΆααα ααααΆαα config plane ααΊααα½ααα»αααααΌαα ααααα’ααααααααα’αααααααΎααααΆαα αα·ααααααΆαα»αααααΆαααΆαααααα ααααααααααα ααααα ααααααααααααααααΆαα»αααααΆαααΆααα αα α»αααααααααααααααα αα·ααααααααααααααααααααΈααααΆααααααα αααα·αααααα αααααα½ααα»αααααΌαααααΆαααααα»αααΆααααααΌαα ααΆα αααΈα’αα·αα·αααα ααΆααααααΈααααα’αααα
ααααα αααα·αααααα
α ααΆα ααααααα αααα ααΎα§ααααααααα α αααα α ααΆααααααααααααααα ααΎααααΈαααααΎαααΆαα’ααα±αα ααααααα α»α α§αααααααααααααΆα αααΎαααααΎαααΆααααα»ααααααααΆαααααΆαα αααα»αααααααααααα·αααααααα½αα αααααΆαααα α ααΆα ααα ααΆααα’ααααα»αααααΆα ααααααααΆαα’αΆααααααΆα IP ααΆαα½ααα ααΆαα AZs ααΆααα’ααααΆαααα BGP αααααΆααα’αα·αα·ααα
α
ααΆα
αααααααΌαααΆααααααΌαααΆα ECMP - αααααΊααΆαα»αααααΆααααααααααααααΌααα½α ααααα
ααΆααααα’αΆα
ααΆαααααΌαααα’ααααΎααααΆααΆα
αααΎααα
ααΆααααααα
(αααα»αααααΈααααααΎα ααααα
ααΉαααααΆαααΆα’αΆααααααΆα IP ααααα
) α αΎααααα
ααααααααΆαα’αΆα
ααααΌαααΆαααααΎααΆααα½αααΆααΆαα½αα ααΎαααααΆααααααΆαααΆααα
αααα»αααααααααα’αΆα
ααααΆαααΆα
αααΎααααααααα
ααΆααααααααΆαααααΆααααααα ααΎαααααααααααΆαα’αΆααααααΆααα
αααα»ααααααααΈαα½αα α
ααΆα
ααα
ααΆααααααααααααα
αα·ααααα»α α αΎααα·αα α½αααΈααααααααααααααΆα αα
αααααααα ααΎαααΉααα·αα·αααααΎααααα’α·ααααααααααα’αααΈα’αααΈαααααΎαα‘αΎαα
ααααα
ααΆα
αααα
ααααααα ααΆααααααααααααα αα
ααΆαα»ααααααααΆααααααααα ααααααααα
ααΆααααααααααΊ API αααααααα·ααααα·ααΆαααΆααΌαααααΆαααΆαα½ααααα»αααααααΌαααΆαα’αα»ααααα ααΆααααααΎα ααΆααα»α ααΆαααααΆααααααΌααααΆαααΆαααααααα» ααα½αααΆααααααααα·αα·ααααα»αααΆαααα αααααΆααα·αααααααααΊααΆ REST API α αΎααα
ααΎ αααααααα ααΎααα
αααα»α Cloud ααΆααΉαααΆααααααΎ gRPC ααααααααα ααΌα
ααααααΎα "αααααα" REST αα
gRPC α αΎααααααΆααααααααΎαα gRPC ααα»αααααα ααααΎααΆαα½αααΆααα
αααααΆααααααΎαααΆαααααααααΆαααααα·α
αα
ααΆα ideempotent α’ααααΆααα½ααααααααΌαααΆαααααα·ααααα·αα
ααΎαααα»αααΌαα
αααα»ααααα·α Yandex.Cloud α αα·α
αα
ααΆαααααΌαααΆααααααααΆαααααααααα½αααα’αΆα
ααα’αΆαααΆααααααααα α αΎααααααΆααααα
αΆααααααΎαα‘αΎααα·α αααααΆααΆααΌαααααααΆαααααΎααΆαααααααΆα ααΆαα’αΆα
ααααΎααααααα αα·αααΆααααααααΆααααα·ααααα·ααΆαα
ααΆαααααα ααΆααα·α
αα
ααΈ API ααΉαααααΎααΆαααααΎαα»ααα
ααΆααα§ααααααααααΆααααΆαα»αααααΆααααααααΌαααΆαααααααα
αααα»α Go α ααΆα’αΆα
αααααα αα·ααα»ααα»αααααΆα ααααΆααααααΌααααΆαααΆααααααααααΆαααααα αα·αααΆααααααα
ααααΆαααααααααΆαα»αααααΆαααΆαααααααΆαα
αααα»α Yandex Database αααααΆααΌαααααΆααα·αααααααααααΆααααααααααα
ααα
αΆααααα’αααααΉαα’αΆα
ααααΎααααΆααααΆααααα»ααααααΆααααααα αα
αααα»α Yandex.Cloud ααΌα
αααααΎααα½α
α αΎα
α αΌαααΎααααααααα α§ααααααααααΆαα»αααααΆαα ααΆααα·α αα ααααααΆααΊααΎααααΈαααααΆαα»αααααααΆαα’αααΈαααα»ααααα·αααααΎααΆααα·α αα ααΎααααΈαα·αα·αααααΎαααΆαααααααααα½ααααααααΆαααΈααα·αααα·ααα α§ααααααααα½ααα·αα·ααααα»αααΆαα
α§ααααααααα½ααα·αα·ααααα»αααΆα
ααΆααα½αααααΎααΎααααΈααααΆααααααΌαα αααΆαααααα½ααα·αα·ααα αααααΆαα»ααα½αααΆαααα»α YDB α ααα αΆαααΆααα·α αα αααα»αα ααααααααΆαααα·αα·ααααα»αααΆα αα·αααα»ααααααα ααααααααΆααααααααΌαααΆααααααΆαα»ααααα»αααΌαααααΆααα·αααααα αα·αααααΎαα α§ααααααααααΆ loadbalancer α ααΆααΆαααααααΎααααΎααΎααααΈααααΆααααααΌααααΆαααΆαααα ααααααα αααα»αααααα αααα·αααααααα ααΆαα loadbalancer-node ααααααα»αααΉααα·ααΆααααΆααΆααααααα
α
αΌααα·ααΆααααααααααα’αααΈααΆααα·αα·ααααα»αααΆαα αα½αααα’αΆα
ααααΌαααΆααααα
ααααΆααααΆααααΆα
αααΎαα αααααααααΆααααααααα·αα·α
αααααααααααα»ααααααΆα ααΆααααα½ααα·αα·ααα TCP α
αΆαααΆα
αααααΌααααααΎαααΆααααααΆααααααααααααααα»ααααααααααααα ααΆααααα½ααα·αα·ααα HTTP ααΆαααΆαααΆααααΆααααααΆαααααααα αα·αααΆαααααΎαααααΆαα½αααΉααααααΌαααααΆαααΆα 200α
ααΌα ααααΆααααααααααΆααααα½ααα·αα·ααααα»αααααΆαα αααα»αααααΆαααααααααααΆα - αα½αααααααααα·αα’ααααα ααΆααααα½ααα·αα·αααα’ααααααααΆαααααααα½ααα·αα·αααααΌαα’αααΈααααααα»αααΎαα‘αΎαααΆαα½αα ααΆα αααααααα·αα αΆαααα·ααΆαααΆααα·αααααΆαα½αα‘αΎαα ααΆαα·αααααΎαααΆαααα’αα ααΎ L4 αααααααΆα’αΆαααααααΎαααααα·ααααΆαααα·ααΈααΆαααααα·ααααααα αα ααΎ L4 αα·αααΆαααααααΆαα’αααΈααααααααααα·ααααα·ααΆα α¬ααΆααΎααΆααααα ααααΆααααααΆααααα’ α¬α’αΆααααααααααα ααΆααααα½ααα·αα·αααααααααααααΌαα±αα Balancer ααααΎααααΎαα ααΆαααααΆαααΈαααααΈαα½ααα
α§ααααααααα»ααα»αααααΆαααΆαα αααΎαααααΎααΆααααα½ααα·αα·αααααΆαααααααΎαααααααα½αα―αα αα Cloud ααΎαααΆααααααα α α·αααααααααααααααΆααααααααααααααα ααΎααααΈαααααΎααααααααΆαααααΎααΆαααααααΆαα αα·ααΈααΆααααααααααΉαα’αα»ααααΆαα±ααααΎααααααΎαα ααα½ααααα»αααααααααααααααααΆα ααα½αααααΎαα·αα·ααααα»αααΆααα ααΆααααααΆααααα ααΆααααα½ααα·αα·αααααααΌαααΆαα’αα»αααααααααααΆαααα·αα·ααααα»αααΆαααΆα ααααα‘αα αααααααα αααα½ααα·αα·αααααααΌαααΆαααααα αα·αα ααααα α’ααααα·αα’αΆα ααααΎααΆααααα½ααα·αα·αααααΈαααΆαααΈααααα½αααΆααα αααααααΆα’αΆα ααΉααααΆαααα αααααΆαααα ααΎαααΉααα·αααα½αααΆαααααΆαααΆαααααααΈαααααΆααααΆααα·αα·ααααααααα ααΎαααααΎααΆααααα½ααα·αα·αααααΎααααΈααΆαα½αααΈααααΆαααα·αα·ααααα»αααΆααααΆαα αα ααΆααααΈα ααΎααααα αααααααααααααΆααααα½ααα·αα·ααααααΆαααααΆαααααααααΎαααα½ααααααααΆαααΆααααααααΆααααααΆα
ααΆααααα
αααα»αααααΆα αα·αααΆααα·αα·ααααα»αααΆαα’αΆα
ααΆαα±ααααΆααααα αΆα ααααα·αααΎααααΆαααα·αα·ααααα»αααΆαααααΎααααΎαα
ααααα»αααααααααΆαααα»αααααΆα (ααααα
αα
α»αααααααα·ααααααΎα
ααΆα
ααα) αααααααΆαααΆαα
ααααααα½αααΎαα‘αΎαα ααααΆαα αΆααααΌα
ααΆαα
ααα ααα»ααααα
ααΆα
αααααΉααα·ααα
αααααΆααα ααΎααααααααΆααααα αΆαααααΆααα·ααΈαααα ααΎαααααΌαααΆαααΆααΆααΆααΉαα
αΆααααααΎαα
ααΆα
ααααααα½ααα·αα·ααααα»αααΆαααΆααααα’ααααα»αααααΆαα αααααΆαααα αααααααΆααααααααΆααααααΆααααΈαααα
ααααααααΆαααΆαα½αααΉαα
ααΆα
αααααΈα’αα·αα·αα αα·αααΈααΆααα·αα·ααααα»αααΆαααΆαααΆααα»αααααΆαα·α
αα½α
α αααα»αααααΈααΆααααΈα αααα
ααααααααΆαααΉααα
ααααααα»ααα αααααΉααααααΌααα½ααααα
ααΆααααααΆαααααα
α
ααΆααα»ααααααααααΆαααααΊααΆα’αα·αα·ααααααΎααααΎαα
ααΈα’αΆαααΈ αααααααααααΆααα·αα·ααααα»αααΆαααααΎααααΎαα
RIP ααΈαα½ααα αααα αΆαα½αα±ααα
αΆααα’αΆαααααααα½αααΎαα‘αΎααα
ααΈαααα ααΎααααααα±ααα’αααααααΎααααΆααααααααΎαααΌαα±ααΆαααΎααααΈαααααΎαααααΆααα
αααα»ααααααΆα IP αααααααααα ααΌααααααααΆααΆαααα
αΆαααααααΈααααααααααΆαααααΆαααΆααααααΆαααααααααα½ααααα
ααΈααααααααα»αααα αα½αααΆααΈαα½ααααΆαααααΆααα
αααα»ααααααΆααα 10.0.0.1/24 αααααΆαα’αΆααααααΆαααΌα
ααααΆα α’αααααααΌαα
αααααα
αααα½αααΆαααα α αΎααα
ααΈαααα’αααααααΌαα
αΌααα
αααα»ααα
ααΆαααααααααααααααΆααα·αααα·α Yandex.Cloud α ααΆααΆααΆαααα’αααααΎαααΆααα»αααΎααααΈαααααααααααααΆααααα’α·ααααααααα
αααα»α
ααααΆαααα·αα·ααααα»αααΆαααΆααααα’ααααα»αααααΆααααααααΎα’αΆααααααΆα quasi-IPv6 αααααα α ααΆα α’αΆααααααΆα quasi-address ααΊααΆα’αΆααααααΆα IPv6 αααααΆαα’αΆααααααΆα IPv4 αα·αααααααααΆαααααααΆαααα’αααααααΎααααΆαααααααΆααααααααα ααΆααααα»αααΆα α ααΆα αααΆαααααα»αααααΆα αααααΆαααα’αΆααααααΆαααααΆα IPv4 ααΈααΆ αααα½α IPv6 ααΆαα½α IPv4 α αΎαααααΎαααα ααααααααΆααα αααααΆαααααα’αααααααΎα
α ααΆα ααααααα αααΆαααααΎαααΆαααΌα ααααΆα α’ααααα»αααααΆαααΎαααΎαααΆαα·ααα ααΊααΆαααααΆααααααααααααΈα’ααααα·αα·ααααα»αααΆα α αΎαααααααα IPv4 αα IPv6 α
VPP - αααααΌαααααααα αααα·αααααα
α§ααααααα»αααααΆαααααΌαααΆαα’αα»αααααααααααΎαα αα αααα·ααααΆ Vector Packet Processing (VPP) αααααΆαααααααααααΈ Cisco αααααΆααααααΎαααΆαααααα»αααα ααΆα ααααααΆαα αααα»αααααΈααααααΎα αααααααααααααΎαααΆααα ααΎααααΌααααααααΆααααααααααααα§ααααααααααΆαα’αααααααΎααααΆααα ααααα - 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 α αααααααΌαααΆαααααΎαααααααΆαααα αααα»αααααΆα αααααααΎαα α ααΆ algorithmic NAT α αααααΆααα ααΆα ααααα αααΆα (αα·αααΆαααααααααΈ IPv6 αα IPv4) ααΆαααααΆαα NAT αααα½ααααααααΆαααΌα ααααΆα
α
ααΆα
ααααααααΆααααΈα’αα·αα·αααα»αααααΆαααααααΆααααααΆααααααΆα αα αααααααΎαααα»αααααααααα½αα―αα
ααααΆααααΈαα½αααΊααααααα’α·αα ααΆαααααΆαα»α hash αα
αααααΆ 5-tuple αα½αααΎαααααΎααΆαααααΆαα·α αα αααα»αααααΆαα hashing ααΆααααΆααααΆαααααααααΆαα ααααΌα ααΆααΆαααααΆααααααΌααααααΈααααΆαααααααααΎαααΆααα»ααα ααΈααααα balancer α αα αααααααααα ααααααααΆαααααα·αααΆαααααααααα Balancer ααΆααααΌαααΆααααααΌααα ααααΆαα hashing ααΆααααΆααα αααααΊααΆααααααααααααα»αααααΎαα‘αΎααααααααΎααΆααααααααΆααααααΆα ααΎαααααΎαααΎαααααΆαααΈαααααΈααααΆα "ααααααααΆαα" αααααΆαα αααααΆαααα αααα ααααααααΆαααααΌαααΆαααααΎαα ααΆααααααΆαα NAT ααααα·αααΆαααα½αα’αΆααααααΆαααααα αα·αααααΆα‘αΎααα·αααΌα checksums α ααΌα αααα’αααα’αΆα ααΎαααΎαα’αα»ααααααΆαα αααΆαααααα VPP - α αΌαα α·ααα ααΆαααΆααααΆαααα»αααααΆαααααΆααααααααααΆααΎααααΈαααααΎαααααα·αααααΆαααααααΆαααααααΆαααα½αααααΆαα
ααΆαα αΆαααααΆαααΆααααΆαα
α ααα»α’αααΈααΆαααΆααΎαααααΎαααΎαααΆ α αΎαααΎααΆααΆα’αααΈ? ααααΌαααΎααα·α αΆαααΆαα·α αα ααΆααα»α - ααααΎαααΎαααααΆαααΈαααααΈα
ααΆαα½αααΉαααΆα hashing ααααα·αααααααααΆ hash αααααα
ααααααααΆαα
αΌαααααΌαααΆαααααΆ α αΎαααααΆααα½αααααΌαααΆαααααΎαααΎαααΈαααααΈααααα
αααααααΆααααα
αα hash ααααααα
ααα½αααααΆαα αααΆαααΆαααααΈαα
αααα·αααααΆααααααΌα αααααααΆααααααααααΎαααΆαααα’α ααΎααααααααααΎαααα
ααααααααΆααααααΆα 5-tuple ααΌα
ααααΆαα
ααΆααα§ααΆα αααααΌα
ααααΆα α§ααΆα ααα ααααα·αααΎααααΆααα½αα
ααα½αααΆααααααααΎααααα
ααΉαααΆααα·αα·ααααα»αααΆα ααααααααΎαααΉαααααΆααααααΌααααααΆαααααααααααΆαααααααααΆαααααΆααα ααΆαααααΆαα TCP ααααα’αα·αα·ααααΉαααααΌαααΌα
α αααα
ααααααααΆααααααΆααα
αααα§ααΆα ααα A ααΈαα»αα’αΆα
α
αΆααααααΎαααΆαααα instance B ααααα·αααααΆαααααααααααΆαααααα
ααααααααΆααααα
ααΆα hashing ααΆααααΆαααααααααΆααααα αΆαααααΆααα·αααααΆα αααααααΆαααΆααααα½ααααα»αααΎααααΈααααααααΈααααααα·ααααααΊα αααααααΆα’αααααΆαα α·ααα αααααα’αααα ααα αΆαααααΆαααααααααΆ (α§ααΆα αααααΆα IP: α ααα)α ααΆαααααΎαααΎαααααΆαααΊααααα·ααααααααα»ααα½α αααααααΌαααΆααααααααααααααΆαααααα ααααααααΆαα
ααΆααΆαααααααααΆαα
ααα
αΆαα
ααΆα
αααα‘αΎααα·ααα
ααααααΆαααΆαααααααΆαααααΆααααααΌαα ααΆααα»αααααΆααα½αααΉααααααΆααααααααααααααααα hashing ααΆααααΆαααααααααΆαααΆαααΈααΆαααα
α ααΆαααααααααααΆαααααααΆααααααΌαααΆαα
ααα
αΆαααα ααα»ααααααΎαααΆαααααΆααααααααα’α·α αααα’αα»ααααΆαα±ααααΎααα·αααααΌααααααααααΆααααααΎααα½α
α αΎααα
ααααΆαααααΈα
ααΎαααΆααααα‘ααααΎαα’αααΈαααααΎαα‘αΎαα ααααα ααΆα ααααααααααΆαααααΆααα»αααααΆα αα·αααααΆαα α₯α‘αΌααααααΌααααα‘ααααΎαα ααΆα ααααααα‘αααααα·αα ααΆααααΎααΆαααααΆαααΌα ααααΆαα ααΉαααΆααααα½ααα·αα·αααα ααΆα ααα - ααΆαααααααα½ααααααααΆα NAT αααααΊααΆαααα NAT 44 αααα αααΆααααααΆααα ααΆα αααα’αα·αα·αα αα·αααΆαααα NAT 46 αααααΆααα ααΆα ααααα·αα·ααααα»αααΆαα ααΎααααααΆααααααΆααααΌααααααααΆαααααααΆαααααα½αααααααΎαα ααΎαααααα½αααααα½αααΆααααα½ααα·αα·ααααα»αααΆα αα·αα ααΆα αααα’αααααααΎααααΆαααα·αααααΆααα
Loadbalancer-node αα·ααααΆαααΆαα»αααα
αααΆαααΆααααααα»ααα αα·αααααΆααα αααα»α VPP ααααΌαααΆαααΆαααΆααααααααααΆαααααααα»ααααα»α - loadbalancer-node α ααΆααΆαα ααααααααααΉαααα·ααΆαααααΈ loadbalancer-controller α αΎαα’αΆα αααααααΆααα»αααααΆαααΆαααααΆαααΆα VPP αα αα α»αααααα αα·αααααΆαααΆαααααα αααααα½αααΆαααΈα§ααααααααααΆα ααΎαααα½αααΆααααααααααα·αα ααααΉαααα·ααΆαααααΈ API αααααα§ααααααααααΆαα»αααααΆα ααααααααααΆααα·α αα αα α±ααα§ααααααααα½ααα·αα·ααααα»αααΆα ααΎααααΈαα·αα·αααααΎα "ααΆαααααααΎα" ααααααΆαα αααα αΎαααΆααα ααααααααΆααα·α αα αα ααααΆαααα·αα·ααααα»αααΆα αα·αααΌαααα»ααααααα αααααΆααααααΆαααααΌααα½ααααααα‘αααα α§ααααααααααΆαα»αααααΆααα·αα Loadbalancer-node ααΆαααααΉαααα·ααΆαααααΈα§ααααααααααΆ αα·αααααΆααααααΌαααααΆαααΆααα VPP α αα αααα»ααααααααααααααα ααααΆααΈαα½ααααΉαααα’αααΈαααα αΆαααΆα αα’αααΈααααΆαα·αααΆαααα»αααααα α ααα½αααααΆααααααΆααααΆαααααα α αΎαααΎαααΆααααααααΆααααα»αααΆαααααΎαααΆα αα·αααααΎααΆαααααααΆαααααααααααααααα―αααΆαααα
ααΎαααα αΆα’αααΈααααααααΌαααΆααααααΆα?
ααααΆααααααΆααα’ααααααααΎααα αααα»αααααα αααααααΆααααΌαααΆααααααααΆ Go α αΎαααΆαααααααααΆαααααααΆαααα’ αα·αααΆαααΏααΆααα Go ααΆααααααΆααααααααααΎαα αα ααΆα αααΎααααααΆαααααααΎαααααααααα ααα αΆαα ααΎαααααΎααααΆαα GRPC αααΆαααααα αααΆαααΆαα»ααΆααα’ααααΆααααααααΎαα αα ααααΆαα’αα»ααααααΆαααααΎαααααΆαααα - ααααΆααααααααααΎααααα½ααα·αα·αααααααΎαααΆαααααααααΆαα αα·ααα αα α’αΆα ααααΆααααααΌααααΆαααΆαααααααΆαααΆαααααΆα αΆαα α αΎαααΎαααΆαααααΆααααΆααΆαα½ααααα»ααα GRPC α αααααΆαααααααα ααΎαααααααΎαααααααααΆααααααααΎαα αα αααααα αα αααα»αααααα αααα·αααααα ααΎαααα½αααΆαααΆαα’αα»αααααααααα αα·ααα»αααααα»αααααΆαααα αααΎαα ααΆαααααα ααΆαα·ααΆαααααΆααααΆαααααα»αααΆααααααΌααααα»αααα ααααααΎαα’αΆα ααΉαααα’ααααΎααααΎαααΆααααα VPP ααΆααΆαααΆααααααΆααααα
αααα αΆ αα·ααααααααααΆα
ααΎβα’αααΈβαααβαα·αβααΆαβααααΎαααΆαβααα’βααΌα αααα? Go ααΆαααΆααααααααααα’αααα αα αΆααααααααααααααααα· ααα»ααααααΆαααα ααααΆαα’αααα αα αΆααα ααααΎαα‘αΎαα αααααααΆαααΆααααα½ααααα»αααΎααααΈαααααααΆαααΆαα½ααα½αααααΊααααΌαααααΎαααΆα goroutines α αΎαα αα αΆαααΎααααΈαααα αααα½αααα Takeawayα ααΎαααΆαααααΎααααΆααα’αααα αα αΆααααααααααα·ααΈ Go ααααα’αααα ααΆααΉαααΆααααΌα ααΆααααααα’αα½αααΊα ααα½ααα goroutines α ααΆαααΆαααΌααα αααα»αααΏααααα αα αααα»α Go ααΆααΆααααα½ααααα»αααΆαααα½αααΆααα·αααααααααααααΎαααΆα - ααΆαααααΎααααΆααα’αααα αα αΆα α ααα½αααααΆαααααΎαααΆα goroutines αα·ααααΆαααΆααααααααΆα αααΎααααα
ααΌα ααααΆαααααααα Go αααα ααααΆαα·ααααααΆαααααΎαααααα’αααα»ααααααΆααααΆαααααΎααααααα»αααΆααααααα αα½αααααΆαααΆαααααααΈα αΎααα·ααΈααΆααααααααααααΆααα "ααααΎαααΆαα’αααΈααααααααΆααα αααα»α CI ααΆααΆα α" ααΊαα·ααααααααααααΆαααα½αααααα ααΆααα·αααΊααΆααΆαααααΎααααααα»αααΆαααΊααΆααααααΌαααΆαααααΆαα αααΎαααΆα α αΎααααααΆαα±ααα’ααααααα·αααααΆααα αααααΆαααααα ααΆαααααΎαααααα’αΆα ααΉααααΆααα αααααΆααα CPU ααααααΆαα½αααΆαααααΎαααααα―αααΆα ααα ααααΈααααα·ααααΆαα ααααα·αααΎα’αΆα ααααΎααΆα ααΌαα’αα»ααααααΆαααααΎααααα "ααααα" ααΆα ααααα‘ααααΈααΆαααααΎαααααα―αααΆα
ααααΆααααααααααααΉαααα·ααΆααα Microservice ααΊαααα»αααααααΆαααΆα monolith αα½αα ααΆααααααΌααααααα ααα»αα ααΎαααΆαααΈαααααααααααΆααΆαααα·αααΊαα·αααΆααααα½ααααααα ααα ααααΈααααα·ααααΆαα ααααα·αααΎα’ααααααααΎαααααΆααααααΈααααΌ ααΌααα·αααααΆααα’αααΈααΆαααΆαααΆαα
αααααΆαααααααΎαα
ααΎαααΉαααΎαααααΎαααΆαα§ααααααα»αααααΆαααΆααααα»α αα»αααααΆα IPv6 ααααααααΆαααΆαααααααααΆααααααααΈα Kubernetes ααααααααΎα±ααααΌα
ααααΆααααααααααΎα (αα
αα
α»ααααααααΆαααααΆααα·αα·ααααα»αααΆα αα·αααΆααα·αα·ααααα»αααΆα-ctrl ααα»ααααααααααααΌαααΆαααααα) ααααααααΆααα·αα·ααααα»αααΆαααααΈ αα·αα’αα»ααααααΆααα½ααααα
αΌαααΆααααα½ααα·αα·ααααααΆαααααΆααααααααα ααΎααααα»ααα·α
αΆαααΆααΈααααααΆαααααΆαααααΎα±ααααααΆααααααααααΎαααΆααααααΆαααΆαα―αααΆααα ααΌα
αααααα½αααααααΆαααααααα·ααααααααΆααααΆαα½αααααΆαα
αα·ααα
αα ααα»αααααααααααΎαα½αααΆαα ααααΆαααααααααααΌαααααΆααΉα SQS ααΆααααα αΆααααα½ααα
αααα»α Cloud ααΆαααααααΈαααα
ααααΈααααααΆαα
ααααααΆαααΆααΆααΆααααα Yandex Load Balancer ααΆαααΎαα‘αΎαα αα»ααα
ααααα: www.habr.com