Routing TCP nel cloud applicativo

App Cloud

Routing TCP nel cloud applicativo

L'Application Cloud di Swisscom, che si basa sullo standard industriale open source Cloud Foundry, offre ai suoi utenti una nuova ed entusiasmante funzionalità. Il routing TCP, ovvero la possibilità di supportare qualsiasi applicazione basata su TCP e non su HTTP e renderla accessibile a tutto il mondo. Diamo un'occhiata più da vicino e scopriamo come utilizzare il routing TCP.

Il Swisscom Application Cloud basato su Cloud Foundry(apre una nuova finestra), il principale standard open source del settore per costruire la tua piattaforma-as-a-service.

Una delle tante ottime caratteristiche offerte da Cloud Foundry è il routing TCP, ovvero la possibilità di instradare ed esporre qualsiasi traffico basato su TCP dalla tua applicazione al mondo esterno.

Il routing TCP in Cloud Foundry si basa sulla riserva di porte su un gruppo di router TCP per un'applicazione che viene mappata su una rotta e un dominio TCP, che viene poi fornito da un bilanciatore di carico front-end come il nostro F5. Il traffico in arrivo da un client su questa porta viene inoltrato alle istanze del container dell'applicazione utilizzando una politica di bilanciamento del carico round-robin. I gruppi di router TCP sono un insieme di più router TCP di Cloud Foundry che garantiscono un'elevata disponibilità.

Il TCP Routing ti permette di portare nell'Application Cloud applicazioni a cui non avresti mai pensato prima.

Ad esempio, potresti Memcached(apre una nuova finestra) come un'applicazione, una cache in memoria che comunica 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

Per pubblicarlo via TCP, non dovrai fare altro che assegnare una rotta TCP e specificare la porta attraverso la quale dovrà raggiungere il mondo esterno:

$ 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

La tua applicazione dovrebbe ora essere accessibile tramite la porta TCP 35666 sul dominio tcp.scapp.io.

Verifichiamo se questo funziona effettivamente utilizzando Telnet per stabilire una connessione TCP alla nostra applicazione su questo dominio e su questa porta:

$ 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 altro tipo di applicazione interessante che è possibile realizzare grazie al routing TCP è un server di gioco che comunica solo tramite TCP.Proviamo con Minecraft(apre una nuova finestra):

$ 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

Ecco che Minecraft viene eseguito nell'Application Cloud:

Non sarebbe stato possibile far funzionare un server Minecraft sull'Application Cloud, perché funziona solo via TCP.

Ovviamente manca anche un file system persistente, quindi il tuo mondo andrà perso non appena la tua applicazione verrà riavviata. Ma vogliamo risolvere presto anche questo problema rendendo disponibili i Volume Services. (Una piccola anticipazione del futuro!).

Per utilizzare la funzione di routing TCP nella nostra offerta pubblica di Application Cloud, è sufficiente inviarci una richiesta di assistenza spiegandoci per cosa vuoi utilizzarla. Non vediamo l'ora di abilitare le impostazioni di quota appropriate per la tua organizzazione, in modo che tu possa spingere le applicazioni basate su TCP nel cloud.

Per maggiori informazioni sull'utilizzo del routing TCP da parte dell'utente finale, consulta la nostra documentazione:
https://docs.developer.swisscom.com/devguide/deploy-apps/routes-domains.html#create-route-with-port(apre una nuova finestra)

Fabio Berchtold

Fabio Berchtold

Senior Cloud Engineer

Altri articoli getIT

Pronti per Swisscom

Trova il posto di lavoro o il percorso di carriera che fa per te. Dove dare il tuo contributo e crescere professionalmente.

Ciò che tu fai, è ciò che siamo.

Vai ai percorsi di carriera

Vai alle posizioni vacanti cibersicurezza