ΠšΠΎΠ³Π°Ρ‚ΠΎ Linux conntrack Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ ваш приятСл

ΠšΠΎΠ³Π°Ρ‚ΠΎ Linux conntrack Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ ваш приятСл

ΠŸΡ€ΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° (β€žconntrackβ€œ) Π΅ основна характСристика Π½Π° мрСТовия стСк Π½Π° ядрото Π½Π° Linux. Вя позволява Π½Π° ядрото Π΄Π° слСди всички логичСски ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΈ ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΡΡŠΡΡ‚Π°Π²ΡΡ‚ всСки ΠΏΠΎΡ‚ΠΎΠΊ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ Π·Π°Π΅Π΄Π½ΠΎ послСдоватСлно.

Conntrack Π΅ Π²Π°ΠΆΠ½Π° функция Π½Π° ядрото, която сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² някои основни случаи:

  • NAT Ρ€Π°Π·Ρ‡ΠΈΡ‚Π° Π½Π° информация ΠΎΡ‚ conntrack, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π° Π΅Π΄Π½Π°ΠΊΠ²ΠΎ всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ ΠΏΠΎΡ‚ΠΎΠΊ. НапримСр, ΠΊΠΎΠ³Π°Ρ‚ΠΎ pod ΠΈΠΌΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ услуга Π½Π° Kubernetes, kube-proxy load balancer ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° NAT, Π·Π° Π΄Π° насочи Ρ‚Ρ€Π°Ρ„ΠΈΠΊ към ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ pod Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Conntrack записва, Ρ‡Π΅ Π·Π° Π΄Π°Π΄Π΅Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ към IP услугата трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ Π΄ΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ pod ΠΈ Ρ‡Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, Π²ΡŠΡ€Π½Π°Ρ‚ΠΈ ΠΎΡ‚ backend pod, трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ NATed ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ към pod, ΠΎΡ‚ ΠΊΠΎΠΉΡ‚ΠΎ Π΅ дошла заявката.
  • Π—Π°Ρ‰ΠΈΡ‚Π½ΠΈΡ‚Π΅ стСни с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠ°Ρ‚ΠΎ Calico, Ρ€Π°Π·Ρ‡ΠΈΡ‚Π°Ρ‚ Π½Π° информация ΠΎΡ‚ connecttrack Π·Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° β€žΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€β€œ Π² бСлия списък. Π’ΠΎΠ²Π° Π²ΠΈ позволява Π΄Π° Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, която ΠΊΠ°Π·Π²Π° β€žΡ€Π°Π·Ρ€Π΅ΡˆΠ΅Ρ‚Π΅ Π½Π° моя ΠΌΠΎΠ΄ΡƒΠ» Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅ с всСки ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ IP Π°Π΄Ρ€Π΅Ρβ€œ, Π±Π΅Π· Π΄Π° сС Π½Π°Π»Π°Π³Π° Π΄Π° ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€. (Π‘Π΅Π· Ρ‚ΠΎΠ²Π° Ρ‰Π΅ трябва Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ сигурното ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ β€žΡ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ към моя ΠΏΠΎΠ΄ ΠΎΡ‚ всСки IPβ€œ.)

ОсвСн Ρ‚ΠΎΠ²Π° conntrack ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ подобрява производитСлността Π½Π° систСмата (Ρ‡Ρ€Π΅Π· намаляванС Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° процСсора ΠΈ латСнтността Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅), Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ само ΠΏΡŠΡ€Π²ΠΈΡΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ°
трябва Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ ΠΏΡ€Π΅Π· цСлия ΠΌΡ€Π΅ΠΆΠΎΠ² стСк, Π·Π° Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡ€Π°Π²ΠΈ с Π½Π΅Π³ΠΎ. Π’ΠΈΠΆΡ‚Π΅ публикацията "Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° kube-прокси Ρ€Π΅ΠΆΠΈΠΌΠΈ", Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠ²Π°.

Conntrack ΠΎΠ±Π°Ρ‡Π΅ ΠΈΠΌΠ° своитС ограничСния...

И Ρ‚Π°ΠΊΠ°, къдС сС ΠΎΠ±ΡŠΡ€ΠΊΠ° всичко?

