Você poderia me ajudar?
sudo echo "1" > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 1.1.1.1
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 2.2.2.2
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
Estou usando essas regras de iptables para criar servidores de balanceamento de carga. Estou apenas distribuindo conteúdos .mp4 e .mp3, mas essas regras usam a largura de banda do servidor que estou usando para fazer esse encaminhamento em vez da largura de banda do servidor de destino.
Como posso resolver isso? O usuário deve usar a largura de banda do servidor de destino em vez do servidor de redirecionamento. Obrigado.
Responder1
Como posso resolver isso? O usuário deve usar a largura de banda do servidor de destino em vez do servidor de redirecionamento. Obrigado.
Geralmente existem algumas maneiras:
- Use DNS Round Robin. Todos os servidores compartilham o mesmo nome, mas em IPs diferentes. Os clientes escolherão um servidor aleatório.
- Use redirecionamentos para enviar os usuários a um servidor apropriado.
- Utilize Anycast. Todos os servidores têm o mesmo IP. Devido à forma como o roteamento funciona, os usuários geralmente se conectam a um local.
Round Robin DNS e redirecionamentos geralmente são algo que você mesmo pode configurar. Para anycast, você terá que ser capaz de anunciar o BGP em várias regiões e envolver-se com vários ISPs ao redor do mundo.
Outra ideia excelente seria simplesmente ignorar o problema e colocar um serviço como Cloudflare ou Akami na frente e deixá-los cuidar do balanceamento de carga. Se você quiser mais controle, também é possível hospedar o conteúdo em uma solução em nuvem, como Azure ou Google Cloud, onde você precisa se preocupar menos com a carga para obter itens do armazenamento de blobs.
O que suas regras fazem
Com suas regras, você reescreve o destino do pacote e os envia para um servidor diferente. EmAdiçãovocêmascará-los, para que para os servidores backend pareça que o pacote veio do seu frontend. O backend responde devidamente, enviando o pacote de resposta de volta ao seu frontend, que procura na tabela de onde veio a conexão e envia o pacote para o cliente original. O servidor - que na verdade é um roteador, precisa tocar nos pacotes para reescrever os cabeçalhos, e todos os pacotes precisam passar por esse servidor.
Em muitos casos, tal configuração pode fazer muito sentido. É bastante trivial rotear muito tráfego e é fácil e robusto de configurar. Ele permite alta disponibilidade, onde você descarta servidores que não respondem, e para cargas que não têm estado, é extremamente fácil aumentar a capacidade - desde que seu roteador possa lidar com a quantidade de tráfego.