Nouvelles Chroniques d'Amethyste

Penser au Sens, pas au Verbe

Le réseau CDN Azure

Poster un commentaire

Le réseau CDN offre une solution pour distribuer un contenu statique provenant d’un blob, d’un cloud service ou d’une web Apps en le mettant en cache dans différents nœuds physiques de part le monde.

Un CDN procure plusieurs avantages:

  • La proximité géographique du lieu de distribution du contenu améliore l’expérience utilisateur
  • Votre serveur principal peut se délester d’une partie du trafic en le redistribuant dans le monde

Architecture

Pour proposer ce service sur Azure, Microsoft s’appuie sur un réseau mondial de 31 nœuds CDN dont on trouvera la liste ici:

https://msdn.microsoft.com/library/azure/gg680302.aspx

Il y en a un sur Paris!

Les détails de facturation:

http://azure.microsoft.com/fr-fr/pricing/details/cdn/

 

Le principe est de remplacer l’espace de noms standard des blobs:

https://<compte de stockage>.core.Windows.net

Par un espace de nom dit CDN de la forme:

http://<nom cdn>/vo.msecnd.net

 

Par exemple:

https://amethystedemo.core.Windows.net/images/img1.jpg

Devient:

http://adze4568/vo.msecnd.net/images/img1.JPG

Le nom CDN est attribué par Azure, il s’agit d’une séquence de caractères aléatoires.
Le format général est celui-ci:

http://<nom cdn>.vo.msecnd.net/<conteneur public>/<nom blob>

L’infrastructure Azure se charge ensuite de redistribuer les requêtes vers cette url sur les caches en fonction de la localisation du consommateur.

Création d’un CDN

2015-05-20_11-32-25

On clique sur QUICK CREATE:

2015-05-20_11-36-08

On sélectionne le compte de stockage, le webb apps ou le cloud service concerné. Les choses ressemble à cet écran:

2015-05-20_11-37-33

Ce n’est pas super lisible, j’ai surligné en jaune les 3 sections qui peuvent apparaître. Elles sont suivis de la liste des points de terminaison qu’Azure a trouvé dans votre abonnement.

Faire CREATE.

2015-05-20_11-41-40
On peut activer/désactiver un CDN:

2015-05-20_11-42-35

 

Le CDN est actif, mais il y a un délai de propagation qui peut atteindre 1 heure. Entre temps les utilisateurs recevront une erreur 400 (Requête incorrecte).

On trouvera plus d’informations ici:

https://msdn.microsoft.com/library/gg680306.aspx

 

Si je clique sur le CDN j’accède à ses propriétés, en particulier l’url:

2015-05-20_14-59-47
On peut supprimer ou désactiver le CDN.

Il est possible d’activer le CDN en HTTPS ou de le lier à un domaine personnalisé. Par contre SSL n’est pas encore supporté avec un domaine ou un certificat personnalisé.

 

La commande ENABLE QUERY STRING est utile lorsque la ressource est créée dynamiquement et dépend d’un paramètre dans la chaîne de requête. Par exemple les deux ressources:

http://<nom cdn>/vo.mssecnd.Net/graph.aspx?date=2014
http://<nom cdn>/vo.mssecnd.Net/graph.aspx?date=2015

 

Feront l’objet de DEUX mises en cache et non pas une. L’opération est bien sûr réversible:

2015-05-20_15-03-54

Durée de vie du cache

Le cache CDN conserve en cache les ressources publiées. Les objets mis en cache ont une durée de vie à l’issue de laquelle ils sont vidés du cache. Il n’est actuellement pas possible de vider un cache CDN immédiatement.

La durée de vie par défaut est de 7 jours.

Cas d’un blob

On peut modifier la durée par défaut du cache via un outil tier, le portail ou bien PowerShell.

Depuis le portail on doit éditer les propriété du blob:

2015-05-20_14-33-31

Et mettre une valeur en seconde dans la propriété Cache-Control.

 

Le script PowerShell suivant télécharge dans un conteneur appelé images du compte de stockage amethystedemo, des blobs et au passage complète ses propriétés afin de fixer un cache à 86 400 secondes, soit 1 jour.

$StorageAccountName = "amethystedemo"
$StorageAccountKey = (Get-AzureStorageKey -StorageAccountName $storageAccountName).Primary
$context = New-AzureStorageContext -StorageAccountName $StorageAccountName `
                                   -StorageAccountKey $StorageAccountKey

$filesPath ="<chemin vers mes images>"
$container ="images"
Get-ChildItem $filesPath | foreach {

$contentType = "img/png"
$cacheControl = "public, max-age=86400"
$blobProperties = @{ContentType=$contentType; CacheControl=$cacheControl}
Set-AzureStorageBlobContent -File $_.FullName `
                            -Container $container `
                            -Context $context `
                            -Properties $blobProperties
}

Cas d’un cloud service ou d’une web Apps

On peut soit utiliser Response.Cache depuis le code C# ou bien placer un élément <staticContent> dans Web.config.

Tout ceci est expliqué ici:

https://msdn.microsoft.com/fr-fr/library/gg680299.aspx

 

 

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s