Π’Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° conntrack ΠΈΠΌΠ° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌ максималСн Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ Π°ΠΊΠΎ сС напълни, Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ Π΄Π° сС ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΡΡ‚ ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Ρ‚. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΈΠΌΠ° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ свободно място Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ прилоТСния ΠΈ Ρ‚ΠΎΠ²Π° Π½ΠΈΠΊΠΎΠ³Π° няма Π΄Π° сС ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅ Π² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Има ΠΎΠ±Π°Ρ‡Π΅ няколко сцСнария, Π² ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° искатС Π΄Π° обмислитС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° conntrack:

  • Най-очСвидният случай Π΅, Π°ΠΊΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π²ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ голям Π±Ρ€ΠΎΠΉ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ. НапримСр, Π°ΠΊΠΎ Π²Π°ΡˆΠ°Ρ‚Π° conntrack Ρ‚Π°Π±Π»ΠΈΡ†Π° Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π° Π·Π° 128k записа, Π½ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ >128k Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ, със сигурност Ρ‰Π΅ сС Π½Π°Ρ‚ΡŠΠΊΠ½Π΅Ρ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ!
  • Малко ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ случай: Π°ΠΊΠΎ Π²Π°ΡˆΠΈΡΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ голям Π±Ρ€ΠΎΠΉ Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² сСкунда. Π”ΠΎΡ€ΠΈ Π°ΠΊΠΎ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ са ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ, Ρ‚Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°Ρ‚ Π΄Π° сС Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ‚ ΠΎΡ‚ Linux Π·Π° извСстСн ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅ (120s ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅). НапримСр, Π°ΠΊΠΎ Π²Π°ΡˆΠ°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° conntrack Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π° Π·Π° 128k записи ΠΈ сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚Π΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ 1100 Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² сСкунда, Ρ‚Π΅ Ρ‰Π΅ Π½Π°Π΄Π²ΠΈΡˆΠ°Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° conntrack, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ са ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ (128k/120s = 1092 Π²Ρ€ΡŠΠ·ΠΊΠΈ/ с).

Има няколко нишови Ρ‚ΠΈΠΏΠ° прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ Π² Ρ‚Π΅Π·ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. ОсвСн Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ ΠΌΠ½ΠΎΠ³ΠΎ лоши участници, ΠΏΠΎΠΏΡŠΠ»Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° conntrack Π½Π° вашия ΡΡŠΡ€Π²ΡŠΡ€ с ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡƒΠΎΡ‚Π²ΠΎΡ€Π΅Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°Ρ‚ΠΎ част ΠΎΡ‚ Π°Ρ‚Π°ΠΊΠ° Π·Π° ΠΎΡ‚ΠΊΠ°Π· Π½Π° услуга (DOS). И Π² Π΄Π²Π°Ρ‚Π° случая conntrack ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Π²ΡŠΡ€Π½Π΅ Π² ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‰ΠΎ тясно място във Π²Π°ΡˆΠ°Ρ‚Π° систСма. Π’ някои случаи ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° conntrack ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ, Π·Π° Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π½ΡƒΠΆΠ΄ΠΈ - Ρ‡Ρ€Π΅Π· ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠ»ΠΈ намаляванС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅ Π½Π° conntrack (Π½ΠΎ Π°ΠΊΠΎ Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎ, Ρ‰Π΅ сС Π½Π°Ρ‚ΡŠΠΊΠ½Π΅Ρ‚Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ). Π—Π° Π΄Ρ€ΡƒΠ³ΠΈ случаи Ρ‰Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈ conntrack Π·Π° агрСсивСн Ρ‚Ρ€Π°Ρ„ΠΈΠΊ.

Π Π΅Π°Π»Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

НСка Π΄Π°Π΄Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π΅Π΄ΠΈΠ½ голям доставчик Π½Π° SaaS, с ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΡ…ΠΌΠ΅, имашС няколко memcached ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° хостовС (Π½Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини), всСки ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΡˆΠ΅ 50K+ краткосрочни Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² сСкунда.

Π’Π΅ СкспСримСнтираха с конфигурацията conntrack, ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°ΠΉΠΊΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ ΠΈ намалявайки Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° прослСдяванС, Π½ΠΎ конфигурацията бСшС Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½Π°, консумацията Π½Π° RAM сС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ бСшС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ (ΠΎΡ‚ ΠΏΠΎΡ€ΡΠ΄ΡŠΠΊΠ° Π½Π° GBytes!), Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ бяха Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° къси, Ρ‡Π΅ conntrack Π½Π΅ създадС ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½Π°Ρ‚Π° си ΠΏΠΎΠ»Π·Π° ΠΎΡ‚ производитСлността (Π½Π°ΠΌΠ°Π»Π΅Π½Π° консумация Π½Π° CPU ΠΈΠ»ΠΈ латСнтност Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ).

