Routage TCP dans le nuage d'applications

App Cloud

Routage TCP dans le cloud d'application

Le cloud d'application Swisscom, basé sur le standard industriel open source Cloud Foundry, offre à ses utilisateurs une nouvelle fonction passionnante. Le routage TCP, la possibilité de soutenir toute application basée sur TCP, non-HTTP, et de la rendre accessible au monde. Regardons cela de plus près et apprenons comment utiliser le routage TCP.

Swisscom Application Cloud(ouvre une nouvelle fenêtre) est basé sur Cloud Foundry(ouvre une nouvelle fenêtre), le principal standard industriel open source pour la construction de ta propre plate-forme en tant que service.

L'une des nombreuses fonctions formidables offertes par Cloud Foundry est le routage TCP, c'est-à-dire la possibilité de diriger et d'exposer tout le trafic basé sur le protocole TCP de ton application vers l'extérieur.

Le routage TCP dans Cloud Foundry est basé sur la réservation de ports sur un groupe de routeurs TCP pour une application associée à une route et un domaine TCP, qui sont ensuite fournis par un équilibreur de charge frontal comme notre F5. Le trafic entrant d'un client sur ce port est transmis aux instances de conteneurs de ton application à l'aide d'une politique d'équilibrage de charge round-robin. Les groupes de routeurs TCP sont une collection de plusieurs routeurs TCP Cloud Foundry qui garantissent une haute disponibilité.

Le routage TCP te permet d'amener des applications dans le cloud d'application auxquelles tu n'aurais pas pensé auparavant.

Tu pourrais par exemple Memcached(ouvre une nouvelle fenêtre) pousser en tant qu'app, un cache en mémoire qui communique via TCP:

$ cf push -o memcached memcached

Creating app memcached in org swisscom /
space examples as user1...

OK 

...

Showing health and status for app

memcached in org swisscom / space

examples as user1...

OK

requested state: started

instances: 1/1

usage: 1G x 1 instances

urls: memcached.scapp.io

state since cpu memory disk details

#0 running 2018-03-05 12:31:31 PM 0.0%
0 of 1G 0 of 1G

Et tout ce qu'il te reste à faire pour la publier via TCP, c'est de lier une route TCP et d'indiquer le port par lequel elle doit arriver à l'extérieur:

$ cf map-route memcached tcp.scapp.io --
port 35666

Creating route tcp.scapp.io:35666 for

org swisscom / space examples as
user1...

OK

Adding route tcp.scapp.io:35666 to app

memcached in org swisscom / space
examples as user1...

OK

Ton application devrait maintenant être accessible via le port TCP 35666 sur le domaine tcp.scapp.io.

Vérifie que cela fonctionne effectivement en établissant une connexion TCP avec Telnet à notre application sur ce domaine et ce port:

$ telnet tcp.scapp.io 35666

Trying 211.222.233.100...

Connected to tcp.scapp.io.

Escape character is '^]'.

set greeting 1 0 11

Hello World

STORED

quit

Connection closed by foreign host. $ telnet tcp.scapp.io 35666

Trying 211.222.233.100...

Connected to tcp.scapp.io.

Escape character is '^]'.

get greeting

VALUE greeting 1 11

Hello World

END

quit

Connection closed by foreign host.

Un autre type d'application intéressant, possible grâce au routage TCP, serait un serveur de jeu qui ne communiquerait également que par TCP.Essayons cela avec Minecraft(ouvre une nouvelle fenêtre):

$ cf push minecraft -o itzg/minecraft-
server -i 1 -m 1536M --no-start 

$ cf create-route examples tcp.scapp.io
--port 28888 $ cf map-route mcs tcp.scapp.io --port 28888 

$ cf set-env mcs EULA true

$ cf set-env mcs MOTD 'Minecraft powered
by Swisscom Application Cloud' 

$ cf start minecraft $ cf app minecraft
Showing health and status for app
minecraft in org swisscom / space
examples as user1... name: minecraft
requested state: started

instances:                       1/1

usage:                              1.5G x 1 instances

routes:                             tcp.scapp.io:28888

last uploaded:               Mon 12 Feb 15:26:23 UTC 2018

stack:                              cflinuxfs2

docker image:               itzg/minecraft-serverstate             sincecpu       memory              disk
details
#0        running     2018-03-28T22:44:18Z
1.2%        959.5M     of     1.5G     35.2M   of   1G

Et voilà, Minecraft fonctionne dans le cloud d'application:

Faire fonctionner un serveur Minecraft sur le cloud d'application n'aurait pas été possible auparavant, car il ne fonctionne que via TCP.

Bien sûr, il n'y a pas non plus de système de fichiers persistants, ce qui fait que ton monde est perdu dès que ton application est redémarrée. Mais nous voulons bientôt résoudre ce problème en mettant à ta disposition des services de volume. (Un petit avant-goût de l'avenir !)

Pour utiliser la fonction de routage TCP dans notre offre publique Application Cloud, il te suffit de nous envoyer une demande d'assistance dans laquelle tu nous dis pourquoi tu souhaites l'utiliser. Nous serons ravis d'activer les paramètres de quota correspondants pour ton entreprise afin que tu puisses pousser des applications basées sur TCP vers le cloud.

Tu trouveras plus d'informations sur l'utilisation du routage TCP du point de vue de l'utilisateur final dans notre documentation:
https://docs.developer.swisscom.com/devguide/deploy-apps/routes-domains.html#create-route-with-port(ouvre une nouvelle fenêtre)

Fabio Berchtold

Fabio Berchtold

Senior Cloud Engineer

Plus d’articles getIT

Prêts pour Swisscom

Trouve le Job ou l’univers professionnel qui te convient. Où tu veux co-créer et évoluer.

Ce qui nous définit, c’est toi.

Vers les univers professionnels

Vers les postes vacants cybersécurité