Am mai multe programe care interacționează cu o API rest, fiecare cu o rată de apel diferită. Scopul meu este să le rulez pe toate pe același vps folosind supraveghetor. Dar dacă o fac fără niciun mecanism de control, API-ul de la distanță îmi dă o mulțime de erori de încălcare a ratei. Rulez o instanță Amazon Linux 2 cu două interfețe și două IP-uri elastice atașate.
Ceea ce mă străduiesc să fac este să direcționez apelurile de la unele programe eth0 iar unele peste tot et1. Ideea este ca API-ul să vadă două IP-uri diferite care vin, astfel încât limitele de rată să nu se declanșeze.
Înainte de orice încercare, iată configurația stocului:
iptables -L
INTRARE în lanț (politica ACCEPT)
target prot opt sursă destinație
Lanț FORWARD (politica ACCEPT)
target prot opt sursă destinație
Ieșire în lanț (politica ACCEPT)
target prot opt sursă destinație
afișare rută ip
implicit prin 172.31.32.1 dev eth0
implicit prin 172.31.32.1 dev eth1 metric 10001
169.254.169.254 dev eth0
172.31.32.0/20 dev eth0 proto kernel scope link src 172.31.43.78
172.31.32.0/20 dev eth1 proto kernel scope link src 172.31.47.106
Arată regulă ip
0: din toate căutările locale
32765: de la 172.31.47.106 căutare 10001
32766: din toate căutările principale
32767: din toate căutările implicite
ruta ip arată tabelul 10001
implicit prin 172.31.32.1 dev eth1
172.31.32.0/20 dev eth1 proto kernel scope link src 172.31.47.106
ip route show table local
difuzare 127.0.0.0 dev la proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
difuzare 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
difuzare 172.31.32.0 dev eth0 proto kernel scope link src 172.31.43.78
difuzare 172.31.32.0 dev eth1 proto kernel scope link src 172.31.47.106
local 172.31.43.78 dev eth0 proto kernel scope host src 172.31.43.78
local 172.31.47.106 dev eth1 proto nucleu domeniu gazdă src 172.31.47.106
difuzare 172.31.47.255 dev eth0 proto kernel scope link src 172.31.43.78
difuzare 172.31.47.255 dev eth1 proto kernel scope link src 172.31.47.106
lista de adrese ip
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue stare UNKNOWN grup implicit qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft pentru totdeauna preferred_lft pentru totdeauna
inet6 ::1/128 scope host
valid_lft pentru totdeauna preferred_lft pentru totdeauna
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
link/ether 0a:17:21:84:33:f8 brd ff:ff:ff:ff:ff:ff
inet 172.31.43.78/20 brd 172.31.47.255 scope global dynamic eth0
valid_lft 3423sec preferred_lft 3423sec
inet6 fe80::817:21ff:fe84:33f8/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP grup implicit qlen 1000
link/ether 0a:08:10:90:fa:f8 brd ff:ff:ff:ff:ff:ff
inet 172.31.47.106/20 brd 172.31.47.255 scope global dynamic eth1
valid_lft 2474sec preferred_lft 2474sec
inet6 fe80::808:10ff:fe90:faf8/64 scope link
valid_lft pentru totdeauna preferred_lft pentru totdeauna
Am încercat următoarele, dar fără succes. bmon nu arată nicio activitate et1 când programele sunt pornite de utilizator Test face apelurile lor. Le-am pus cu test chown:...
și chmod +s...
, pe langa adaugarea utilizator=test
la fișierele de configurare a supervizorului.
# adduser --system --no-create-home test
# iptables -A OUTPUT -m proprietar --uid-owner test -j MARK --set-mark 993
# regulă ip adăugați fwmark 993 tabelul 993
# ip route add default prin 172.31.32.1 dev eth1 table 993
# ip route add 172.31.32.0/20 dev eth1 proto kernel scope link src 172.31.47.106 tabelul 993
# ip route spălați memoria cache
Ce îmi lipsește?
Mulțumesc anticipat!