Π’Π΅ сС ΠΎΠ±ΡŠΡ€Π½Π°Ρ…Π° към Calico ΠΊΠ°Ρ‚ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°. ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° Calico Π²ΠΈ позволяват Π΄Π° Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ conntrack Π·Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Ρ‚Ρ€Π°Ρ„ΠΈΠΊ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ опцията Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° doNotTrack). Π’ΠΎΠ²Π° ΠΈΠΌ Π΄Π°Π΄Π΅ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° производитСлност, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ…Π°, плюс Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ Π½Π° сигурност, осигурСно ΠΎΡ‚ Calico.

Какви дълТини Ρ‰Π΅ трябва Π΄Π° ΠΈΠ·ΠΌΠΈΠ½Π΅Ρ‚Π΅, Π·Π° Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡ‚Π΅ conntrack?

  • ΠœΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π·Π° Π½Π΅-прослСдяванС ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ трябва Π΄Π° са симСтрични. Π’ случая Π½Π° доставчика Π½Π° SaaS: Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ прилоТСния Ρ€Π°Π±ΠΎΡ‚Π΅Ρ…Π° Π² Π·Π°Ρ‰ΠΈΡ‚Π΅Π½Π°Ρ‚Π° Π·ΠΎΠ½Π° ΠΈ слСдоватСлно, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, Ρ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ…Π° Π΄Π° поставят Π² бСлия списък Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ прилоТСния, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ бСшС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ memcached.
  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° Π½Π΅-прослСдяванС Π½Π΅ Π²Π·Π΅ΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ посоката Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½, Π°ΠΊΠΎ memcached ΡΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ Π΅ Ρ…Π°ΠΊΠ½Π°Ρ‚, Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ с ΠΊΠΎΠΉΡ‚ΠΎ ΠΈ Π΄Π° Π΅ ΠΎΡ‚ memcached ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅, стига Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° правилния ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΠΏΠΎΡ€Ρ‚. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ стС Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π»ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° Π²Π°ΡˆΠΈΡ‚Π΅ memcached ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚Π΅Π·ΠΈ ΠΎΠΏΠΈΡ‚ΠΈ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ ΠΏΠ°ΠΊ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΈ ΠΎΡ‚ страна Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.
  • ΠŸΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π·Π° нСпрослСдяванС сС ΠΏΡ€ΠΈΠ»Π°Π³Π° към всСки ΠΏΠ°ΠΊΠ΅Ρ‚, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ само към ΠΏΡŠΡ€Π²ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° процСсора Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° трябва Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π·Π° всСки ΠΏΠ°ΠΊΠ΅Ρ‚. Но Π·Π° ΠΊΡ€Π°Ρ‚ΠΊΠΎΡ‚Ρ€Π°ΠΉΠ½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ Ρ‚ΠΎΠ·ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ сС балансира ΠΎΡ‚ намаляванСто Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° рСсурси Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° conntrack. НапримСр, Π² случай Π½Π° SaaS доставчик, броят Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π·Π° всяка Π²Ρ€ΡŠΠ·ΠΊΠ° бСшС ΠΌΠ½ΠΎΠ³ΠΎ малък, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π°Ρ‚Π° консумация Π½Π° процСсор ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ към всСки ΠΏΠ°ΠΊΠ΅Ρ‚ бСшС ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π°.

Π”Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ тСстванСто

ΠŸΡ€ΠΎΠ²Π΅Π΄ΠΎΡ…ΠΌΠ΅ тСста Π½Π° Π΅Π΄ΠΈΠ½ pod с memcached ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ мноТСство memcached клиСнтски pods, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΈ възли, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° изпълнявамС ΠΌΠ½ΠΎΠ³ΠΎ голям Π±Ρ€ΠΎΠΉ Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² сСкунда. Π‘ΡŠΡ€Π²ΡŠΡ€ΡŠΡ‚ с memcached server pod имашС 8 ядра ΠΈ 512k записа Π² conntrack Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° (стандартно конфигурирания Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π·Π° хоста).
Π˜Π·ΠΌΠ΅Ρ€ΠΈΡ…ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π² производитСлността ΠΌΠ΅ΠΆΠ΄Ρƒ: липса Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°; с Ρ€Π΅Π΄ΠΎΠ²Π½Π° ΠΏΠΎΠ»ΠΈΡ†Π° Calico; ΠΈ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° Π½Π΅-прослСдяванС Π½Π° Calico.

