TCP routing on the application cloud

App Cloud

TCP-Routing in der Anwendungs-Cloud

Die Swisscom Application Cloud, die auf dem Open-Source-Industriestandard Cloud Foundry basiert, bietet ihren Nutzern eine spannende neue Funktion. TCP-Routing, die Möglichkeit, jede TCP-basierte, nicht-HTTP-basierte Anwendung zu unterstützen und der Welt zugänglich zu machen. Schauen wir uns das genauer an und lernen, wie man TCP-Routing nutzt.

Die Swisscom Application Cloud basiert auf Cloud Foundry(öffnet ein neues Fenster), dem führenden Open-Source-Industriestandard für den Aufbau deiner eigenen Plattform-as-a-Service.

Eine der vielen großartigen Funktionen, die Cloud Foundry bietet, ist das TCP-Routing, d.h. die Möglichkeit, jeden TCP-basierten Datenverkehr von deiner Anwendung nach außen zu leiten und offenzulegen.

Das TCP-Routing in Cloud Foundry basiert auf der Reservierung von Ports auf einer TCP-Router-Gruppe für eine Anwendung, die einer TCP-Route und -Domäne zugeordnet ist, die dann von einem Frontend-Load-Balancer wie unserem F5 bereitgestellt wird. Der von einem Client auf diesem Port eingehende Datenverkehr wird mithilfe einer Round-Robin-Lastausgleichsrichtlinie an die Container-Instanzen deiner Anwendung weitergeleitet. TCP-Router-Gruppen sind eine Sammlung von mehreren Cloud Foundry TCP-Routern, die eine hohe Verfügbarkeit gewährleisten.

TCP Routing ermöglicht es dir, Anwendungen in die Application Cloud zu bringen, an die du vorher nicht gedacht hättest.

Du könntest z.B. Memcached(öffnet ein neues Fenster) als App pushen, einen In-Memory-Cache, der über TCP kommuniziert:

$ 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

Und alles, was du jetzt noch tun musst, um sie über TCP zu veröffentlichen, ist, eine TCP-Route zu binden und den Port anzugeben, über den sie nach außen gelangen soll:

$ 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

Deine Anwendung sollte jetzt über den TCP-Port 35666 auf der Domain tcp.scapp.io erreichbar sein.

Überprüfen wir, ob dies tatsächlich funktioniert, indem wir mit Telnet eine TCP-Verbindung zu unserer Anwendung auf dieser Domain und diesem Port herstellen:

$ 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.

Ein weiterer interessanter Anwendungstyp, der dank TCP-Routing möglich ist, wäre ein Spieleserver, der auch nur über TCP kommuniziert.
Probieren wir das mal aus mit 
Minecraft(öffnet ein neues Fenster):

$ 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

Da hast du es, Minecraft läuft in der Application Cloud:

Der Betrieb eines Minecraft-Servers auf der Application Cloud wäre vorher nicht möglich gewesen, da er nur über TCP funktioniert.

Natürlich fehlt auch hier ein persistentes Dateisystem, so dass deine Welt verloren geht, sobald deine Anwendung neu gestartet wird. Aber auch dieses Problem wollen wir bald beheben, indem wir dir Volume Services zur Verfügung stellen. (Ein kleiner Vorgeschmack auf die Zukunft!)

Um die TCP-Routing-Funktion in unserem öffentlichen Application Cloud-Angebot zu nutzen, schick uns einfach eine Support-Anfrage, in der du uns mitteilst, wofür du sie nutzen möchtest. Wir freuen uns darauf, die entsprechenden Quota-Einstellungen für dein Unternehmen zu aktivieren, damit du TCP-basierte Anwendungen in die Cloud pushen kannst.

Weitere Informationen zur Nutzung des TCP-Routings aus Sicht der Endnutzer findest du in unserer Dokumentation:
https://docs.developer.swisscom.com/devguide/deploy-apps/routes-domains.html#create-route-with-port(öffnet ein neues Fenster)

Fabio Berchtold

Fabio Berchtold

Senior Cloud Engineer

Mehr getIT-Beiträge

Bereit für Swisscom

Finde deinen Job oder die Karrierewelt, die zu dir passt. In der du mitgestalten und dich weiterentwickeln willst.

Was du draus machst, ist was uns ausmacht.

Zu den Karrierewelten

Zu den offenen Security Stellen