ืืขืงื ืืืจ ืืืืืจืื ("conntrack") ืืื ืืืคืืื ืืืื ืฉื ืืืกื ืืช ืืจืฉืช ืฉื ืืืืช ืืื ืืงืก. ืื ืืืคืฉืจ ืืงืจื ื ืืขืงืื ืืืจ ืื ืืืืืจื ืืจืฉืช ืืืืืืื ืื ืืืจืืืืช ืืืื ืืืืืช ืืช ืื ืืืืืืืช ืืืจืืืืืช ืื ืืจืืื ืื ืฉื ืืชื ืืืื ืืขืื ืืืชื ืืื ืืจืฆืฃ.
Conntrack ืืื ืชืืื ืช ืืืื ืืฉืืื ืืืฉืืฉืช ืืืื ืืงืจืื ืืกืืกืืื:
- NAT ืืกืชืื ืขื ืืืืข ื-conntrack ืื ืฉืืื ืืืื ืืืชืืืืก ืืื ืืืืืืืช ืืืืชื ืืจื ืืืืคื ืฉืืื. ืืืืืื, ืืืฉืจ ืคืื ื ืืืฉ ืืฉืืจืืช Kubernetes, ืืืื ืืขืืืก ืฉื kube-proxy ืืฉืชืืฉ ื-NAT ืืื ืืืคื ืืช ืชืขืืืจื ืืคืื ืกืคืฆืืคื ืืชืื ืืืฉืืื. Conntrack ืจืืฉื ืื ืขืืืจ ืืืืืจ ื ืชืื, ืื ืืืืืืืช ืืฉืืจืืช ื-IP ืืืืืืช ืืืืฉืื ืืืืชื ืคืื, ืืื ืื ืืช ืืืืืืจืืช ืขื ืืื ืืคืื ืืืืืจื ืืืืืืช ืืืืืช ืืฉืืืืจืืช ื-Pod ืฉืืื ื ืืืืขื ืืืงืฉื.
- ืืืืืช ืืฉ ืืชืงืืืืช ืืืื Calico ืืกืชืืืืช ืขื ืืืืข ื-connecttrack ืืขื ืืชืขืืืจืช "ืชืืืื" ืืจืฉืืืช ืืืืชืจืื. ืื ืืืคืฉืจ ืื ืืืชืื ืืืื ืืืช ืจืฉืช ืฉืืืืจืช "ืืคืฉืจ ืืคืื ืฉืื ืืืชืืืจ ืืื ืืชืืืช IP ืืจืืืงืช" ืืืื ืฉืชืฆืืจื ืืืชืื ืืืื ืืืช ืฉืชืืคืฉืจ ืืืคืืจืฉ ืชืขืืืจืช ืชืืืื. (ืืื ืื, ืชืฆืืจื ืืืืกืืฃ ืืช ืืืื ืืจืื ืคืืืช ืืืืืื "ืืคืฉืจ ืื ืืช ืืชืจืืื ืฉืื ืืื IP").
ืื ืืกืฃ, conntrack ืืฉืคืจ ืืืจื ืืื ืืช ืืืฆืืขื ืืืขืจืืช (ืขื ืืื ืืคืืชืช ืฆืจืืืช ืืืขืื ืืืฉืืืืช ืื ืืช) ืืืืืื ืฉืจืง ืืืืืื ืืจืืฉืื ื ืืืจื
ืืืื ืืขืืืจ ืขื ืื ืขืจืืืช ืืจืฉืช ืืื ืืงืืืข ืื ืืขืฉืืช ืืืชื. ืจืื ืืช ืืคืืกื"
ืขื ืืืช, ื-conntrack ืืฉ ืืืืืืช...
ืื ืืืคื ืืื ืืฉืชืืฉ?
ืืืืืช ื-conntrack ืืฉ ืืืื ืืงืกืืืื ืฉื ืืชื ืืืืืจื, ืืื ืืื ืืชืืื, ืืืืืจืื ืืืจื ืืื ืืชืืืืื ืืืืืืืช ืื ืืืืฉืื. ืืฉ ืืกืคืืง ืืงืื ืคื ืื ืืืืื ืืื ืืืชืืืื ืขื ืืชืขืืืจื ืฉื ืจืื ืืืืฉืืืื, ืืื ืืขืืื ืื ืืืคืื ืืืขืื. ืขื ืืืช, ืืฉื ื ืืื ืชืจืืืฉืื ืฉืืื ืืืื ืืฉืงืื ืืืฉืชืืฉ ืืืืืช ืืืืืืจืื:
- ืืืงืจื ืืืจืืจ ืืืืชืจ ืืื ืื ืืฉืจืช ืฉืื ืืืคื ืืืกืคืจ ืืืื ืืืื ืฉื ืืืืืจืื ืคืขืืืื ืื-ืืื ืืช. ืืืืืื, ืื ืืืืช ื-conntrack ืฉืื ืืืืืจืช ืขืืืจ 128 ืื ืืกืืช, ืืื ืืฉ ืื ืืืชืจ ื-128 ืืืืืจืื ืืืงืืื, ืืชื ืืืืืื ืชืืชืงื ืืืขืื!
- ืืงืจื ืงืฆืช ืคืืืช ืืจืืจ: ืื ืืฉืจืช ืฉืื ืืขืื ืืกืคืจ ืืืื ืืืื ืฉื ืืืืืจืื ืืฉื ืืื. ืื ืื ืืืืืืจืื ืงืฆืจื ืืืขื, ืื ืืืฉืืืื ืืืืืช ืืืขืงื ืขื ืืื ืืื ืืงืก ืืืฉื ืชืงืืคื ืืกืืืืช (120 ืฉื ืืืช ืืืจืืจืช ืืืื). ืืืืืื, ืื ืืืืช ื-conntrack ืฉืื ืืืืืจืช ื-128k ืื ืืกืืช ืืืชื ืื ืกื ืืืคื ื-1100 ืืืืืจืื ืืฉื ืืื, ืื ืืืจืื ืืืืืื ืฉื ืืืืช ื-conntrack, ืื ืื ืืืืืืจืื ืงืฆืจืื ืืืื (128k/120s = 1092 connections/ ืก).
ืืฉื ื ืืกืคืจ ืกืืื ื ืืฉื ืฉื ืืคืืืงืฆืืืช ืื ืืืืืช ืืงืืืืจืืืช ืืื. ืื ืืกืฃ, ืื ืืฉ ืื ืืจืื ืฉืืงื ืื ืืจืืขืื, ืืืืื ืืืืช ืืืืืืจืื ืฉื ืืฉืจืช ืฉืื ืืืจืื ืืืืืจืื ืคืชืืืื ืืืืฆื ืืืื ืืฉืืฉ ืืืืง ืืืชืงืคืช ืื ืืขืช ืฉืืจืืช (DOS). ืืฉื ื ืืืงืจืื, conntrack ืืืื ืืืคืื ืืฆืืืืจ ืืงืืืง ืืืืื ืืืขืจืืช ืฉืื. ืืืงืจืื ืืกืืืืื, ืืชืืืช ืคืจืืืจื ืืืืช ื-conntrack ืขืฉืืื ืืืกืคืืง ืืื ืืขื ืืช ืขื ืืฆืจืืื ืฉืื - ืขื ืืื ืืืืืช ืืืืื ืื ืืงืื ืช ืคืกืงื ืืืื ืฉื ื-conntrack (ืืื ืื ืชืขืฉื ืืืช ืื ื ืืื, ืชืชืงื ืืฆืจืืช ืจืืืช). ืืืงืจืื ืืืจืื ืืืื ืฆืืจื ืืขืงืืฃ ืืช ืืืืืฉ ืืชื ืืขื ืืืจืกืืืืช.
ืืืืื ืืืืชืืช
ืืืื ื ืืชื ืืืืื ืกืคืฆืืคืืช: ืืกืคืง SaaS ืืื ืืืื ืฉืขืืื ื ืืืชื ืืื ืืกืคืจ ืฉืจืชืื ืืืืืกื ืื ื-memcached ืืืืจืืื (ืื ืืืืื ืืช ืืืจืืืืืืืช), ืฉืื ืืื ืืื ืขืืื 50K+ ืืืืืจืื ืงืฆืจื ืืืื ืืฉื ืืื.
ืื ืขืจืื ื ืืกืืืื ืืชืฆืืจืช ื-conntrack, ืืืืืช ืืืื ืืืืื ืืืงืื ืช ืืื ืืืขืงื, ืืื ืืชืฆืืจื ืื ืืืืชื ืืืื ื, ืฆืจืืืช ื-RAM ืืืื ืืฉืืขืืชืืช, ืื ืฉืืืืื ืืขืื (ืืกืืจ ื'ืืื ืืืื!), ืืืืืืืจืื ืืื ืื ืื ืงืฆืจืื ืขื ืฉื-conntrack ืื ืืื ืืืื. ืืืฆืืจ ืืช ืืชืจืื ืืืืฆืืขืื ืืจืืื ืฉืื (ืฆืจืืืช ืืขืื ืืืคืืชืช ืื ืืืืื ืื ืืช).
ืื ืคื ื ืืงืืืืงื ืืืืืคื. ืืืื ืืืช ืจืฉืช Calico ืืืคืฉืจืช ืื ืื ืืืฉืชืืฉ ื-conntrack ืขืืืจ ืกืืืื ืืกืืืืื ืฉื ืชืขืืืจื (ืืืืฆืขืืช ืืคืฉืจืืช ืืืืื ืืืช doNotTrack). ืื ื ืชื ืืื ืืช ืจืืช ืืืืฆืืขืื ืืืจืืฉืื ืืื, ืืชืืกืคืช ืจืืช ืืืืืื ืื ืืกืคืช ืฉืกืืคืงื Calico.
ืืืืื ืืืจื ืชืฆืืจื ืืืืช ืืื ืืขืงืืฃ ืืช ืืงืฉืจ?
- ืืืื ืืืช ืจืฉืช ืื ืืขืงืื ืฆืจืืื ืืืจื ืืื ืืืืืช ืกืืืืจืืช. ืืืงืจื ืฉื ืกืคืง ื-SaaS: ืืืคืืืงืฆืืืช ืฉืืื ืจืฆื ืืชืื ืืืืืจ ืืืืื ืืืื, ืืืืฆืขืืช ืืืื ืืืช ืจืฉืช, ืื ืืืื ืืจืฉืื ืชืขืืืจื ืืืืฉืืืื ืกืคืฆืืคืืื ืืืจืื ืฉืงืืืื ืืืฉื ื-memcached.
- ืืืื ืืืช "ืื ืชืขืงืื" ืืื ื ืืืงืืช ืืืฉืืื ืืช ืืืืื ืืืืืืจ. ืืคืืื, ืื ืฉืจืช ื-memcached ื ืคืจืฅ, ืืชื ืืืื ืชืืืืจืืืช ืื ืกืืช ืืืชืืืจ ืืื ืืื ืืืงืืืืช memcached, ืื ืขืื ืืื ืืฉืชืืฉ ืืืฆืืืช ืืืงืืจ ืื ืืื ื. ืขื ืืืช, ืื ืืืืจืช ื ืืื ืืช ืืืื ืืืช ืืจืฉืช ืขืืืจ ืืงืืืืช ื-memcached ืฉืื, ื ืืกืืื ืืช ืืืืืืจ ืืืื ืขืืืื ืืืืื ืืฆื ืืืงืื.
- ืืืื ืืืช ื-do not-track ืืืืืช ืขื ืื ืืืืื, ืื ืืืื ืืืืื ืืืช ืจืืืื, ืืืืืืช ืจืง ืขื ืืืืืื ืืจืืฉืื ื ืืืจืืื. ืื ืืืื ืืืืืื ืืช ืฆืจืืืช ื-CPU ืืื ืื ื ืืืืืื ืฉืืฉ ืืืืื ืืช ืืืืื ืืืช ืขืืืจ ืื ืื ื. ืืื ืขืืืจ ืืืืืจืื ืงืฆืจื ืืืขื, ืืืฆืื ืื ืืืืื ืช ืขื ืืื ืืคืืชืช ืฆืจืืืช ืืืฉืืืื ืืขืืืื ืืืืืจืื. ืืืืืื, ืืืงืจื ืฉื ืกืคืง SaaS, ืืกืคืจ ืืืืืืืช ืืื ืืืืืจ ืืื ืงืื ืืืื, ืื ืฉืฆืจืืืช ื-CPU ืื ืืกืคืช ืืขืช ืืืืช ืืืื ืืืช ืขื ืื ืื ื ืืืืชื ืืืฆืืงืช.
ืืืื ื ืชืืื ืืืืืงื
ืืจืฆื ื ืืช ืืืืืงื ืขื ืคืื ืืืื ืขื ืฉืจืช memcached ืืืกืคืจ ืจื ืฉื memcached client pods ืืคืืขืืื ืขื ืฆืืชืื ืืจืืืงืื ืื ืฉื ืืื ืืืจืืฅ ืืกืคืจ ืืืื ืืืื ืฉื ืืืืืจืื ืืฉื ืืื. ืืฉืจืช ืขื ื-memcached server pod ืืื 8 ืืืืืช ื-512k ืื ืืกืืช ืืืืืช conntrack (ืืืื ืืืืื ืืืืืืจ ืืกืื ืืจืื ืขืืืจ ืืืืจื).
ืืืื ื ืืช ืืืืื ืืืืฆืืขืื ืืื: ืืื ืืืื ืืืช ืจืฉืช; ืขื ืืืื ืืืช Calico ืจืืืื; ืืืืื ืืืช ืื-ืืขืงื ืฉื Calico.
ืืืืืงื ืืจืืฉืื ื, ืืืืจื ื ืืช ืืกืคืจ ืืืืืืจืื ื-4.000 ืืฉื ืืื, ืืื ืฉื ืืื ืืืชืืงื ืืืืื ืืฆืจืืืช ืืืขืื. ืื ืืื ืืืืืื ืืฉืืขืืชืืื ืืื ืืืขืืจ ืืืื ืืืช ืืืื ืืืื ืืืช ืจืืืื, ืื ืื ืชืขืงืื ืืืจ ืืืืืื ืืช ืฆืจืืืช ืืืขืื ืื-20%:
ืืืืืงื ืืฉื ืืื, ืืฉืงื ื ืืื ืืืืืจืื ืฉืืืงืืืืช ืฉืื ื ืืืืืื ืืืฆืืจ ืืืืื ื ืืช ืืืกืคืจ ืืืจืื ืฉื ืืืืืจืื ืืฉื ืืื ืฉืืฉืจืช ื-memcached ืฉืื ื ืืืื ืืืชืืืื ืืืชื. ืืฆืคืื, ืืืงืจืื ืฉื "ืืื ืืืื ืืืช" ื"ืืืื ืืืช ืจืืืื" ืืืืขื ืฉื ืืื ืืืืืืช ืืืืืืจ ืฉื ืืืขืื ื-4,000 ืืืืืจืื ืืฉื ืืื (512k / 120s = 4,369 ืืืืืจืื/s). ืขื ืืืื ืืืช ืื-ืืขืงืื, ืืืงืืืืช ืฉืื ื ืฉืืื 60,000 ืืืืืจืื ืืฉื ืืื ืืื ืื ืืขืื. ืื ืื ื ืืืืืื ืฉื ืืื ืืืืืื ืืช ืืืกืคืจ ืืื ืขื ืืื ืืืกืคืช ืืงืืืืช ื ืืกืคืื, ืืื ืื ืื ื ืืจืืืฉืื ืฉืืืกืคืจืื ืืืื ืืืจ ืืกืคืืงืื ืืื ืืืืืืฉ ืืช ืืคืืื ืื ืฉื โโืืืืจ ืื!
ืืกืงื ื
Conntrack ืืื ืชืืื ืช ืืืื ืืฉืืื. ืืื ืขืืฉื ืืช ืืขืืืื ืฉืื ืืฆืืจื ืืืฉืืืช. ืืื ืืฉืืฉ ืืขืชืื ืงืจืืืืช ืขื ืืื ืจืืืื ืืขืจืืช ืืจืืืืื. ืขื ืืืช, ืืืื ืชืจืืืฉืื ืกืคืฆืืคืืื, ืืขืืืก ืื ืืืข ืืืงืฉืจ ืขืืื ืขื ืืืชืจืื ืืช ืืจืืืืื ืฉืืื ืืกืคืง. ืืชืจืืืฉ ืื, ื ืืชื ืืืฉืชืืฉ ืืืืื ืืืช ืืจืฉืช ืฉื Calico ืืื ืืืฉืืืช ืืืืคื ืกืืงืืืื ืืช ืืฉืืืืฉ ื-conntrack ืชืื ืืืืจืช ืืืืืช ืืจืฉืช. ืขืืืจ ืื ืชื ืืขื ืืืจืช, conntrack ืืืฉืื ืืืืืช ืืืจ ืฉืื!
ืงืจื ืื ืืืืจืื ืืืจืื ืืืืื ืฉืื ื:
ืื ืืืช ืืืืืืื ืืื ืืืื ืขืืืจ Nginx ืืืืจืืช ืขื ืืจืฉืืช Kubernetes ืฉื Hashicorp Consult ืืืืืืื ืืืืืชืืื ื- Kubernetes ืืืืื ืฉื ืืกืคืจ ืจื ืฉื ืคืจืืืงืื ืืื ืืจื ื ืืืจืืื ืืื ืืื ืืืืจื ืขืืืจ Redmine. ืืื ืืคืฉื ืืช ืืืืื ืืขืฆืื ืืืืืจืื
ืืงืืจ: www.habr.com