Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Parallelisierte Administration mit          Marionette Collective                                       Andreas Schmidt© 2...
Andreas Schmidt, 37 Jahre    Cassini Consulting    Systems Management-Themen:      IT-Security      System- und Netzwerkar...
E          P    Infrastructure    Development4
What‘s on for today?    Herausforderungen beim Aufbau und Betrieb    größerer Umgebungen    Was ist Marionette Collective?...
Auswirkungen von Umgebungsgröße       und -komplexität     viele     >50        Anzahl Komponenten                        ...
viele    >50        Anzahl Komponenten                                  Komplexe                                Konfigurat...
„   ssh in a for loop is not a solution                            - Luke Kanies                                          ...
Verbindungsaufbau9
Adressierung        durch      Hostnamen10
Hang zu One-Linern11
„     Give me an API or give me death                                            “12       http://theagileadmin.com/2010/0...
Real Life     System Administration13
Aktiviere ein Content-Update            auf 200 Servern             - gleichzeitig14
Räume das Cache-Verzeichnis              /tmp/cx0 auf      - aber nur auf CentOS-Nodes          mit einer IP-Adresse      ...
Starte alle Tomcats durch     - auf denen die Applikation          iWTF deployed ist.         (Zuordnung dynamisch)16
Wie erreiche ich eine größere Anzahl Hosts               möglichst gleichzeitig?          Wie kann ich Kommandos sicher   ...
Wie erreiche ich eine größere Anzahl Hosts               möglichst gleichzeitig?          Wie kann ich Kommandos sicher   ...
Aktiviere ein Content-Update auf 200     Servern - gleichzeitig     $ HOSTS=`cat ./contenthosts.txt`     $ for h in $HOSTS...
Aktiviere ein Content-Update auf 200     Servern - gleichzeitig     $ mco rpc   --agent appcontent --action activate      ...
Marionette Collective              „Server Orchestration Framework“       „Programmatic execution of system administration...
Architektur von Marionette Collective                   Client                          Client                            ...
Zentrale Metadaten               Hostlisten oder LDAP                Vergessene Server     Missverständnisse & Kommunikati...
Ich facter, also bin ich[…][…]24
Adressierung der Zielhosts über Facts     --with-fact    ipaddress_eth1=~^192.168.10.[0-9]+$     --with-class    mytomcat ...
Komponenten eines Collectives        Client               Messaging Middleware                              Messaging Serv...
Kommunikation zwischen Client und Node        Client                      Messaging Middleware                         1  ...
Beispiel: Ping     $ mco ping –T test                                             Collective     web01a               time...
Beispiel: Ping                                              Fact     $ mco ping –T test –-with-fact hostname=~web     web0...
Agent                    =     Data Description Language (DDL)                    +               Agent Code30
Beispiel: NRPE-Agent // DDL                                                                                             se...
Beispiel: NRPE-Agent // Agent Code     module MCollective       module Agent         class Nrpe<RPC::Agent           actio...
Räume das Cache-Verzeichnis /tmp/cx0 auf -     aber nur auf CentOS- Nodes mit einer IP-Adresse     in der DMZ     action “...
Ablauf Request / Response                Client                              Node            Sende Request                ...
Starte alle Tomcats durch     - auf denen die Applikation iWTF deployed ist.                                              ...
Wobei hilft mir     MCollective?36
Ein API ist     der Kommandozeile          überlegen37
Dashboards und GUIs38
Dokumentation           Qualität     Wiederverwendbarkeit        Vereinfachung39
Abstraktion     Rechte- und Rollentrennung        (z.B. 2nd / 3rd level)40
Parallelität     Geschwindigkeit      Skalierbarkeit41
Q& ACassini Consulting GmbHTechnology GuidanceAndreas Schmidttwitter @aschmidt75andreas.schmidt@cassini.deHalskestraße 46 ...
FFG2012: Parallelisierte Administration mit Marionette Collective
Upcoming SlideShare
Loading in …5
×

FFG2012: Parallelisierte Administration mit Marionette Collective

1,025 views

Published on

"Parallelisierte Administration mit Marionette Collective"

Frühjahrsfachgespräch 2012 der German Unix User Group

http://www.guug.de/veranstaltungen/ffg2012/programm.html
#ffg2012 #guug

Published in: Technology
  • Login to see the comments

  • Be the first to like this

