problema mea:
Am un proces care creează mai mult de 10k TCP-Connection la aceeași destinație IP&Port pe secundă. După o perioadă scurtă de timp, nu mai pot fi create conexiuni noi, deoarece nu mai sunt porturi sursă disponibile.
Am încercat deja să atenuez acest lucru prin setare net.ipv4.ip_local_port_range
și net.ipv4.tcp_fin_timeout
dar nu a rezolvat problema.
Acum gândul meu a fost: dacă aș putea spune nucleului să adreseze IP sursă rotunjite, atunci aș putea adăuga cu ușurință mai multe IP-uri la singura mea interfață și, prin urmare, am o limită mai mare de conexiuni de ieșire.
Am încercat să adaug mai multe rute către aceeași destinație prin aceeași interfață, dar am specificat IP-uri surse diferite:
IP route add default prin 10.1.1.1 dev eth0 src 10.1.1.10
ruta ip adăugați implicit prin 10.1.1.1 dev eth0 src 10.1.1.11
Dar înțeleg RTNETLINK răspunde: Fișierul există
.
Sunt pe drumul cel bun aici?
Adăugarea unui alt IP sursă este „they way to go” în acele cazuri?
Există o modalitate de a rotunji robin / echilibrare încărcătură utilizarea IP-urilor sursă prin nucleu cumva?
Speranța mea a fost că, în cazul în care reușesc să plasez două rute cu aceeași greutate, dar cu adrese src diferite către aceeași rețea, kernel-ul ar face round robin that.
(De fundal: rulez HAproxy pe acea mașină și trebuie să echilibrez încărcarea a mai mult de 10.000 conexiuni către un singur server backend)