¿Cómo redirigir a los usuarios a diferentes servidores según su ubicación?

8

Tengo un sitio web que se desarrolla utilizando ASP.NET y MY DB es MySQL. Actualmente está alojado en servidores de EE. UU. Pero cuando intento acceder a él cerca de India, los contenidos dinámicos se cargan demasiado lentamente. Es aceptable ya que la solicitud tiene que ir a otro lado del mundo. En Estados Unidos es muy rápido. Ya conecté este sitio con cloudflare CDN. Pero CDN es útil para contenidos estáticos. Casi todas mis páginas tienen contenidos dinámicos.

Entonces quiero escalar este sitio web. Entonces, si una solicitud vino de Estados Unidos, quiero manejar esa solicitud del servidor de EE. UU. Y si una solicitud vino de ASIA, quiero que se maneje desde un servidor ASIAN. Pero tenga en cuenta que no importa dónde fueron redirigidos, el contenido debe ser el mismo en dos servidores. (Dos servidores deben estar sincronizados)

Entonces, ¿cómo lograr esta arquitectura?

¿Cómo google, Facebook, Yahoo hacen esto? ¿Cómo sirven en todo el mundo? Creo que tienen centros de datos en todos los continentes. ¿Cómo se sincronizan entre sí?

Prageeth Liyanage
fuente

Respuestas:

10

Además de lo que respondió @ Gabriel-Talavera, agregaría un par de notas:

  • El enrutamiento de la red, así como el equilibrio de carga geográfica, no tiene ninguna relación con la "sincronización de datos" entre diferentes servidores. Son dos problemas abordados con muchas tecnologías muy diferentes.

Como el título de su pregunta parece centrarse en el lado de la red, me centraré en la primera parte (los problemas de enrutamiento de la red).

Como puede ver usted mismo, las pequeñas empresas de TIC no pueden cumplir los requisitos. Pero las compañías "globales" (como las que mencionó en su OP), no tendrán problemas para adoptarlo.

Como nota al margen, la primera vez que escuché sobre "anycast" fue gracias a una publicación de CloudFlare BLOG , donde discutieron (... entre muchas otras cosas), cómo anycast también se puede adoptar como una contramedida para D- Ataques de DOS.

Damiano Verzulli
fuente
3

Puede dar respuestas DNS selectivas basadas en la ubicación con vistas BIND si está utilizando BIND como su servidor DNS externo. La Vista previa técnica de la nueva versión de Windows Server también tiene una característica llamada Políticas DNS que parece muy prometedora.

Para servir contenido basado en la ubicación del cliente y otros criterios, como el Agente de usuario o los horarios, F5 tiene un dispositivo llamado Global Traffic Manager que, junto con sus equilibradores de carga, logra lo que está buscando. En entornos de nube, la ruta 53 de Amazon puede lograr lo mismo.

Para mantener los datos sincronizados, debe tener un back-end de almacenamiento capaz de realizar una replicación sincronizada, o utilizar la replicación proporcionada por MySQL, que mantendrá los datos replicados consistentes.

Gabriel Talavera
fuente
pero esto no funcionará de manera confiable si los clientes usan diferentes servidores DNS como Google DNS u OpenDNS.
Josef dice Reinstate Monica
La replicación con mysql puede mostrar un retraso significativo entre las escrituras y que los datos estén disponibles para las lecturas. Debe considerarse algo que escale la replicación como riak u otras bases de datos nosql.
pollitos
0

Hay situaciones en las que le gustaría tener:

  • La integridad de los datos garantiza las transacciones serializables.
  • Los datos pueden ser actualizados por los usuarios a nivel mundial.
  • Los datos se pueden actualizar con baja latencia.

Lamentablemente, la combinación de todo lo anterior no es físicamente posible. Estarás limitado por la velocidad de la luz.

En cambio, debe considerar sus requisitos exactos. Para algunos datos, la precisión limitada es lo suficientemente buena. Considere el contador de vistas en un video de YouTube. A la mayoría de las personas no les importa si el contador de vistas está temporalmente apagado. Si todavía no se incluyen las vistas que ocurrieron hace 10 segundos en el otro lado del mundo, pero se incluyen las vistas que ocurrieron hace 5 segundos más cerca, todavía es lo suficientemente preciso. Si está tan relajado con la integridad del contador de vistas, corre el riesgo de que dos personas diferentes puedan pensar que fueron el espectador número 100 de ese video en particular. Pero la mayoría de la gente consideraría que el daño causado por eso es insignificante.

En otros casos, la integridad de los datos es más importante. Considere dos personas que intentan registrarse simultáneamente con el mismo nombre de usuario. No es aceptable decirles a ambas personas que obtuvieron el nombre de usuario, por lo que en tal situación elegiría un enfoque más lento con mayor integridad. Es aceptable decirles a ambas personas que se tomó el nombre de usuario, por lo que un posible enfoque sería tratar de reservar el nombre de usuario en cada réplica y solo informar el éxito si tuvo éxito en más del 50% de las réplicas. No es improbable que este enfoque haga que el usuario espere medio segundo para obtener una respuesta. Pero los usuarios no pasan por este proceso con la frecuencia suficiente como para molestarse por ese retraso.

En otros casos, es posible que necesite buena integridad y actualizaciones rápidas, pero solo una persona puede actualizar esta información en particular. En ese caso, puede colocar la copia autorizada de los datos en un servidor que cree que está cerca de ese usuario, y dejar que otros servidores tengan una versión en caché, que en su mayoría está actualizada.

kasperd
fuente