2011-04-18 15 views
9

Normalmente, el acceso a los trabajadores de Azure se realiza a través de puntos finales definidos en la definición del servicio. Estos puntos finales, que deben ser TCP o HTTP (S), se pasan a través de un equilibrador de carga y luego se conectan a la IP/puerto real de las máquinas Azure.Acceso directo a los trabajadores de Azure; puenteando el equilibrador de carga

Mi aplicación se beneficiaría drásticamente del uso de UDP, ya que me estoy conectando desde dispositivos celulares donde los bytes se cuentan para facturación y los gastos generales de SYN/ACK/FIN empequeñecen los paquetes de 8 bytes que estoy enviando. Incluso he considerado poner mis datos directamente en los encabezados de los mensajes ICMP. Sin embargo, nada de esto es compatible con el equilibrador de carga.

Sé que puede habilitar el ping en máquinas virtuales Azure y luego hacerles ping - http://weblogs.thinktecture.com/cweyer/2010/12/enabling-ping-aka-icmp-on-windows-azure-roles.html.

¿Hay algo que me impida usar un servicio basado en TCP (expuesto a través del equilibrador de carga) que simplemente entregue una dirección IP y puerto de una dirección Azure VM, y luego la aplicación se comunique directamente con ese trabajador? (Tendré que encargarme del equilibrio de carga). Si el trabajador se cierra o se mueve, mi aplicación será lo suficientemente inteligente como para volver a conectarse al punto final TCP y solicitar un nuevo lugar para enviar datos.

¿Funciona este concepto, o hay algo para evitar este tipo de acceso directo?

Respuesta

3

Tendría que ejecutar su propio enrutador que expone un punto final de entrada (externo) y luego se dirige a un punto final interno de su servicio, ya sea en el mismo rol o uno diferente (así es como funciona el Escritorio remoto) . No puede conectarse directamente a una instancia específica por elección.

Hay una serie de blog de 2 partes de Benjamin Guinebertière que describe el enrutamiento de solicitudes de aplicaciones de IIS para proporcionar sesiones fijas (part 1, part 2). Este podría ser un buen punto de partida.

Ryan Dunn también habló sobre el enrutamiento de sesión http en el Cloud Cover Show, junto con un seguimiento blog post.

Me doy cuenta de que estos dos ejemplos no son exactamente lo que estás haciendo, ya que están enrutando http, pero comparten una premisa similar.

+0

¿El papel no tiene una dirección IP accesible desde el exterior? –

+0

IOW, ¿puedo de alguna manera abrir un puerto UDP y luego conectarme a él aunque el equilibrador de carga no admita UDP? (Aunque de una manera sin carga equilibrada) –

+1

No se admite UDP sin utilizar Windows Azure Connect. Por lo tanto, solo tiene unas pocas opciones para llegar a una instancia específica de manera confiable: 1.) escriba un reenviador de socket (vea el ejemplo de mi blog), 2.) use ARR - buena opción para HTTP, o 3.) Use Windows Azure Connect. Sin embargo, solo el último ejemplo será compatible con UDP. Si UDP es su único objetivo aquí, esa es su única opción hoy. – dunnry

0

Hay una cosa llamada InstanceInputEndpoint que puede usar para definir puertos en la IP pública que se dirigirá a un puerto local en una instancia de máquina virtual particular. Por lo tanto, tendrá una combinación particular de puerto + IP que puede acceder directamente a una máquina virtual en particular.

<InstanceInputEndpoint name="HttpInstanceEndpoint" protocol="tcp" localPort="80"> 
    <AllocatePublicPortFrom> 
     <FixedPortRange max="8089" min="8081" /> 
    </AllocatePublicPortFrom> 
    </InstanceInputEndpoint> 

Más información: http://msdn.microsoft.com/en-us/library/windowsazure/gg557552.aspx

Cuestiones relacionadas