How to configure the firewall and the load balancer in Azure – Comment configurer le pare-feu et le répartiteur de charge dans Azure

 

English Français
A typical Azure application would look like this: Une application Azure typique ressemble à ceci:

image

So how do you open ports, decide how the load balancer behaves, and so on? What if you want to open additional ports (other than the HTTP 80 one)? Mais comment ouvre-t-on des ports, comment décide-t-on du comportement du répartiteur de charge? Comment cela se passe-t-il pour ouvrir d’autres ports que le port 80 en HTTP?
Let’s take as an example, a distributed application that has the following components (Azure roles): Prenons pour exemple une application distribuée qui a les composants suivants (des rôles Azure):

image

The following table shows on which ports the different services expose their content, i.e. they are implemented inside the distributed application. Le tableau suivant montre sur quels ports les différents services exposent leur contenu, c’est-à-dire, comment ils sont implémentés au sein de l’application distribuée.
Web UI 80
Public Web Services 80
Sockets Server 50123
Internal Web Services 8080

 

From the users perspective, the services must be exposed as this: Du point de vue des utilisateurs, les services doivent être exposés ainsi:
Web UI https://sampleapp.contoso.com:80
Public Web Services https://sampleapp.contoso.com:8080
Sockets Server TCP sample.contoso.com:50000
Internal Web Services N/A

 

Let’s see how this can be configured. Voyons comment cela se configure.

 

Remember: Windows Azure Platform is a platform as a service (PaaS), so the configuration is done thru the description of a distributed application. Souvenez-vous: la plateforme Windows Azure est une platform as a service (PaaS), et donc cette configuration est faite dans la description de l’application distribuée.
As everything is deployed as a single distributed application, the load balancer will expose one DNS name which is somename.cloudapp.net where “somename” is a name you choose when creating a deployment slot (hosted service). Comme tout est déployé en tant qu’une unique application distribuée, le répartiteur de charge exposera un unique nom DNS qui est somename.cloudapp.net où “somename” est le nom que vous choisissez en créant l’emplacement de déploiement (hosted service).

image

image

Then, you just have to create a CNAME entry in your DNS that binds sampleapp.contoso.com to somename.cloudapp.net. Ensuite, vous devez créer une entrée de type CNAME dans votre DNS qui fait correspondre sampleapp.contoso.com à somename.cloudapp.net.

image

NB: NB:
- the load balancer always balances to all the nodes of a role. In order to implement sticky session, you might need a solution as the one I described earlier. - le répartiteur de charge répartit toujours sur tous les noeuds d’un rôle.Pour mettre en oeuvre de l’affinité de session, il peut être nécessaire de mettre en place une solution comme cellle que j’ai décrite précédemment.
- I described earlier the lifecycle of the virtual IP address corresponding to somename.cloudapp.net. - J’ai décrit précédemment le cycle de vie de l’adresse IP virtuelle correspondant à somename.cloudapp.net.

 

You also need to define how internal implementations are translated as public end points at somename.cloudapp.net. This is done by describing endpoints in the cloud service definition (.csdef) which is an XML file (1). On doit aussi définir comment les implémentations internes sont traduites en points de terminaison publics à somename.cloudapp.net. Cela est fait en décrivant les points de terminaison dans la définition de l’application en nuage (.csdef) qui est un fichier XML (1).

image

Windows Azure will configure the load balancer and the firewalls so that only the declared endpoints can be accessible from one role to another (InputEndpoints and InternalEndpoints) and only InputEndpoints can be accessible from the Internet. Windows Azure configurera le répartiteur de charge et les pare-feu de façon à ce que seuls les points de terminaison déclarés puissent être accessibles d’un rôle à l’autre (InputEndpoints et InternalEndpoints) et de façon à ce que seuls les InputEndpoints soient accessibles depuis Internet.
Azure storage (blobs, non relational tables and queues) are always accessible from within the distributed application and from the Internet. Le stockage Azure (blobs, tables non relationnelles et queues) sont toujours accessibles depuis l’application distribuée et depuis Internet.
SQL Azure must be configured. In order for a SQL Azure Server to be accessible from within Windows Azure, a check box must be used: SQL Azure doit être configuré. Pour que SQL Azure soit accessible depuis Windows Azure, une case à cocher doit être utilisée:

image

NB: Load balancing only happens for InputEndpoints, not for InternalEndpoints. But you have APIs to get all internal IP addresses in order to implement you interrole communication. You’ll find 2 examples in an article about ARR and another one about load tests. NB: La répartition de charge n’a lieu que pour les InputEndpoints, pas pour les InternalEndpoints. Mais on dispose d’APIs pour avoir les adresses IP internes de façon à implémenter sa communication inter-rôles. On trouvera 2 exemples dans un article à propos d'ARR et un autre à propos des tests de charge.

 

In terms of tooling, when using Visual Studio, you get a graphical user interface that generates the .csdef file: D’un point de vue outillage, quand on utilise Visual Studio, on a une interface graphique qui aide à générer le fichier .csdef:

image

image

image

 

Conclusion As Windows Azure is a PaaS, load balancer and firewall configuration are part of the definition of a distributed application. It is a set of end points which are described in an XML file. Conclusion Comme Windows Azure est une PaaS, la configuration du répartiteur de charge et du pare-feu font partie de la description d’une application distribuée. C’est un ensemble de points de terminaison qui sont décrits dans un fichier XML.

Smile

Benjamin

 


(1) a .csdef file is eventually contained in a .cspack file created by the cspack.exe utility which comes with Azure SDK. (1) un fichier .csdef se retrouve en fin de parcours dans un fichier .cspack créé par l’utilitaire cspack.exe qui est fourni par le SDK de Windows Azure.