Como eu reservo largura de banda para o rsync?

2

Atualmente, o nginx usa toda a minha largura de banda. Como faço para deixar alguns para o rsync?

    
por user126311 28.06.2012 / 11:45

2 respostas

3

Este é um esboço e você precisa descobrir todos os detalhes, mas é assim que deve ser possível:

O que você quer pode ser feito usando dois recursos de kernel específicos do Linux, ou seja, cgroups e o QoS subsystem com suas políticas de agendamento.

O que você basicamente precisa é colocar o nginx e seus filhos em um cgroup próprio, use o discq scheduler do QoS que então pode agir no controlador net_cls (Veja este documento RedHat que descreve aproximadamente net_cls). O que ele faz é acrescentar uma tag a cada pacote que se origina de um soquete que foi criado por um PID vindo do cgroup onde o nginx está.

Você, obviamente, precisa criar a mesma configuração de cgroup para o rsync. Tome cuidado para que você possa fazer todas as máquinas do cgroups antes de chamar o rsync ou configurar o rsyncd de acordo.

Essa 'tag' que está sendo anexada a partir de net_cls, pode ser usada como classid no filtro anexado ao qdisc para passar o tráfego para classes diferentes. Você também precisa definir classes de largura de banda que contenham os limites de largura de banda que você deseja atribuir a seus dois cgroups, como teto de 500 Mbit / s para nginx e 500 Mbit / s para rsync. Por favor, note que as advertências usuais sobre QoS e taxa de limitação ou enfileiramento TCP se aplicam.

    
por 28.06.2012 / 12:03
2

Este código classificaria a porta de limite 80.443 (HTTP, HTTPS) para um máximo de 0.5Mb e rebentaria para 0.6Mb. Ajuste / ajuste para atender às suas necessidades.

/sbin/tc qdisc add dev eth0 root handle 1: htb
/sbin/tc class add dev eth0 parent 1: classid 1:1 htb rate 1024kbps
/sbin/tc class add dev eth0 parent 1:1 classid 1:5 htb rate 512kbps ceil 640kbps prio 1
/sbin/tc class add dev eth0 parent 1:1 classid 1:6 htb rate 512kbps ceil 640kbps prio 0
/sbin/tc filter add dev eth0 parent 1:0 prio 1 protocol ip handle 5 fw flowid 1:5
/sbin/tc filter add dev eth0 parent 1:0 prio 0 protocol ip handle 6 fw flowid 1:6
/sbin/iptables -A OUTPUT -t mangle -p tcp --sport 80 -j MARK --set-mark 5
/sbin/iptables -A OUTPUT -t mangle -p tcp --sport 443 -j MARK --set-mark 6

De link

    
por 28.06.2012 / 12:18