FFG2012: Parallelisierte Administration mit Marionette Collective

  1. 1. Parallelisierte Administration mit Marionette Collective Andreas Schmidt© 2011 Cassini Consulting GmbH
  2. 2. Andreas Schmidt, 37 Jahre Cassini Consulting Systems Management-Themen: IT-Security System- und Netzwerkarchitektur Konfigurations- und Deploymentmanagement3
  3. 3. E P Infrastructure Development4
  4. 4. What‘s on for today? Herausforderungen beim Aufbau und Betrieb größerer Umgebungen Was ist Marionette Collective? Wofür kann man es einsetzen? Wieso ist Marionette Collective zur Administration hilfreich?5
  5. 5. Auswirkungen von Umgebungsgröße und -komplexität viele >50 Anzahl Komponenten Komplexe Konfigurationen Komplexe Umgebung auf wenigen Hosts Einfache Konfigurationen, „One-Off“ aber auf vielen Hosts wenige wenige viele Anzahl zu verwaltender Hosts >1006
  6. 6. viele >50 Anzahl Komponenten Komplexe Konfigurationen Komplexe Umgebung auf wenigen Hosts Einfache Konfigurationen, „One-Off“ aber auf vielen Hosts wenige wenige viele Anzahl zu verwaltender Hosts >1007
  7. 7. „ ssh in a for loop is not a solution - Luke Kanies “8 Pro Puppet (APress): Page xvi
  8. 8. Verbindungsaufbau9
  9. 9. Adressierung durch Hostnamen10
  10. 10. Hang zu One-Linern11
  11. 11. „ Give me an API or give me death “12 http://theagileadmin.com/2010/07/22/give-me-an-api-or-give-me-death/
  12. 12. Real Life System Administration13
  13. 13. Aktiviere ein Content-Update auf 200 Servern - gleichzeitig14
  14. 14. Räume das Cache-Verzeichnis /tmp/cx0 auf - aber nur auf CentOS-Nodes mit einer IP-Adresse in der DMZ15
  15. 15. Starte alle Tomcats durch - auf denen die Applikation iWTF deployed ist. (Zuordnung dynamisch)16
  16. 16. Wie erreiche ich eine größere Anzahl Hosts möglichst gleichzeitig? Wie kann ich Kommandos sicher gestalten und dokumentieren? Wie finde ich heraus, welche Hosts für meine Abfrage relevant sind?17
  17. 17. Wie erreiche ich eine größere Anzahl Hosts möglichst gleichzeitig? Wie kann ich Kommandos sicher gestalten und dokumentieren? Wie finde ich heraus, welche Hosts für meine Abfrage relevant sind?18
  18. 18. Aktiviere ein Content-Update auf 200 Servern - gleichzeitig $ HOSTS=`cat ./contenthosts.txt` $ for h in $HOSTS; do ssh $h "curl -d "ctx_act_id=4711" http://127.0.0.1:7676/activate_content && echo OK on $h" done; =307 sec.19
  19. 19. Aktiviere ein Content-Update auf 200 Servern - gleichzeitig $ mco rpc --agent appcontent --action activate --arg contentid=4711 --discovery-timeout=5 --timeout=3 –T produktion =3,1 sec.20
  20. 20. Marionette Collective „Server Orchestration Framework“ „Programmatic execution of system administration actions on clusters of servers“ Agent-basiert, ruby (1.8.5+) Puppet Labs Apache 2 License Broadcast Paradigm Publish-Subscribe Middleware (z.B. ActiveMQ oder RabbitMQ)21
  21. 21. Architektur von Marionette Collective Client Client Messaging Middleware Collective Subcollective Node Node Node Node Node Node Node Node Node Node Node Node Node Node Node22
  22. 22. Zentrale Metadaten Hostlisten oder LDAP Vergessene Server Missverständnisse & Kommunikationsfehler Verteilte Metadaten Der Host erhält die Identität durch das was er ist und was er enthält. Immer aktuell23
  23. 23. Ich facter, also bin ich[…][…]24
  24. 24. Adressierung der Zielhosts über Facts --with-fact ipaddress_eth1=~^192.168.10.[0-9]+$ --with-class mytomcat Node Node Node Node Node Node Node Node Node Node Node Node Node Node Node25
  25. 25. Komponenten eines Collectives Client Messaging Middleware Messaging Service mcollective Daten- dreh- Ich scheibeZielhost Facts facter mcollectived server Node26
  26. 26. Kommunikation zwischen Client und Node Client Messaging Middleware 1 publish Messaging Service subscribe Command mcollective 6 Topic Reply Topic subscribe 5 publish 2 3 Facts Agent 4 facter mcollectived server Node27
  27. 27. Beispiel: Ping $ mco ping –T test Collective web01a time=128.38 ms app01b time=131.07 ms web01b time=134.14 ms app02a time=147.42 ms app02b time=152.98 ms web01c time=159.73 ms [...] ---- ping statistics ---- 24 replies max: 549.12 min: 128.38 avg: 315.1828
  28. 28. Beispiel: Ping Fact $ mco ping –T test –-with-fact hostname=~web web01a time=133.90 ms web01b time=149.21 ms web01c time=163.08 ms ---- ping statistics ---- 3 replies max: 163.08 min: 133.90 avg: 148.7329
  29. 29. Agent = Data Description Language (DDL) + Agent Code30
  30. 30. Beispiel: NRPE-Agent // DDL selbstbeschreibend action "runcommand", :description => "Run a NRPE command" do input :command, :prompt => "Command", :description => "NRPE command to run", :type => :string, :validation => ^[a-zA-Z0-9_-]+$, :optional => false, :maxlength => 50 Validierung output :output, :description => "Output from the Nagios plugin", :display_as => "Output" [...] https://github.com/puppetlabs/mcollective-plugins/blob/777597f9904e4a8e744d7735415ec517b7a5d5e7/agent/nrpe/agent/nrpe.ddl31
  31. 31. Beispiel: NRPE-Agent // Agent Code module MCollective module Agent class Nrpe<RPC::Agent action "runcommand" do validate :command, :shellsafe command = plugin_for_command(request[:command]) [...] reply[:exitcode] = run(command[:cmd], :stdout => :output, :chomp => true) case reply[:exitcode] when 0 reply.statusmsg = "OK" [...] when 2 reply.fail "CRITICAL" [...] else reply.fail "UNKNOWN" end [...] https://github.com/puppetlabs/mcollective-plugins/blob/777597f9904e4a8e744d7735415ec517b7a5d5e7/agent/nrpe/agent/nrpe.rb32
  32. 32. Räume das Cache-Verzeichnis /tmp/cx0 auf - aber nur auf CentOS- Nodes mit einer IP-Adresse in der DMZ action “cleanup", :description => “clean up cache" do input :cachepart, :prompt => “Cache Part", :description => “What part of cache to clean", :type => :string, :validation => ^[a-zA-Z-_d]+$, :optional => false, :maxlength => 30 [...] $ mco rpc --agent cachemgr --action cleanup --arg cachepart=cx0 –T produktion --with-fact operatingsystem=CentOS --with-fact ipaddress=~192.168.1033
  33. 33. Ablauf Request / Response Client Node Sende Request Prüfen Kriterien an Collective (Facts, Classes, ..) Kriterien passen nicht Kriterien passen Suche Agent, prüfen DDL Sende Fehler Agent/Action nicht gefunden, DDL-Fehler an Client ok Agent ausführen Sende Ergebnis an Client34
  34. 34. Starte alle Tomcats durch - auf denen die Applikation iWTF deployed ist. Custom Fact Facter.add(„tomcat_app_iwtf") do setcode do File.exists? „/usr/libexec/tomcat/webapps/iwtf.war“ end end $ mco rpc --agent service --action restart --arg service=tomcat –T produktion –v --with-fact tomcat_app_iwtf=true35
  35. 35. Wobei hilft mir MCollective?36
  36. 36. Ein API ist der Kommandozeile überlegen37
  37. 37. Dashboards und GUIs38
  38. 38. Dokumentation Qualität Wiederverwendbarkeit Vereinfachung39
  39. 39. Abstraktion Rechte- und Rollentrennung (z.B. 2nd / 3rd level)40
  40. 40. Parallelität Geschwindigkeit Skalierbarkeit41
  41. 41. Q& ACassini Consulting GmbHTechnology GuidanceAndreas Schmidttwitter @aschmidt75andreas.schmidt@cassini.deHalskestraße 46 T +49 (0)21 02 94 34 73740880 Ratingen F +49 (0)21 02 94 34 738Deutschland visit www.cassini.de

×