Avec la nouvelle version de la plateforme Windows Azure annoncée aujourd’hui, il devient désormais possible de démarrer des machines virtuelles (VM) persistantes, avec un choix d’OS étendu, incluant désormais plusieurs distributions Linux (Ubuntu, CentOS et SUSE). Ces machines virtuelles (Linux ou Windows) démarrent sur un disque persistant, stocké sous la forme d’un VHD dans le service Blob Storage de Windows Azure, ce qui en garantit la durabilité et la disponibilité.

Dans ce billet je vais illustrer la façon la plus simple de créer un nouvelle VM Linux et de l’utiliser pour faire tourner un composant non disponible sur Windows: en l’occurrence la solution de cache clé-valeur Redis.

Redis est un composant populaire dans les architectures hautes performances, et est intégré dans des plateformes publiquement documentées comme celle de StackOverflow, qui est entièrement développée sur la plateforme Microsoft (Windows et ASP.NET) mais qui utilise des composants spécialisés comme Redis tournant sur des machines Linux.

Voyons donc comment l’on peut très simplement démarrer une VM Linux pour commencer à utiliser Redis.

Créer la VM depuis le portail

Le nouveau portail d’administration Windows Azure a été entièrement refondu en HTML5 pour une meilleure accessibilité et plus de rapidité. L’écran d’accueil vous montre par défaut l’ensemble des ressources (machines virtuelles, réseaux virtuels, comptes de stockage…)

Pour créer une nouvelle VM, utiliser le menu “+ NEW” en bas à gauche, sélectionner “virtual machine” puis “from gallery”.

image

Cela va ouvrir l’assistant de création d’une nouvelle VM, avec l’ensemble des options, ce qui va nous permettre de choisir l’une des distributions Linux proposées.

image

Pour cet article, je vais choisir de démarrer une VM CentOS, je sélectionne donc cette distribution puis je clique sur “suivant”.

image

L’écran suivant nous permet de commencer la configuration de la machine virtuelle:

  • Le nom de la machine virtuelle
  • Le nom de l’utilisateur qui aura les  droits “root” sur la machine
  • Le mot de passe pour le compte
  • La taille de la machine virtuelle

Si vous souhaitez sécuriser l’accès à la VM de façon plus restrictive (fortement suggéré), vous pouvez également charger une clé SSH qui sera installée sur la machine virtuelle, ce qui vous permettra de vous y connecter avec un client SSH possédant la clé privée correspondante.

image

L’écran suivant regroupe essentiellement les options de configuration réseau.

  • L’on choisit “standalone” pour une VM qui fonctionnera de façon isolée (ce qui est pour l’instant le cas de notre exemple). Il est également possible de “connecter” des VM de façons à qu’elles puissent se voir sur le réseau, typiquement si l’on construit un cluster de machines ou une ferme en équilibrage de charge.
  • Le nom DNS sera le nom externe de la machine (qui permettra a minima de s’y connecter de l’extérieur via SSH).
  • Le compte de stockage permettra de stocker le VHD correspondant au disque de démarrage de la machine ; vous pouvez bien entendu réutiliser un compte existant.
  • Le dernier choix permet soit de choisir une région (un datacenter) d’hébergement, mais également un groupe d’affinité (qui implique un datacenter) ou un réseau virtuel (également localisé dans un datacenter)

image

Enfin, le dernier écran permet de choisir ou de créer un “availability set” dans des configurations de type cluster, puis de valider l’ensemble des informations pour créer la machine virtuelle.

image

Dans le bas de la page, un indicateur va vous permettre de suivre la création puis le démarrage de la machine virtuelle. Une fois démarrée, elle apparaîtra comme telle dans la liste des VM.

image

Si l’on clique sur la machine virtuelle, puis sur l’onglet “endpoints”, l’on verra que le port SSH a automatiquement été configuré et ouvert à l’extérieur. Nous avons donc maintenant toutes les informations nécessaires pour nous connecter en SSH!

Démarrons donc notre client SSH Windows préféré, à savoir PuTTY, nous allons utiliser l’adresse en cloudapp.net puis le login et le mot de passe que nous avons spécifié à la création.

image

Et nous voilà connectés !

image

Installer Redis

La suite est parfaitement classique: nous avons maintenant une machine Linux tout-à-fait classique et prêt à être utilisée. Voici une méthode rapide pour installer Redis sur CentOS à partir du code source:

L’on va commencer par installer les outils de développement, qui nous permettront de compiler la solution:

sudo yum groupinstall "Development tools"

(lorsque sudo vous demande un mot de passe, re-rentrez celui que vous avez assigné à votre compte utilisateur :

L’on va ensuite télécharger et compiler Redis:

wget http://redis.googlecode.com/files/redis-2.4.11.tar.gz
tar xzf redis-2.4.11.tar.gz
cd redis-2.4.11
make

Puis l’installer:

sudo make install

Et finalement le lancer:

sudo /usr/local/bin/redis-server

Rendre Redis accessible depuis l’extérieur

La dernière chose qu’il nous reste à faire est d’utiliser le portail pour ouvrir le port Redis afin de pouvoir y accéder! Là encore, nous allons simplement faire la chose la plus simple possible, à savoir ouvrir le port vers l’extérieur; cette méthode est simplement destinée à tester la fonctionnalité, dans un déploiement réel l’on créerait bien entendu plusieurs machines virtuelles dans un même Cloud Service, et l’on communiquerait avec Redis via le réseau interne, sans exposer son port à l’extérieur.

Sélectionnons donc la machine virtuelle dans la liste, puis allons dans l’onglet “endpoints” puis, dans la barre d’outils en bas, choisissons “add endpoint”.

image

Nous n’avons qu’une seule machine virtuelle, donc nous n’avons pas de possibilité de mettre en place l’équilibrage de charge, cliquons donc sur “suivant”.

image

L’on configure le port standard Redis (TCP 6379), on l’envoie sur le même port de la VM, et on note au passage que nous avons désormais la possibilité d’exposer des ports UDP!

Cliquons sur OK. Le port Redis est maintenant accessible depuis l’extérieur!

Et si l’on testait un petit peu? Si vous êtes sous Windows, récupérez le package binaire Redis sur Github, vous y trouverez un petit utilitaire redis-benchmark.exe qui permet de tester votre tout nouveau serveur:

redis-benchmark.exe -h xxx.cloudapp.net

Voilà. Amusez-vous bien!