ΠΡΠΈΠ²Π΅Ρ, Ρ Π‘Π΅ΡΠ³Π΅ΠΉ ΠΠ»Π°Π½ΡΠ΅Π², ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Ρ
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²Π²Π΅Π΄ΡΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Ρ:
- VIP (Virtual IP) β IP-Π°Π΄ΡΠ΅Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°
- Π‘Π΅ΡΠ²Π΅Ρ, Π±ΡΠΊΠ΅Π½Π΄, ΠΈΠ½ΡΡΠ°Π½Ρ β Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Ρ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ
- RIP (Real IP) β IP-Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°
- Healthcheck β ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°
- ΠΠΎΠ½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ, Availability Zone, AZ β ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π² Π΄Π°ΡΠ°-ΡΠ΅Π½ΡΡΠ΅
- Π Π΅Π³ΠΈΠΎΠ½ β ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π½ΡΡ AZ
ΠΠ°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΅ΡΠ°ΡΡ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ: Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°ΠΌΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ, ΡΠ»ΡΡΡΠ°ΡΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈ ΡΠΏΡΠΎΡΠ°ΡΡ Π΅Π³ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π·Π° ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ: Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊ ΡΠ»Π΅Π΄ΠΈΡ Π·Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΈΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΠ· Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΡ, Π½Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΆΠΈΠ²ΠΎΡΡΠΈ. ΠΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΡΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΠΏΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠ°ΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΏΠΈΡΠΊΠ° ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ² Π½Π° Π»Π΅ΡΡ. ΠΡΠ»ΠΈ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° Π±ΡΠ΄Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠΉ, ΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ² ΠΏΠΎΠ»ΡΡΠ°Ρ Π½Π°Π³ΡΡΠ·ΠΊΡ, ΠΏΡΠ΅Π²ΡΡΠ°ΡΡΡΡ ΠΈΡ ΠΏΡΠ΅Π΄Π΅Π» ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ, ΠΈ ΡΠ΅ΡΠ²ΠΈΡ ΡΡΠ°Π½Π΅Ρ ΠΌΠ΅Π½Π΅Π΅ Π½Π°Π΄ΡΠΆΠ½ΡΠΌ.
ΠΠ°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊ Π½Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΡΡΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΡΡΡ ΠΏΠΎ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΈΠ· ΠΌΠΎΠ΄Π΅Π»ΠΈ OSI, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ°Π»Π°Π½ΡΠΈΡΠΎΡΠΈΠΊ ΠΠ±Π»Π°ΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΡΠΎΠ²Π½Π΅ TCP, ΡΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠ΅ΡΠ²ΡΡΡΠΎΠΌΡ ΡΡΠΎΠ²Π½Ρ, L4.
ΠΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ ΠΎΠ±Π·ΠΎΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ° ΠΠ±Π»Π°ΠΊΠ°. ΠΡΠ΄Π΅ΠΌ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΡΡΠΎΠ²Π΅Π½Ρ Π΄Π΅ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡ Π΄Π΅Π»ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π½Π° ΡΡΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠ»Π°ΡΡ config plane ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈ Ρ ΡΠ°Π½ΠΈΡ Π² ΡΠ΅Π±Π΅ ΡΠ΅Π»Π΅Π²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. Control plane Ρ ΡΠ°Π½ΠΈΡ Π² ΡΠ΅Π±Π΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΈΠ· ΠΊΠ»Π°ΡΡΠ° data plane, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π·Π° Π΄ΠΎΡΡΠ°Π²ΠΊΡ ΡΡΠ°ΡΠΈΠΊΠ° ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π΄ΠΎ Π²Π°ΡΠΈΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ².
Data plane
Π’ΡΠ°ΡΠΈΠΊ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½Π° Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠΈΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ border routers. ΠΠ»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ Π΄Π°ΡΠ°-ΡΠ΅Π½ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ². ΠΠ°Π»Π΅Π΅ ΡΡΠ°ΡΠΈΠΊ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π°Π½ΠΎΠ½ΡΠΈΡΡΡΡ anycast IP-Π°Π΄ΡΠ΅Ρ Π½Π° Π²ΡΠ΅ AZ ΠΏΠΎ BGP.Β
Π’ΡΠ°ΡΠΈΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ ECMP β ΡΡΠΎ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ
ΠΎΡΠΎΡΠΈΡ
ΠΌΠ°ΡΡΡΡΡΠΎΠ² Π΄ΠΎ ΡΠ΅Π»ΠΈ (Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅Π»ΡΡ Π±ΡΠ΄Π΅Ρ destination IP-Π°Π΄ΡΠ΅Ρ) ΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎ Π»ΡΠ±ΠΎΠΌΡ ΠΈΠ· Π½ΠΈΡ
. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
Π·ΠΎΠ½Π°Ρ
Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡ
Π΅ΠΌΠ΅: Π°Π½ΠΎΠ½ΡΠΈΡΡΠ΅ΠΌ Π°Π΄ΡΠ΅Ρ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π·ΠΎΠ½, ΡΡΠ°ΡΠΈΠΊ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΡΡ ΠΈ ΡΠΆΠ΅ Π·Π° Π΅Ρ ΠΏΡΠ΅Π΄Π΅Π»Ρ Π½Π΅ Π²ΡΡ
ΠΎΠ΄ΠΈΡ. ΠΠ°Π»ΡΡΠ΅ Π² ΠΏΠΎΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Ρ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ.
Config plane
Β
ΠΠ»ΡΡΠ΅Π²ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ config plane ΡΠ²Π»ΡΠ΅ΡΡΡ API, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°ΠΌΠΈ: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π° ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ², ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² healthchecks ΠΈ Ρ. Π΄. C ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΡΠΎ REST API, Π° Ρ Π΄ΡΡΠ³ΠΎΠΉ, ΠΌΡ Π² ΠΠ±Π»Π°ΠΊΠ΅ ΠΎΡΠ΅Π½Ρ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ gRPC, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Β«ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌΒ» REST Π² gRPC ΠΈ Π΄Π°Π»ΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ gRPC. ΠΡΠ±ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠΈΠΈ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΡΡ
Π·Π°Π΄Π°Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠ»Π΅ Π²ΠΎΡΠΊΠ΅ΡΠΎΠ² Π―Π½Π΄Π΅ΠΊΡ.ΠΠ±Π»Π°ΠΊΠ°. ΠΠ°Π΄Π°ΡΠΈ ΠΏΠΈΡΡΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ, Π° ΠΏΠΎΡΠΎΠΌ Π·Π°ΠΏΡΡΠ΅Π½Ρ Π·Π°Π½ΠΎΠ²ΠΎ. ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ, ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΎΡΡΡ ΠΈ Π»ΠΎΠ³ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
Π ΠΈΡΠΎΠ³Π΅ Π·Π°Π΄Π°ΡΠ° ΠΈΠ· API ΡΠΎΠ²Π΅ΡΡΠΈΡ Π·Π°ΠΏΡΠΎΡ Π² ΡΠ΅ΡΠ²ΠΈΡ-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Go. ΠΠ½ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ, ΠΌΠ΅Π½ΡΡΡ ΡΠΎΡΡΠ°Π² Π±ΡΠΊΠ΅Π½Π΄ΠΎΠ² ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.Β
Π‘Π΅ΡΠ²ΠΈΡ Ρ
ΡΠ°Π½ΠΈΡ ΡΠ²ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π² Yandex Database β ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΠΠ, ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠΊΠΎΡΠ΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΈ Π²Ρ. Π Π―Π½Π΄Π΅ΠΊΡ.ΠΠ±Π»Π°ΠΊΠ΅, ΠΊΠ°ΠΊ ΠΌΡ ΡΠΆΠ΅
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΊ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°. ΠΠ³ΠΎ Π·Π°Π΄Π°ΡΠ° β ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ΅, ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Π·Π°Π΄Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π³ΠΎΡΠΎΠ²Π½ΠΎΡΡΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Π² healthcheck controller.
Healthcheck controller
ΠΠ½ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π·Π°ΠΏΡΠΎΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ» ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΈΡ Π² YDB, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎ healtcheck nodes ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΠ΅ΠΌ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² Π±Π°Π·Ρ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² loadbalancer controller. ΠΠ½, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π² data plane Π½Π° loadbalancer-node, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π½ΠΈΠΆΠ΅.
ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ healthchecks. ΠΡ
ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠ»Π°ΡΡΠΎΠ². Π£ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π±ΡΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈ ΡΡΠΏΠ΅Ρ
Π°. TCP-ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π·Π° ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. HTTP-ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ΅Π±ΡΡΡ ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ° ΡΠΎ ΡΡΠ°ΡΡΡ-ΠΊΠΎΠ΄ΠΎΠΌ 200.
Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΏΠΎ ΠΊΠ»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ β ΠΎΠ½ΠΈ Π±ΡΠ²Π°ΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΈ ΠΏΠ°ΡΡΠΈΠ²Π½ΡΠ΅. ΠΠ°ΡΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ»Π΅Π΄ΡΡ Π·Π° ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ, Π½Π΅ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ½ΠΈΠΌΠ°Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° L4, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ: Π½Π° L4 Π½Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°Π½ΡΠ»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΈ Π±ΡΠ»ΠΎ Π»ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠΈΠΌ ΠΈΠ»ΠΈ ΠΏΠ»ΠΎΡ ΠΈΠΌ. ΠΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠ΅Π±ΡΡΡ, ΡΡΠΎΠ±Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΏΠΎΡΡΠ»Π°Π» Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ½ΡΡΠ°Π½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠΎΜΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Β«ΠΆΠΈΠ²ΠΎΡΡΠΈΒ» ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ. ΠΡ Π² ΠΠ±Π»Π°ΠΊΠ΅ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΡΡΠΈ ΡΠ°ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΌ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ², ΡΠΎΡ ΡΠ°Π½ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ healthcheck-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ ΡΠ΅ΡΠ²ΠΈΡΡ. ΠΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ healthcheck nodes, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ ΡΠ΅ΠΏΠ»ΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΠ΅Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ. ΠΠ΅Π»ΡΠ·Ρ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ ΠΎΡΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠΊΠ°Π·Π°ΡΡ. Π’ΠΎΠ³Π΄Π° ΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΡ ΠΈΠΌ ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ². ΠΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΠ· ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ² ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Ρ ΡΡΡΡ healthcheck nodes. Π¦Π΅Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΌΡ ΡΠ°ΡΠ΄ΠΈΡΡΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΎΠ΄Π°ΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΈ healthcheck ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ. ΠΡΠ»ΠΈ healthcheck node ΡΠΎΠ²Π΅ΡΡΠ°Π΅Ρ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΠΈΠ½ΡΡΠ°Π½ΡΡ, ΠΌΠΈΠ½ΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊ (ΠΊΠΎΡΠΎΡΡΠΉ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π΅ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ°ΡΠΈΠΊ), ΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΡΡΠ°Π½Π½Π°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ: ΡΠ΅ΡΡΡΡ Π²ΡΠΎΠ΄Π΅ Π±Ρ ΠΆΠΈΠ², Π½ΠΎ ΡΡΠ°ΡΠΈΠΊ Π΄ΠΎ Π½Π΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠΉΠ΄ΡΡ. ΠΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΡ ΡΠ΅ΡΠ°Π΅ΠΌ ΡΠ°ΠΊ: Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎ Π·Π°Π²ΠΎΠ΄ΠΈΠΌ healthcheck-ΡΡΠ°ΡΠΈΠΊ ΡΠ΅ΡΠ΅Π· Π±Π°Π»Π°Π½ΡΠ΅ΡΠΎΠ²ΡΠΈΠΊΠΈ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΡ
Π΅ΠΌΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΈ ΠΎΡ healthchecks ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ: Π² ΠΎΠ±ΠΎΠΈΡ
ΡΠ»ΡΡΠ°ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΡ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΈΡ
Π΄ΠΎ ΡΠ΅Π»Π΅Π²ΡΡ
ΡΠ΅ΡΡΡΡΠΎΠ².
ΠΡΠ»ΠΈΡΠΈΠ΅ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π΄Π΅Π»Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ Π½Π° VIP, Π° healthchecks ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌΡ RIP. Π’ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: Π½Π°ΡΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΌΡ Π΄Π°ΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΡΡΡΡΡ Π² ΡΠ΅ΡΡΡ
IP-ΡΠ΅ΡΡΡ
. ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ Π΅ΡΡΡ Π΄Π²Π° ΡΠ°Π·Π½ΡΡ
Π²Π»Π°Π΄Π΅Π»ΡΡΠ° ΠΎΠ±Π»Π°ΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΡΡΠ°Π»ΠΈ ΡΠ²ΠΎΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΈ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΡ
Π½ΠΈΡ
Π΅ΡΡΡ ΡΠ΅ΡΡΡΡΡ Π² ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ 10.0.0.1/24, ΠΏΡΠΈΡΡΠΌ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ Π°Π΄ΡΠ΅ΡΠ°ΠΌΠΈ. ΠΡΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΡ ΠΊΠ°ΠΊΠΈΠΌ-ΡΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΡ
ΠΎΡΠ»ΠΈΡΠ°ΡΡ, ΠΈ ΡΡΡ Π½Π°Π΄ΠΎ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π² ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠΈ Π―Π½Π΄Π΅ΠΊΡ.ΠΠ±Π»Π°ΠΊΠ°. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π»ΡΡΡΠ΅ ΡΠ·Π½Π°ΡΡ Π²
Healthcheck nodes ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΠΊΠ²Π°Π·ΠΈ-IPv6-Π°Π΄ΡΠ΅ΡΠΎΠ². ΠΠ²Π°Π·ΠΈΠ°Π΄ΡΠ΅Ρ β ΡΡΠΎ IPv6-Π°Π΄ΡΠ΅Ρ, Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°ΡΠΈΡ IPv4-Π°Π΄ΡΠ΅Ρ ΠΈ id ΠΏΠΎΠ΄ΡΠ΅ΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π’ΡΠ°ΡΠΈΠΊ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π½Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊ, ΡΠΎΡ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΈΠ· Π½Π΅Π³ΠΎ IPv4-Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΠ°, Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ IPv6 Π½Π° IPv4 ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠ°ΠΊΠ΅Ρ Π² ΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠ±ΡΠ°ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΠΊ ΠΈΠ΄ΡΡ ΡΠ°ΠΊ ΠΆΠ΅:Β Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊ Π²ΠΈΠ΄ΠΈΡ, ΡΡΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ β ΡΠ΅ΡΠ°Ρ ΡΠ΅ΡΡ ΠΈΠ· healthcheckers, ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ IPv4 Π² IPv6.
VPP β ΡΠ΅ΡΠ΄ΡΠ΅ data plane
ΠΠ°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Vector Packet Processing (VPP) β ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ ΠΎΡ Cisco Π΄Π»Ρ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ°. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ²Π΅ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ user-space-ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ β Data Plane Development Kit (DPDK). ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π²ΡΡΠΎΠΊΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²: Π² ΡΠ΄ΡΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ, Π½Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ kernel space ΠΈ user space.Β
VPP ΠΈΠ΄ΡΡ Π΅ΡΡ Π΄Π°Π»ΡΡΠ΅ ΠΈ Π²ΡΠΆΠΈΠΌΠ°Π΅Ρ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ Π΅ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π·Π° ΡΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² Π±Π°ΡΡΠΈ. ΠΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π°Π³ΡΠ΅ΡΡΠΈΠ²Π½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΡΡΠ΅ΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ°ΠΊ ΠΊΡΡΠΈ Π΄Π°Π½Π½ΡΡ (ΠΏΠ°ΠΊΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Β«Π²Π΅ΠΊΡΠΎΡΠ°ΠΌΠΈΒ», Π΄Π°Π½Π½ΡΠ΅ Π»Π΅ΠΆΠ°Ρ Π±Π»ΠΈΠ·ΠΊΠΎ Π΄ΡΡΠ³ ΠΊ Π΄ΡΡΠ³Ρ), ΡΠ°ΠΊ ΠΈ ΠΊΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ: Π² VPP ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎ Π³ΡΠ°ΡΡ, Π² ΡΠ·Π»Π°Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠ΅ ΠΎΠ΄Π½Ρ Π·Π°Π΄Π°ΡΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° IP-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π² VPP ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π² ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅: ΡΠ½Π°ΡΠ°Π»Π° Π² ΡΠ·Π»Π΅ ΡΠ°Π·Π±ΠΎΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠ°ΡΡΠΈΠ½Π³ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², Π° ΠΏΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² ΡΠ·Π΅Π», ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°Π΅Ρ ΠΏΠ°ΠΊΠ΅ΡΡ Π΄Π°Π»ΡΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ Π°ΡΠ΄ΠΊΠΎΡΠ°. ΠΠ²ΡΠΎΡΡ VPP Π½Π΅ ΡΠ΅ΡΠΏΡΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠΎΠ² Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΡΡΠ΅ΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π΅ΠΊΡΠΎΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΡΡΡΠ½ΡΡ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ: Π΅ΡΡΡ ΡΠΈΠΊΠ» ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΠΈΠ΄Π° Β«Ρ Π½Π°Ρ ΡΠ΅ΡΡΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΠΎΡΠ΅ΡΠ΅Π΄ΠΈΒ», Π·Π°ΡΠ΅ΠΌ β ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ Π΄Π²ΡΡ , Π·Π°ΡΠ΅ΠΌ β Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. Π§Π°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ 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. ΠΡΠΈΠΌ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ·Π΅Π» Π³ΡΠ°ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ NAT. ΠΠ»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° (ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· IPv6 Π² IPv4) Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΠ·Π΅Π» Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ NAT.
ΠΡΡΠΌΠΎΠΉ ΡΡΠ°ΡΠΈΠΊ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ° ΠΈΠ΄ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠ·Π»Ρ Π³ΡΠ°ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°ΠΌΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΡ.Β
ΠΠ΅ΡΠ²ΡΠΉ ΡΠ·Π΅Π» β sticky sessions. Π Π½ΡΠΌ Ρ
ΡΠ°Π½ΠΈΡΡΡ Ρ
ΡΡ ΠΎΡ
Π₯ΡΡ ΠΎΡ 5-tuple ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π½Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ·Π»Π΅ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π»ΡΡΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΡΠ΅ΡΡΡΡΠΎΠ² Π·Π° Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ. ΠΠΎΠ³Π΄Π° Π½Π° Π±Π°Π»Π°Π½ΡΡΠΎΠ²ΡΠΈΠΊ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π΅Ρ ΡΠ΅ΡΡΠΈΠΈ, ΠΎΠ½ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠ·Π΅Π» consistent hashing. Π’ΡΡ ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΠΌΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ΅ΡΡΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Β«ΠΆΠΈΠ²ΡΡ Β» ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠ°Π»Π΅Π΅ ΠΏΠ°ΠΊΠ΅ΡΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π² ΡΠ·Π΅Π» NAT, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ Π·Π°ΠΌΠ΅Π½Ρ Π°Π΄ΡΠ΅ΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΌΠΌ. ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΌΡ ΡΠ»Π΅Π΄ΡΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ VPP β ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌΡ, Π³ΡΡΠΏΠΏΠΈΡΡΠ΅ΠΌ ΡΡ ΠΎΠΆΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΊΡΡΠ΅ΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
ΠΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ΅ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠΎΡΠ΅ΠΌΡ ΠΌΡ Π²ΡΠ±ΡΠ°Π»ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ ΠΈ ΡΡΠΎ ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ°ΠΊΠΎΠ΅? ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠ΅ΠΆΠ½ΡΡ Π·Π°Π΄Π°ΡΡ β Π²ΡΠ±ΠΎΡΠ° ΡΠ΅ΡΡΡΡΠ° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°.Β
ΠΡΠΈ Π½Π΅ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠΌ Ρ
ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΡΠΈΡΠ»ΡΡΡ Ρ
ΡΡ ΠΎΡ Π²Ρ
ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ°, Π° ΡΠ΅ΡΡΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎ ΠΎΡΡΠ°ΡΠΊΡ ΠΎΡ Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ Ρ
ΡΡΠ° Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΠΎΠΊΠ° ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΡΠ°ΡΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Π½ΡΠΌ, ΡΠ°ΠΊΠ°Ρ ΡΡ
Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ
ΠΎΡΠΎΡΠΎ: ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅ΡΡ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ 5-tuple Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ½ΡΡΠ°Π½Ρ. ΠΡΠ»ΠΈ ΠΆΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ΅ΡΡΡΡ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π½Π° healthchecks, ΡΠΎ Π΄Π»Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ Ρ
ΡΡΠ΅ΠΉ Π²ΡΠ±ΠΎΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ. Π£ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ°Π·ΠΎΡΠ²ΡΡΡΡ TCP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ: ΠΏΠ°ΠΊΠ΅Ρ, ΡΠ°Π½Π΅Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π²ΡΠΈΠΉ Π½Π° ΠΈΠ½ΡΡΠ°Π½Ρ Π, ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π½Π° ΠΈΠ½ΡΡΠ°Π½Ρ Π, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ΅ΡΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ.
ΠΠΎΠ½ΡΠΈΡΡΠ΅ΡΠ½ΠΎΠ΅ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ°Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠ°ΠΊ: ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΡΡΠ΅, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠΎΠ»ΡΡΠΎ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΠ΅ ΡΠ΅ΡΡΡΡΡ ΠΏΠΎ Ρ ΡΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎ IP:port). ΠΡΠ±ΠΎΡ ΡΠ΅ΡΡΡΡΠ° β ΡΡΠΎ ΠΏΠΎΠ²ΠΎΡΠΎΡ ΠΊΠΎΠ»Π΅ΡΠ° Π½Π° ΡΠ³ΠΎΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎ Ρ ΡΡΡ ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ°.
Π’Π΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΠΊΠ° ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΎΡΡΠ°Π²Π° ΡΠ΅ΡΡΡΡΠΎΠ². Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ° ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ»ΡΡΠ° ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Ρ
ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»ΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΠ΅ΡΡΡΡ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠ° ΡΠΎΠΆΠ΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π½ΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ·Π΅Π» sticky sessions, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΡΠΈΠΈ Π½Π° Π½ΠΎΠ²ΡΠ΅ ΡΠ΅ΡΡΡΡΡ.
ΠΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ ΠΏΡΡΠΌΡΠΌ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ ΠΌΠ΅ΠΆΠ΄Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌΡΡ Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ. ΠΠ½ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΡ Π΅ΠΌΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΡΠ°ΡΠΈΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ β ΡΠ΅ΡΠ΅Π· Π°Π»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ NAT, ΡΠΎ Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ NAT 44 Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΠΊΠ° ΠΈ ΡΠ΅ΡΠ΅Π· NAT 46 Π΄Π»Ρ ΡΡΠ°ΡΠΈΠΊΠ° healthchecks. ΠΡ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΠΆΠ΅ ΡΡ Π΅ΠΌΡ: ΡΠ½ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌ ΡΡΠ°ΡΠΈΠΊ healthchecks ΠΈ ΡΠ΅Π°Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
Loadbalancer-node ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΡΠ±ΠΎΡΠ΅
Π ΡΠΎΡΡΠ°Π²Π΅ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ² ΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² Π² VPP ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ βΒ loadbalancer-node. ΠΠ½ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΏΠΎΡΠΎΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΎΡ loadbalancer-controller, ΡΠΌΠ΅Π΅Ρ ΡΡΡΠΎΠΈΡΡ ΡΠ°Π·Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ VPP ΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°. ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π·Π°ΠΌΠΊΠ½ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ: ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ· API ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π²ΠΈΡ healthcheck-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Β«ΠΆΠΈΠ²ΠΎΡΡΠΈΒ» ΡΠ΅ΡΡΡΡΠΎΠ². Π’ΠΎΡ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΡΠ°Π²ΠΈΡ Π·Π°Π΄Π°ΡΠΈ Π² healthcheck-node ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΡΠ΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΡΠ΄Π°ΡΡ ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΡ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊΠΎΠ². Loadbalancer-node ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠΎΠ±ΡΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° ΠΈ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ VPP. Π ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ Π·Π½Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΎ ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ . ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ²ΡΠ·Π΅ΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ, ΠΈ Ρ Π½Π°Ρ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ.
ΠΠ°ΠΊΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΡΠ΄Π°Π»ΠΎΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ
ΠΡΠ΅ Π½Π°ΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ Π² control plane Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° Go ΠΈ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΌΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΏΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΠΈ. Π Go Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΡ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ GRPC, Π²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π² ΡΠ΅Π±Π΅ ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ service discovery β Π½Π°ΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡ Π·Π° ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°, ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΡΡΠ°Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, ΠΈ ΠΌΡ ΠΏΡΠΎΠ²ΡΠ·Π°Π»ΠΈ ΡΡΠΎ Ρ GRPC-Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΎΠΉ. ΠΠ»Ρ ΠΌΠ΅ΡΡΠΈΠΊ ΠΌΡ ΡΠΎΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π data plane ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π΄ΠΎΡΡΠΎΠΉΠ½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ Π±ΠΎΠ»ΡΡΠΎΠΉ Π·Π°ΠΏΠ°Ρ ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ: ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΡΡΠ΅Π½Π΄, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΏΠ΅ΡΠ΅ΡΡΡΡ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ VPP, Π° Π½Π΅ ΠΆΠ΅Π»Π΅Π·Π½ΠΎΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΊΠ°ΡΡΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ
Π§ΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ? Π Go ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅, Π½ΠΎ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π²ΡΡ ΠΆΠ΅ Π±ΡΠ²Π°ΡΡ. Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ Π½ΠΈΠΌΠΈ β Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π³ΠΎΡΡΡΠΈΠ½Ρ ΠΈ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΡΡ ΠΈΡ Π·Π°Π²Π΅ΡΡΠ°ΡΡ. ΠΡΠ²ΠΎΠ΄: ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ Go-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π§Π°ΡΡΠΎ Ρ ΠΎΡΠΎΡΠΈΠΌ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΠΎΡΡΡΠΈΠ½. Π ΡΡΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠΈ Π΅ΡΡΡ ΠΈ ΠΏΠ»ΡΡ: Π² Go Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎ runtime β ΠΏΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ Π³ΠΎΡΡΡΠΈΠ½ ΠΈ ΠΏΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Go β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ Π»ΡΡΡΠΈΠΉ Π²ΡΠ±ΠΎΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ². ΠΠ½ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½ΡΠ΅, ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Β«Π·Π°ΠΏΡΡΡΠΈΡΡ Π²ΡΡ Π² CI ΠΏΠ°ΡΠΊΠΎΠΉΒ» Π΄Π»Ρ Π½ΠΈΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½Ρ ΠΊ ΡΠ΅ΡΡΡΡΠ°ΠΌ, Ρ Π½ΠΈΠΌΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π½Π°ΡΡΠΎΡΡΠΈΠ΅ ΡΠ°ΠΉΠΌΠ°ΡΡΡ. ΠΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΡ ΠΌΠΎΠ³ΡΡ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡΡ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ CPU Π·Π°Π½ΡΡ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΡΠ²ΠΎΠ΄: ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠΉΡΠ΅ Β«ΡΡΠΆΡΠ»ΡΠ΅Β» ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΎΡ ΡΠ½ΠΈΡ-ΡΠ΅ΡΡΠΎΠ².Β
ΠΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½Π°Ρ ΡΠΎΠ±ΡΡΠΈΠΉΠ½Π°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ°: Π³ΡΠ΅ΠΏΠ°ΡΡ Π»ΠΎΠ³ΠΈ Π½Π° Π΄Π΅ΡΡΡΠΊΠ°Ρ ΡΠ°Π·Π½ΡΡ ΠΌΠ°ΡΠΈΠ½ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΡΠ²ΠΎΠ΄: Π΅ΡΠ»ΠΈ Π΄Π΅Π»Π°Π΅ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ, ΡΡΠ°Π·Ρ Π΄ΡΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠΎ ΡΡΠ΅ΠΉΡΠΈΠ½Π³.
ΠΠ°ΡΠΈ ΠΏΠ»Π°Π½Ρ
ΠΡ Π·Π°ΠΏΡΡΡΠΈΠΌ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊ, IPv6-Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΡΠΈΠΊ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² Kubernetes, Π±ΡΠ΄Π΅ΠΌ ΠΈ Π΄Π°Π»ΡΡΠ΅ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ (ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°ΡΠ΄ΠΈΡΠΎΠ²Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ healthcheck-node ΠΈ healthcheck-ctrl), Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²ΡΠ΅ healthchecks, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΠΌΠ½ΡΡ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ. ΠΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°ΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ Π΅ΡΡ Π±ΠΎΠ»Π΅Π΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ β ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Π½Π΅ Π½Π°ΠΏΡΡΠΌΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ, Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. Π ΠΠ±Π»Π°ΠΊΠ΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ SQS-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ
ΠΠ΅Π΄Π°Π²Π½ΠΎ ΡΠΎΡΡΠΎΡΠ»ΡΡ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ· Yandex Load Balancer. ΠΠ·ΡΡΠ°ΠΉΡΠ΅
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com