¿Usted me podría ayudar?
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
Estoy usando estas reglas de iptables para crear servidores de equilibrio de carga. Solo estoy distribuyendo contenidos .mp4 y .mp3, pero estas reglas utilizan el ancho de banda del servidor que estoy usando para realizar este reenvío en lugar del ancho de banda del servidor de destino.
¿Como puedo resolver esto? El usuario debe utilizar el ancho de banda del servidor de destino en lugar del servidor de redireccionamiento. Gracias.
Respuesta1
¿Como puedo resolver esto? El usuario debe utilizar el ancho de banda del servidor de destino en lugar del servidor de redireccionamiento. Gracias.
Generalmente hay algunas maneras:
- Utilice DNS por turnos. Todos los servidores comparten el mismo nombre, pero en diferentes IP. Los clientes elegirán un servidor aleatorio.
- Utilice redireccionamientos para enviar a los usuarios a un servidor apropiado.
- Utilice Anycast. Todos los servidores tienen la misma IP. Debido a la forma en que funciona el enrutamiento, los usuarios generalmente se conectarán a uno local.
Round Robin DNS y redireccionamientos generalmente son algo que puede configurar usted mismo. Para anycast, deberá poder anunciar BGP en múltiples regiones usted mismo e involucrarse con múltiples ISP en todo el mundo.
Otra idea excelente sería simplemente ignorar el problema y darle una palmada a un servicio como Cloudflare o Akami y dejar que se encarguen del equilibrio de carga. Si desea tener más control, también es posible alojar el contenido en una solución en la nube como Azure o Google Cloud, donde en menor medida tendrá que preocuparse por la carga para obtener cosas del almacenamiento de blobs.
¿Qué hacen tus reglas?
Con sus reglas, reescribe el destino del paquete y lo envía a un servidor diferente. Ensumatúdisfrazarlos, para que a los servidores backend les parezca que el paquete proviene de su frontend. El backend responde diligentemente, enviando el paquete de respuesta de regreso a su frontend, que busca en su tabla de dónde vino esa conexión y envía el paquete al cliente original. El servidor, que en realidad es un enrutador, tiene que tocar los paquetes para reescribir los encabezados, y todos los paquetes deben pasar a través de ese servidor.
En muchos casos, una configuración de este tipo puede tener mucho sentido. Es bastante trivial enrutar una gran cantidad de tráfico y es fácil y sólido de configurar. Permite alta disponibilidad, donde se descartan servidores que no responden, y para cargas que no tienen estado, es extremadamente fácil aumentar la capacidad, siempre que su enrutador pueda manejar la cantidad de tráfico.