Π—Π° ΠΏΡŠΡ€Π²ΠΈΡ тСст Π·Π°Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ броя Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈΡ‚Π΅ Π½Π° 4.000 Π² сСкунда, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° сС ΡΡŠΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΠΌ Π²ΡŠΡ€Ρ…Ρƒ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π² консумацията Π½Π° процСсора. НямашС Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π°Π·Π»ΠΈΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ липсата Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π°Ρ‚Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°, Π½ΠΎ Π½Π΅-прослСдявайтС ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΎΡ‚ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° процСсора с ΠΎΠΊΠΎΠ»ΠΎ 20%:

ΠšΠΎΠ³Π°Ρ‚ΠΎ Linux conntrack Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ ваш приятСл

Π’ΡŠΠ² втория тСст стартирахмС Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚, ΠΈ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ…ΠΌΠ΅ максималния Π±Ρ€ΠΎΠΉ Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² сСкунда, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π°ΡˆΠΈΡΡ‚ memcached ΡΡŠΡ€Π²ΡŠΡ€ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈ. ΠšΠ°ΠΊΡ‚ΠΎ сС ΠΎΡ‡Π°ΠΊΠ²Π°ΡˆΠ΅, случаитС β€žΠ±Π΅Π· ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°β€œ ΠΈ β€žΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°β€œ достигнаха Π»ΠΈΠΌΠΈΡ‚Π° Π½Π° conntrack ΠΎΡ‚ Π½Π°Π΄ 4,000 Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² сСкунда (512k / 120s = 4,369 Π²Ρ€ΡŠΠ·ΠΊΠΈ/s). Π‘ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π±Π΅Π· прослСдяванС, Π½Π°ΡˆΠΈΡ‚Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΡ…Π° 60,000 XNUMX Π²Ρ€ΡŠΠ·ΠΊΠΈ Π² сСкунда Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. Π‘ΠΈΠ³ΡƒΡ€Π½ΠΈ смС, Ρ‡Π΅ Π±ΠΈΡ…ΠΌΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π΄Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ Ρ‚ΠΎΠ·ΠΈ Π±Ρ€ΠΎΠΉ, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΈ, Π½ΠΎ смятамС, Ρ‡Π΅ Ρ‚Π΅Π·ΠΈ числа Π²Π΅Ρ‡Π΅ са Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΈ, Π·Π° Π΄Π° ΠΈΠ»ΡŽΡΡ‚Ρ€ΠΈΡ€Π°Ρ‚ смисъла Π½Π° Ρ‚Π°Π·ΠΈ статия!

ΠšΠΎΠ³Π°Ρ‚ΠΎ Linux conntrack Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ ваш приятСл

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Conntrack Π΅ Π²Π°ΠΆΠ½Π° функция Π½Π° ядрото. Π’ΠΎΠΉ си Π²ΡŠΡ€ΡˆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΠ΅Ρ€Ρ„Π΅ΠΊΡ‚Π½ΠΎ. ЧСсто сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡ΠΎΠ²ΠΈ систСмни ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π² някои спСцифични сцСнарии, Π·Π°Π΄Ρ€ΡŠΡΡ‚Π²Π°Π½ΠΈΡΡ‚Π°, Π΄ΡŠΠ»ΠΆΠ°Ρ‰ΠΈ сС Π½Π° conntrack, ΠΏΡ€Π΅Π²ΠΈΡˆΠ°Π²Π°Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΈΡ‚Π΅ прСдимства, ΠΊΠΎΠΈΡ‚ΠΎ прСдоставя. Π’ Ρ‚ΠΎΠ·ΠΈ сцСнарий ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ Π½Π° Calico ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° сСлСктивно Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° conntrack, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сС повишава ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° сигурност. Π—Π° цСлия останал Ρ‚Ρ€Π°Ρ„ΠΈΠΊ conntrack ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° бъдС ваш приятСл!

ΠŸΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ статии Π² нашия Π±Π»ΠΎΠ³:

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€