Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Service Discoveries

fraosug
January 17, 2017

Service Discoveries

Im Cloud-Umfeld wird bei Laständerungen horizontal skaliert und werden Wartungen wie patchen u.ä. oft durch rebuild der gesamten Maschine durchgeführt.

Auftauchen und Verschwinden ganzer Maschinen bedingt Auftauchen und Verschwinden des Service. Auf einen Service wird dann über ggf schnell wechselnde tcp endpoints zugegriffen. Unter der Voraussetzung, daß die Services tatsächlich stateless oder aber daß die Applikation state redundant sind, kann dies sehr schnell erfolgen. Klassisches Konfigurationsmanagement erreicht die erforderlichen Geschwindigkeiten nicht.

Verteilte key-val DBs und Autoregistrierung von Services lösen das Problem, Service Consumers die Partner bekannt zu machen über a) DNS SRV records oder b) watches und config file templates.

fraosug

January 17, 2017
Tweet

More Decks by fraosug

Other Decks in Technology

Transcript

  1. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität whoami Christopher

    J. Ruwe freiberuflicher IT-Infrastruktur Consultant (Unix, Netzwerke) DevOps Engineer and Consultant Linux, FreeBSD, Solaris
  2. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Outline Kontext

    Problemstellung Folgerung Lösung Realität Anwendungsfälle Beispiel: etcd, fleetd und confd / go template fleetd confd - go template
  3. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität Problemstellung Dienste werden zunehmend als verteilte Systeme realisiert
  4. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität Problemstellung Dienste werden zunehmend als verteilte Systeme realisiert A distributed system is a collection of independent computers that appears to its users a a single coherent system. (Tanenbaum, Van Steen, Distributed Systems, 2nd ed., 2007)
  5. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität Problemstellung Dienste werden zunehmend als verteilte Systeme realisiert A distributed system is a collection of independent computers that appears to its users a a single coherent system. (Tanenbaum, Van Steen, Distributed Systems, 2nd ed., 2007) für die Schnittstellen zwischen den einzelnen Komponenten ist Adressierung zentral, ggf. zzgl. einer Gewichtung
  6. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität Problemstellung Dienste werden zunehmend als verteilte Systeme realisiert A distributed system is a collection of independent computers that appears to its users a a single coherent system. (Tanenbaum, Van Steen, Distributed Systems, 2nd ed., 2007) für die Schnittstellen zwischen den einzelnen Komponenten ist Adressierung zentral, ggf. zzgl. einer Gewichtung verteilte Systeme werden gerne horizontal skaliert (neo.germ., coll.: „scaling out")
  7. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität Folgerung durch horizontale Skalierung wird die Adressierung an den Schnittstellen der Komponenten dynamisch
  8. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität Folgerung durch horizontale Skalierung wird die Adressierung an den Schnittstellen der Komponenten dynamisch deswegen muß zur Laufzeit die Konfiguration oft und nicht vorhersagbar angepaßt werden
  9. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität Folgerung durch horizontale Skalierung wird die Adressierung an den Schnittstellen der Komponenten dynamisch deswegen muß zur Laufzeit die Konfiguration oft und nicht vorhersagbar angepaßt werden zentrale Mechanismen (operator action oder config management) eignen sich nicht mehr besonders (zu langsam!)
  10. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität Lösung wenn ein Sub-System → Komponente des verteilten Systems instantiiert wird, meldet sich diese Komponente bei einer zentralen Instanz an
  11. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität Lösung wenn ein Sub-System → Komponente des verteilten Systems instantiiert wird, meldet sich diese Komponente bei einer zentralen Instanz an verläßt diese Komponente das System, meldet sie sich ab
  12. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität Lösung wenn ein Sub-System → Komponente des verteilten Systems instantiiert wird, meldet sich diese Komponente bei einer zentralen Instanz an verläßt diese Komponente das System, meldet sie sich ab verlieren die Zentrale oder Komponenten des Systems die Verbindung zu der Einzelkomponente, wird diese als failed deklariert
  13. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität ein Beispiel: verteilte key-value DB „etcd" Raft consensus algorithm (Ongaro, Ousterhout, In Search of an Understandable Consensus Algorithm, 2014)
  14. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität ein Beispiel: verteilte key-value DB „etcd" Raft consensus algorithm (Ongaro, Ousterhout, In Search of an Understandable Consensus Algorithm, 2014) http://thesecretlivesofdata.com/raft/
  15. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität ein Beispiel: verteilte key-value DB „etcd" Raft consensus algorithm (Ongaro, Ousterhout, In Search of an Understandable Consensus Algorithm, 2014) http://thesecretlivesofdata.com/raft/ leader election / voting, Changes nur über den Leader
  16. Service Discoveries Christopher J. Ruwe [email protected] Kontext Problemstellung Folgerung Lösung

    Realität ein Beispiel: verteilte key-value DB „etcd" Raft consensus algorithm (Ongaro, Ousterhout, In Search of an Understandable Consensus Algorithm, 2014) http://thesecretlivesofdata.com/raft/ leader election / voting, Changes nur über den Leader change → log → notify → commit → notify → consensus
  17. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Anwendungsfälle Beispiel:

    etcd, fleetd und confd / go template fleetd confd - go template Anwendungsfälle shared configuration of a distributed system → service registry
  18. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Anwendungsfälle Beispiel:

    etcd, fleetd und confd / go template fleetd confd - go template Anwendungsfälle shared configuration of a distributed system → service registry Bsp.: (stateless) Container Cluster (CoreOS, Borg, Kubernetes)
  19. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Anwendungsfälle Beispiel:

    etcd, fleetd und confd / go template fleetd confd - go template „etcd”-Datensatz 1 core@NL -AMS -30 beae0b98ec45b54c4c43724bf6e1cf ~ $ etcdctl ls --recursive /_coreos.com /_coreos.com/fleet 3 /_coreos.com/fleet/state /_coreos.com/fleet/state/[email protected] 5 [...] /_coreos.com/fleet/unit 7 /_coreos.com/fleet/unit /02 ca6fd1c6d416139fad85361136c42db7f9d307 [...] 9 /_coreos.com/fleet/engine /_coreos.com/fleet/engine/version 11 /_coreos.com/fleet/job /_coreos.com/fleet/job/[email protected] 13 /_coreos.com/fleet/job/[email protected]/target -state /_coreos.com/fleet/job/[email protected]/object 15 [...] /_coreos.com/fleet/lease 17 /_coreos.com/fleet/lease/engine -leader /_coreos.com/fleet/machines 19 /_coreos.com/fleet/machines /62 e225f2e320d7418b118c7c4b374868 [...]
  20. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Anwendungsfälle Beispiel:

    etcd, fleetd und confd / go template fleetd confd - go template „etcd”-Registration und -Abfrage ExecStartPost =-/usr/bin/etcdctl mkdir /services 2 ExecStartPost =-/usr/bin/etcdctl mkdir /services/my ExecStartPost =/bin/bash -c \ 4 'etcdctl set /services/my/%n 6 "%H $(cat /etc/motd.d/info.conf | grep Public | 8 cut -f 3 -d" "):8080"' 2 core@NL -AMS -30 beae0b98ec45b54c4c43724bf6e1cf ~ $ etcdctl get /servies/my/<unitname >@1.service 4 <hostname > 108.61.188.92:8080
  21. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Anwendungsfälle Beispiel:

    etcd, fleetd und confd / go template fleetd confd - go template „fleetd services" [Service] 2 ExecStartPre =-/usr/bin/docker rm -vf named ExecStartPre =/usr/bin/docker build -t \ 4 <dckrreg >:<port >/cjr/named \ https :// github.com/<bla >.git#:named 6 ExecStart =/usr/bin/docker run \ --name named \ 8 --hostname named \ -p 53:53/ udp \ 10 -p 53:53 \ -v /data/bind9/named.conf.local:/etc/ bind/named.conf.local \ 12 -v /data/bind9/db:/data \ <dckrreg >:<port >/cjr/named 14 ExecReload =/usr/bin/docker restart named ExecStop=-/usr/bin/docker rm -vf named
  22. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Anwendungsfälle Beispiel:

    etcd, fleetd und confd / go template fleetd confd - go template „fleetd section” 1 [X-Fleet] Conflicts=named@ *. service 3 MachineMetadata=ENTRYPOINT=FALSE 1 $> fleetctl start [email protected] $> fleetctl list -unit -files
  23. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Anwendungsfälle Beispiel:

    etcd, fleetd und confd / go template fleetd confd - go template „fleetd controlled cluster” [cjr@lamport :/home/cjr] 2 $ fleetctl_ams list -unit -files 4 UNIT DSTATESTATE TARGET 6 [email protected] launched .../108.61.99.168 [email protected] launched .../108.61.188.92 8 [email protected] launched .../108.61.99.168 [email protected] inactive - 10 nginx_prel.service launched .../108.61.188.92 [email protected] launched .../108.61.188.92 12 [email protected] inactive -
  24. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Anwendungsfälle Beispiel:

    etcd, fleetd und confd / go template fleetd confd - go template „etcd - confd” - config [template] 2 src = "haproxy.cfg.tmpl" dest = "/etc/haproxy/haproxy.cfg" 4 keys = [ "/service/app" 6 ] check_cmd = "echo checking && 8 haproxy -c -f {{ .src }}" reload_cmd = "echo reloading && 10 haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid 12 -st $(cat /var/run/haproxy.pid)"
  25. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Anwendungsfälle Beispiel:

    etcd, fleetd und confd / go template fleetd confd - go template „etcd - confd” - template [...] 2 listen appname bind :80 4 mode http balance roundrobin 6 option forceclose option forwardfor 8 {{range getvs "/service/my/*"}} 10 server {{.}} check {{end}} 12 [...]
  26. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Anwendungsfälle Beispiel:

    etcd, fleetd und confd / go template fleetd confd - go template Das war etcd
  27. Service Discoveries Christopher J. Ruwe [email protected] Kontext Realität Anwendungsfälle Beispiel:

    etcd, fleetd und confd / go template fleetd confd - go template Das war etcd weiter geht’s mit dem Stefan und consul nach der Maus ...