SlideShare ist ein Scribd-Unternehmen logo
1 von 72
Downloaden Sie, um offline zu lesen
© 2010 kippdata informationstechnologie GmbH 1 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
What's New in Apache 2.4?
Rainer Jung, Geschäftsführer
kippdata informationstechnologie GmbH
© 2010 kippdata informationstechnologie GmbH 2 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Agenda
 Aufwärmrunde
 Kurze Geschichte
 MPMs
 Bibliotheken
 Logging
 Module
 Community
 Diskussion!
© 2010 kippdata informationstechnologie GmbH 3 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Agenda
 Aufwärmrunde
 Kurze Geschichte
 MPMs
 Bibliotheken
 Logging
 Module
 Community
 Diskussion!
© 2010 kippdata informationstechnologie GmbH 4 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Aufwärmrunde – Wer bin ich?
 Wer bin ich?
 Geschäftsführer kippdata informationstechnologie GmbH
 Gründung 1998
 25 Mitarbeiter
 Erfahrungshintergrund: Schwerpunkt Systemintegration
 Hinzufügen von Produktionsqualitäten (Performance,
Ausfallsicherung) zu (leider) meist schon fertigen
Anwendungen
 Troubleshooting (durch den ganzen Stack hindurch)
und auf dieser Basis dann ...
© 2010 kippdata informationstechnologie GmbH 5 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Aufwärmrunde – Wer bin ich?
 Open Source-Leser
 Problemanalyse
 Open Source-Contributor
 Problembehebung
 Apache Tomcat-Committer und PMC-Mitglied
 Apache HTTP Server-Committer
 mod_jk-Maintainer
 Apache Software Foundation Member
© 2010 kippdata informationstechnologie GmbH 6 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Aufwärmrunde – Wer sind Sie?
 Wer sind Sie?
 Wer gehört eher zu
 Entwicklung?
 Betrieb?
 Wer setzt ein
 Apache 2.2?
 Apache 1.3?
 Wer nutzt auch andere Webserver als Apache (IIS, Nginx,
Lighttpd) nennenswert?
© 2010 kippdata informationstechnologie GmbH 7 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Aufwärmrunde – Wer sind Sie?
 Wer sind Sie?
 Wer hat Spitzenlasten über 1000 Requests pro Sekunde?
 Wer hat schon einmal zu einem Open Source-Projekt
beigetragen?
 Patch, Doku, Problemanalyse
 Wer ist Projektmitglied bei einem Open Source-Projekt?
© 2010 kippdata informationstechnologie GmbH 8 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Agenda
 Aufwärmrunde
 Kurze Geschichte
 MPMs
 Bibliotheken
 Logging
 Module
 Community
 Diskussion!
© 2010 kippdata informationstechnologie GmbH 9 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Historie Apache Webserver
 Vorläufer NCSA httpd: National Center for
Supercomputing Applications, University of Illinois
 Erstes offizielles Apache Release 0.6.2 im April 1995
 Releasefolge:
 Apache 1.0: 1995
 Apache 1.1: 1996
 Apache 1.2: 1997
 Apache 1.3: 1998, Finales Release 1.3.42, Februar 2010
© 2010 kippdata informationstechnologie GmbH 10 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Historie Apache Webserver
 Apache 2.0: 2000, aktuell: 2.0.63
 stabil erst seit 2.0.35, April 2002
 Apache 2.1: 2003
 Entwicklungszweig
 Apache 2.2: Dezember 2005, aktuell: 2.2.15
 Apache 2.3: 2008, aktuell 2.3.6 (diese Woche!)
 Entwicklungszweig
 Apache 2.4: voraussichtlich/hoffentlich 2010
 Lange Verzögerung bei Adoption von 2.0
 wesentlich besser bei 2.2
© 2010 kippdata informationstechnologie GmbH 11 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Agenda
 Aufwärmrunde
 Kurze Geschichte
 MPMs
 Bibliotheken
 Logging
 Module
 Community
 Diskussion!
© 2010 kippdata informationstechnologie GmbH 12 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Übersicht
 Multi Processing Module (MPMs)
 Organisieren die Zuordnung von TCP-Verbindungen bzw.
HTTP-Requests auf Prozesse bzw. Threads
 Modular wegen
 Plattformabhängigkeit
 Anpassung auf spezifische Use Cases
 Vielfalt durch 3rd-Party MPMs
 Interaktion mit Mutterprozess (Start, Stop, Restart)
 Query-Interface (Abfrage von MPM-Eigenschaften)
© 2010 kippdata informationstechnologie GmbH 13 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Prefork MPM
 Prefork (Unix/Linux)
 single-threaded
 ein Prozess pro TCP-Verbindung
 skaliert über zusätzliche Prozesse
 schnell
 stabil (gute Störungsseparation etwa bei instabilen
Modulen)
 gut für Module die nicht thread-safe sind
 Skalierungsengpass bei sehr vielen Connections (Beispiel
Downloadserver)
© 2010 kippdata informationstechnologie GmbH 14 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Worker MPM
 Worker (Unix/Linux)
 multi-threaded
 ein Thread pro TCP-Verbindung
 skaliert ebenfalls über zusätzliche Prozesse
 pro Prozess kommt eine feste Anzahl von Threads dazu
 auch schnell, aber etwas Locking-Overhead
 weniger Störungsseparation bei instabilen Modulen
 nur für Module, die thread-safe sind
 skaliert etwas besser bei sehr vielen Connections
© 2010 kippdata informationstechnologie GmbH 15 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Event MPM
 Event (Unix/Linux)
 multi-threaded
 Event-basierte Architektur, Details gleich
 Häufig deutlich mehr TCP-Verbindungen als Threads
 skaliert ebenfalls über zusätzliche Prozesse
 pro Prozess kommt eine feste Anzahl von Threads dazu
 mehr Context Switches
 weniger Störungsseparation bei instabilen Modulen
 nur für Module die thread-safe sind
 skaliert wesentlich besser bei sehr vielen Connections
© 2010 kippdata informationstechnologie GmbH 16 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Andere MPMs
 winnt (Windows)
 multi-threaded
 ein Thread pro TCP-Verbindung
 nur ein Arbeitsprozess, feste Thread-Zahl
 mpmt_os2 (OS/2)
 netware (Netware)
© 2010 kippdata informationstechnologie GmbH 17 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Neue und entfallene MPMs
 In 2.2
 Wegfall einiger experimenteller MPMs „leader“,
„perchild“, „threadpool“
 „Event“ als neues „experimentelles“ MPM (Unix/Linux)
 In 2.4
 Unterstützung endet für BeOS, TPF, A/UX, Next, Tandem
 MPM „Event“ nicht mehr experimentell, evtl. Default (!)
 Neues experimentelles MPM „simple“
© 2010 kippdata informationstechnologie GmbH 18 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Event APIs
 Event-basierte Architektur bei Event MPM
 Events auf Verbindungen werden von einem Listener-
Thread überwacht und den Worker-Threads zugeteilt
 Epoll (Linux), Kqueue (BSD), Event Ports (Solaris)
 Effizienter als select und poll, insbesondere bei
 großen Pollsets (viele Verbindungen)
 hoher Änderungsrate auf den Pollsets (viele Events)
 In 2.2 noch „experimentell“, also wenige User, langsame
Code-Reifung
 Solaris 10 GA: Kernel crashes bei Apache Stresstest auf Niagara
 exakter API-Kontrakt nicht immer klar
© 2010 kippdata informationstechnologie GmbH 19 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – HTTP Keep Alive
 HTTP-Keep Alive
 Keep Alive bedeutet Verwendung von persistenten TCP-
Verbindungen für mehrere HTTP-Requests hintereinander
 RFC 2616 empfiehlt pro Client maximal 2 parallele
Verbindungen zum Server (well behaved)
 Niedrigere Latenz, flüssigerer Seitenaufbau
 AJAX: die 2-Connections-Regel wird zunehmend verletzt
 Konsequenz: Webserver müssen viele relativ idle
Connections handhaben
 Daumenregel: mit Keep Alive ca. Faktor 5x
© 2010 kippdata informationstechnologie GmbH 20 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Event und Keep Alive
 Event und HTTP-Keep Alive
 Event gibt Worker-Thread frei, sobald ein HTTP-Response
gesendet wurde
 während des Keep Alive (Warten auf den nächsten Request)
wird kein Thread geblockt
 sehr ressourcenschonend, skaliert wesentlich besser
 dafür aber mehr Context Switches
 Bei SSL traditionelle Verarbeitung (ein Thread pro Conn.)
 Alles dies gilt schon bei 2.2
© 2010 kippdata informationstechnologie GmbH 21 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Event in 2.4
 Neu bei Event in 2.4
 Async Write Completion
 Threads werden frei gegeben, sobald Content fertig ist aber
das Netz beim Zurückschreiben blockt
 Beispiel: Download-Farm
 Event nicht mehr als experimentell markiert
 momentan sogar Default MPM auf vielen Plattformen
© 2010 kippdata informationstechnologie GmbH 22 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Exkurs Protokolle
 Exkurs Protokolle: Hanging HTTP, Long poll, Comet,
SPDY, BWTP, BEEP, HTML 5 WebSockets, Hybi et. al.
 Zu lösendes Problem: Server soll Nachrichten an
Clients senden
 Clients erlauben aber keine Connections vom Server
 Ansatz: tunneln durch HTTP
 Client eröffnet HTTP-Verbindung
 Server und Client sind sich einig, die Verbindung offen zu
halten
 Kommunikationsdetails proprietär
© 2010 kippdata informationstechnologie GmbH 23 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Exkurs Protokolle
 Beispiel: alle Handy-Kunden sollen kontinuierlich
eine Verbindung zum Server offen halten
 Problem der Skalierung über enorme Mengen von (idle)
Connections
 Problem der Fairness des Nachrichtenversandes
 Security-Problem
 Servlet 3 Spec beinhaltet erste Ansätze der
Standardisierung (Async API im Servlet-Container)
 Event-Architektur in Gateways / Reverse Proxies ist
unabdingbar
© 2010 kippdata informationstechnologie GmbH 24 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Exkurs Protokolle
 Protokoll-Standardisierung läuft
 Großes Interesse der Browserhersteller
 HTML5 WebSockets bei W3C
(http://dev.w3.org/html5/websockets/)
 Interesse von Spieleentwicklern
 IETF: BiDirectional or Server-Initiated HTTP (hybi)
 http://datatracker.ietf.org/wg/hybi/charter/
 http://www.ietf.org/mail-archive/web/hybi/current/maillist.html
 Google-Experiment SPDY
 http://www.chromium.org/spdy
© 2010 kippdata informationstechnologie GmbH 25 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Besonderheiten Event
 Interessante Aspekte von Event
 Wie macht man ein gutes MPM-Sizing?
 Konfiguriert wird die Thread-Anzahl pro Prozess
 Wieviele Threads können wie viele Connections verarbeiten?
 Parameter MaxClients ist eigentlich MaxWorkerThreads
 Es gibt kein MaxClientsPerProcess
 Deutlich mehr File-Deskriptoren pro Prozess benötigt
 Ein Scoreboard-Eintrag pro Thread, nicht pro Connection
 Apache Server-Status beinhaltet keine Informationen über
Connections, die nicht gerade auf einem Thread sind
© 2010 kippdata informationstechnologie GmbH 26 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Besonderheiten Event
 Weitere interessante Aspekte von Event
 Zusätzlicher Pool-Lifecycle
 nicht nur Request, Connection, Server, Prozess
 nun auch Async Write Completion
 Request ist zu Ende, obwohl die Daten noch auf Aussendung warten
 Bis letztes Wochenende Showstopper, da File Deskriptoren erst am
Ende der Keep Alive-Connection freigegeben wurden
 Flushes brechen Async Write Completion
 Flush schaltet auf synchrones Schreiben um
 noch keine Asynchronität beim Lesen des Requests
© 2010 kippdata informationstechnologie GmbH 27 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Simple MPM
 Simple (Unix/Linux)
 multi-threaded
 ebenfalls Event-basierte Architektur
 skaliert ebenfalls über zusätzliche Prozesse
 pro Prozess kommt eine feste Anzahl von Threads dazu
 Versuch einer Code- und Konfigurations-Vereinfachung
 wirklich noch „experimentell“
 entsprechende Markierung fehlt aber noch
© 2010 kippdata informationstechnologie GmbH 28 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – MPMs als dynamische Module
 MPMs als dynamische Module
 MPMs können jetzt als dynamisch ladbare Module
gebaut werden
 Beispiel: „configure –enable-mpms-shared=all“
 „=most“ fehlt noch, bei „=all“ ist noch „simple“ dabei
 Default MPM noch offen, zur Zeit Event
 Damit werden auch implizite Abhängigkeiten von Modulen zu
MPMs verhindert (fallen auf)
 Erleichtert Distribution mit auswechselbarem MPM
 Witziger Effekt: MPM durch „apachectl graceful“ dynamisch
wechselbar
© 2010 kippdata informationstechnologie GmbH 29 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – MPM-Konfiguration
 MPM-Konfiguration
 Beinhaltet conf/extra/httpd-mpm.conf die Default-
Konfiguration?
 Nein!
 Beispiel: MaxRequestsPerChild für viele MPMs im Default
„10000“, in der Datei aber „0“
 Aktuelle Diskussion: Aktualisierung Defaults und Anpassung
der Datei für 2.4
 Hinweis: MaxRequestsPerChild müsste bei den meisten MPMs
eigentlich MaxConnectionsPerChild heißen. Wichtiger
Unterschied!
© 2010 kippdata informationstechnologie GmbH 30 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Multi Processing Modules – Prozess-Lifecycle
 Prozess-Lifecycle
 Beim „graceful“ Beenden von Prozessen können Keep
Alive-Verbindungen abgebrochen werden
 „apachectl graceful“ oder „apachectl graceful-stop“
 MaxRequestsPerChild
 MaxSpare
 Browser senden in der Regel den Request nochmals,
nicht unbedingt jedoch auch technische HTTP-Clients
© 2010 kippdata informationstechnologie GmbH 31 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Agenda
 Aufwärmrunde
 Kurze Geschichte
 MPMs
 Bibliotheken
 Logging
 Module
 Community
 Diskussion!
© 2010 kippdata informationstechnologie GmbH 32 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Bibliotheksabhängigkeiten – APR
 Bibliotheksabhängigkeiten
 APR: Apache Portable Runtime und APR-Util
 existiert seit Apache 2.0, damals Version 0.9
 Apache 2.2 benötigt APR Version 1.0
 Apache 2.4 benötigt APR Version 1.4
 Es existiert noch APR 2.0 (trunk, bislang kein Release)
 In 2.0 gibt es kein separates APR-Util mehr (reintegriert)
 Aktueller Dependency-Tarball für 2.4 beinhaltet APR 1.4.2 und
APR-UTIL 1.3.9
© 2010 kippdata informationstechnologie GmbH 33 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Bibliotheksabhängigkeiten – Weitere
 Weitere Bibliotheksabhängigkeiten
 PCRE: Perl Compatible Regular Expressions
 In 2.4 unbundled, nicht mehr im Dependency Tarball
 Expat: einfacher XML-Parser
 Weiterhin bundled, optional als externe Abhängigkeit
 SSL: nur noch Unterstützung für OpenSSL
 Unterstützte OpenSSL-Versionen
 Volle Unterstützung für 0.9.8 und 1.0+
 Funktioniert auch noch mit 0.9.7a+, aber evtl. harmlose Compiler-
Warnungen
 Keine Unterstützung mehr für OpenSSL < 0.9.7a
© 2010 kippdata informationstechnologie GmbH 34 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Bibliotheksabhängigkeiten – Weitere
 Weitere Bibliotheksabhängigkeiten
 Abhängig von den eingesetzten Modulen
 memcache: mod_socache_memcache
 distcache: mod_socache_dc
 serf: mod_serf
 lua: mod_lua
… zu diesen und anderen Modulen gleich mehr
© 2010 kippdata informationstechnologie GmbH 35 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Agenda
 Aufwärmrunde
 Kurze Geschichte
 MPMs
 Bibliotheken
 Logging
 Module
 Community
 Diskussion!
© 2010 kippdata informationstechnologie GmbH 36 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Logging – ErrorLog
 Error-Logging
 Neues Format:
 Subsekunden-Zeitstempel (Mikrosekunden)
 Prozess-ID und Thread-ID (welche Logzeilen gehören
zusammen?)
 Aktuelle Diskussion: konfigurierbares Logformat für ErrorLog?
 Client-IP, Request-URL, Connection-ID, ...
 Offene Idee: Korrelations-ID für Requests, erlaubt
einfache Korrelation mit Access-Log
 Neue Logzeile beim Start gibt die verwendete
Commandline aus
© 2010 kippdata informationstechnologie GmbH 37 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Logging – ErrorLog
 Error-Loglevels
 Neue Levels TRACE1 bis TRACE8
 LogLevel konfigurierbar pro Modul
 Spezielle Logfiles aufgelöst (etwa RewriteLog und
RewriteLogLevel)
 LogLevel konfigurierbar pro Directory/Location
 Detaillogging für bestimmte URL-Bereiche
 Log-Makro prüft automatisch ob Loglevel aktiv
 keine Argumentformatierung wenn LogLevel nicht aktiv
 Mehr Trace-Logmeldungen im Core
© 2010 kippdata informationstechnologie GmbH 38 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Logging – AccessLog
 Zeitangaben im AccessLog
 Vorgeschlagener Patch für mod_log_config
 optionale Ergänzung von Subsekundenzeitstempel
(Millisekunden oder Mikrosekunden)
 optionales Loggen von absoluter Zeit in Unix-Milli- oder
Mikrosekunden
 Zeitpunkt Request-Beginn und -Ende logbar
… und wer benutzt eigentlich %D im LogFormat?
© 2010 kippdata informationstechnologie GmbH 39 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Agenda
 Aufwärmrunde
 Kurze Geschichte
 MPMs
 Bibliotheken
 Logging
 Module
 Community
 Diskussion!
© 2010 kippdata informationstechnologie GmbH 40 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – API
 API-Kompatibilität
 In den meisten Fällen sollte eine Neukompilation von
Modulen ausreichen, die bereits mit 2.2 funktionieren
 Wesentlichste Ausnahmen: Scoreboard, AAA
 Anpassungen können Modul verbessern, z.B. Austausch
eines Makros für die Logkonfigurierbarkeit pro Modul
© 2010 kippdata informationstechnologie GmbH 41 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – Build
 Bau von Modulen
 Module werden jetzt per Default dynamisch ladbar
gebaut (DSOs), optional weiterhin statisch
 Vorgefertigte Modulmengen „none“, „few“, „most“,
„all“
 Default ist jetzt „most“
 Genaue Definition und Namen können sich noch ändern
 Diskussion nicht alle gebauten Module per Default zu enablen
(LoadModule auskommentieren)
 Einige Module werden noch in „most“ rutschen, z.B. mod_ssl
falls OpenSSL gefunden wird und mod_proxy
© 2010 kippdata informationstechnologie GmbH 42 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – mod_ssl
 mod_ssl in 2.4
 Unterstützung für OCSP (Online Certificate Status Protocol)
und OCSP Stapling
 Direktive „SSLFIPS On“aktiviert den FIPS-Modus in der SSL-
Bibliothek
 Session-Cache jetzt via Standard-Modul mod_socache_*
 Beispiel: mod_socache_shmcb
 Alternativen: memcache, distcache, dbm
© 2010 kippdata informationstechnologie GmbH 43 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – mod_ssl
 mod_ssl in 2.4
 Update SSLCipherSuite und Aufnahme SSLHonorCipherOrder
in Default-Konfig geplant
 SSLHonorCipherOrder on
SSLCipherSuite 
RC4-SHA:AES128-SHA:ALL:!ADH:!EXP:!LOW:!MD5:!SSLV2:!NULL
BrowserMatch "MSIE" ssl-unclean-shutdown
BrowserMatch "MSIE [2-5]" nokeepalive downgrade-1.0 force-response-1.0
© 2010 kippdata informationstechnologie GmbH 44 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – mod_ssl
 mod_ssl in 2.2
 SNI-Support (Server Name Indication)
 SSL für namensbasierte VHosts
 TLS extension: Client übergibt Servernamen aus dem Hostname bereits
beim SSL-Handshake, also bevor die eigentliche HTTP-Kommunikation
beginnt
 Wer hat es schon ausprobiert?
 CVE-2009-3555: Man in the Middle bei SSL-
Renegotiation
 Wer hat seine Server schon gepatcht?
 Patch für 2.0 noch nicht released
© 2010 kippdata informationstechnologie GmbH 45 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – mod_proxy
 mod_proxy in 2.4
 Balancer-Methoden für mod_proxy_balancer pluggable
 Mitgeliefert: „byrequests“, „bytraffic“, „bybusyness“ und
„heartbeat“. Zu Heartbeat später mehr.
 Einfach zu schreiben
 mod_proxy_balancer selbst gibt es seit 2.2
 Dokumentation versteckt in der mod_proxy-Seite
 Neu: mod_proxy_fcgi
 Nicht gut, wenn FastCGI-Prozess single-threaded ist
 Prozessmanager nicht integriert, stattdessen bin/fcgistarter
 Alternative: http://httpd.apache.org/mod_fcgid/
© 2010 kippdata informationstechnologie GmbH 46 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – mod_proxy
 Experimentelles im mod_proxy in 2.4
 mod_proxy_fdpass
 Übergibt den Client-Socket via Unix Domain Socket an den
konfigurierten Proxy-Pfad
 ProxyPass /some/url fd:///path/to/my/unix/sock
 Komplette Antwort übernimmt der Server-Prozess des Unix Domain
Sockets, Apache wird nach Übergabe des Client-Sockets von der
Verarbeitung befreit
 mod_serf: serf als HTTP-Clientbibliothek
 noch komplett undokumentiert
© 2010 kippdata informationstechnologie GmbH 47 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – mod_proxy
 In Kombination mit einem vorgeschalteten Proxy:
mod_remoteip
 holt Client-IP aus einem Request-Header
 Ergebnis wird überall statt der Proxy-IP verwendet
 Authentisierung, Logging, ...
 Header und vertrauenswürdige Proxies konfigurierbar
 mod_proxy in 2.2
 Wer verwendet mod_proxy_balancer?
 Wer verwendet mod_proxy_ajp?
© 2010 kippdata informationstechnologie GmbH 48 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – AAA
 AAA: Authentication, Authorization, Access Control
 Klarere Trennung der Aspekte
 Kompatibilität mit 2.2-Konfigs durch das optionale
Modul mod_access_compat
 Authentisierungstypen (AuthType)
 weiterhin basic und digest
 Provider (AuthBasicProvider, AuthDigestProvider)
 weiterhin anon, dbd, dbm, file, ldap
 Autorisierung (Require)
 weiterhin dbd, dbm, groupfile, host, user, owner, ldap
© 2010 kippdata informationstechnologie GmbH 49 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – AAA Require
 AAA: Require
 Require ip address / Require not ip address
 Require host domain_name / ...
 Require all denied / Require all granted
 Require env let_me_in (Apache Environment-Variable)
 Require valid-user
 Require user rjung / Require group admin
 Require file-owner / Require file-group
 Require ldap-* (viele)
© 2010 kippdata informationstechnologie GmbH 50 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – AAA Require-Container
 AAA: Require-Container
 <RequireAll> <RequireAny> <RequireNone>
 Seit heute Nacht: mod_authn_socache
 Caching von Ergebnissen der Provider dbd, dbm und file
 Problem: „Erlaube Zugriff aus internem Netz oder als
authentisierter User“ klappte nicht mehr
 Wegen rigider Schichtung lief immer erst die Authentisierung,
d.h. es poppte immer der Basic Auth-Dialog auf, auch bei
Zugriff aus dem internen Netz. Erst später wurde gemerkt, dass
ein User nicht nötig war.
 Gefixt am letzten Wochenende (Danke Stefan)
© 2010 kippdata informationstechnologie GmbH 51 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – AAA Sessions und Form Authentication
 AAA: Sessions
 mod_session
 Cookie-basierte Verwaltung von Session-Daten
 Speicherung entweder im Cookie, also auf dem Client, oder im
Server via DBD
 mod_auth_form
 Formular-basierte Anmeldung
 kooperiert mit mod_session
© 2010 kippdata informationstechnologie GmbH 52 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – Caching
 mod_mem_cache wurde aus 2.4 entfernt
 Man verwende mod_disk_cache
 Neue Cache-Infrastruktur für Module: socache
 mod_socache_* in den Ausprägungen „shmcb“, „dbm“,
„memcache“ und „dc“ (distcache)
 Verwendung etwa in mod_ssl (Session-Cache) und
mod_authn_socache (Credentials-Cache)
 Caches sind geshared zwischen den Apache-Prozessen
einer Instanz
© 2010 kippdata informationstechnologie GmbH 53 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – Caching
 Statt proprietärem Nutzen des Scoreboard: slotmem
 mod_slotmem_* in den Ausprägungen „plain“ und
„shm“
 plain: normales Memory, nicht geshared
 shm: geshared zwischen Prozessen
 Alle Slots eines slotmem haben gleiche Größe
 Verwendung aktuell im Kontext Heartbeat
© 2010 kippdata informationstechnologie GmbH 54 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – Skripting
 Skripting in HTTPD – dynamische Konfiguration
 Probleme:
 Ausdrücken von Konventionen
 Regular Expressions und Backreferences in mod_rewrite
 Ausdrücken von if-then-else
 Komplexe Folgen von Rewrite-Regeln
 Situationsabhängige Konfigurationen (Client, IP, …)
 Environment-Variablen, mod_rewrite
Das Ergebnis ist häufig kaum noch zu verstehen.
Zu geringe Ausdruckskraft der Konstrukte.
© 2010 kippdata informationstechnologie GmbH 55 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – mod_lua
 Alter Ansatz: mod_perl
 Aber: Perl-Interpreter zu schwergewichtig für hohe Last
und hohe Skalierung
 Neuer Ansatz: mod_lua
 Sehr leichtgewichtig
 Optionaler JIT-Compiler
 Basis ANSI-C, d.h. für alle Plattformen verfügbar
 Gute beidseitige Bindings an C
 Domain Specific Language aufbaubar
© 2010 kippdata informationstechnologie GmbH 56 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – mod_lua
 Hintergrund zu Lua
 1993 erfunden in Brasilien
 Gestrippter Interpreter ca. 140 KB
 Verwendung als Plugin-Sprache z.B. in
 Adobe Lightroom
 World of Warcraft
 Whireshark, Snort, VLC
© 2010 kippdata informationstechnologie GmbH 57 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – mod_lua
 Interpreter-Lifecycle
 LuaScope: once, request, conn, server
 server: Pool von Interpreter-Instanzen via apr_reslist
 Skript-Caching
 LuaCodeCache stat|forever|never
 Zugreifbare Request-Daten
 fast alles ist lesbar: uri, host, params, headers, notes, …
 vieles ist schreibbar: uri, user, content_type, status,
filename, headers (in/out), notes
© 2010 kippdata informationstechnologie GmbH 58 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – mod_lua
 Logging
 r:info("This is an info log message") etc.
 Lua-Skripte als Handler
 Produzieren also den Response Content
 LuaMapHandler uri-pattern /path/to/script.lua [function-name]
 LuaMapHandler /(w+)/(/w+) /scripts/$1.lua handle_$2
 Lua-Skripte als Hooks
 Beeinflussen die weitere Verarbeitung, ähnlich wie es die
Konfiguration von Modulen tut
© 2010 kippdata informationstechnologie GmbH 59 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – mod_lua
 Hooks in Lua
 Rückgabewerte wie üblich, in Lua als „apache2.OK“,
„apache2.DECLINED“, „apache2.DONE“
 Mögliche Hooks
 AccessChecker, AuthChecker, CheckUserID, Fixups, InsertFilter,
MapToStorage, TranslateName, TypeChecker
 Angabe von Skript und Funktion darin
 Konfigurierbar bis hinunter auf Directory/Location-Ebene
© 2010 kippdata informationstechnologie GmbH 60 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – Heartbeat
 Heartbeat-Modul
 mod_heartbeat: sendet via Multicast in regelmässigen
Abständen die Anzahl von Threads, die laut Scoreboard
idle bzw. busy sind
 Nutzt mod_watchdog
 Läuft in jedem Knoten einer Farm
 Konfiguration: Zieladresse für die Nachrichten
© 2010 kippdata informationstechnologie GmbH 61 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – Heartbeat
 Heartbeat-Masterknoten
 mod_heartmonitor: horcht auf die Aussendungen und
pflegt eine Liste der gesehene Knoten und ihrer letzten
Daten
 nutzt mod_watchdog
 schreibt Liste auf Platte (Default) oder in slotmem
 mod_lbmethod_heartbeat: Provider für
mod_proxy_balancer
 verteilt Requests zufällig auf die laut Heartbeatdaten des
Heartmonitor verfügbaren freien Slots (der aktiven Knoten)
 Farm-Topologie wird nicht fix konfiguriert
© 2010 kippdata informationstechnologie GmbH 62 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – Watchdog
 mod_watchdog als Scheduler
 Erlaubt die Registrierung von Callbacks
 Ein Thread pro Child, zusätzlich als Singleton nutzbar
 Weitere Watchdogs instanziierbar
 Kein Schutz gegen blockende oder lange laufende
Callbacks
© 2010 kippdata informationstechnologie GmbH 63 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – Content Filter
 mod_substitute
 Ab 2.2: einfache Search and Replace-Operationen auf
Response-Content
 mod_sed
 Neu in 2.4: komplette sed-Implementierung
 Input- und Output-Filter, also auch Request Body-
Rewriting
 Beide auch in Kombination mit Proxy
© 2010 kippdata informationstechnologie GmbH 64 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – Connection-Filter
 mod_reqtimeout
 Ab 2.2.15 (seit kurzem)
 Feingranulare Timeouts und Mindestleseraten
 mod_noloris (experimental)
 Ban für Client IPs mit zu vielen im Lesen wartenden
Connections
 Proxy-Ausnahmen möglich
 Beide Module sind Hilfe bei Denial of Service durch
hängende Client-Verbindungen (Slowloris und Co)
© 2010 kippdata informationstechnologie GmbH 65 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Module – Sonstige
 Nicht behandelte neue Module
 mod_buffer: Input/Output-Buffering
 mod_request: Wiederverwendung von Request-Bodies
 mod_reflector: sende Request-Body über Filter-Chain als
Response zurück
 mod_ratelimit: einfache Bandbreitenbeschränkung pro
Connection
 Interessante separate oder 3rd-Party-Module
 mod_fcgid, mod_ftp (httpd.apache.org)
 mod_macro, mod_define
© 2010 kippdata informationstechnologie GmbH 66 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Agenda
 Aufwärmrunde
 Kurze Geschichte
 MPMs
 Bibliotheken
 Logging
 Module
 Community
 Diskussion!
© 2010 kippdata informationstechnologie GmbH 67 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Community
 Developer-Liste ist low-traffic:
subscribe-dev@httpd.apache.org
 Archiv aller Releases unter
http://archive.apache.org/dist/httpd
 auch 2.3.6!
 Fehlerberichte an die Liste oder
http://issues.apache.org/bugzilla/
 Dokumentation
http://httpd.apache.org/docs/trunk/
© 2010 kippdata informationstechnologie GmbH 68 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Community
 Build von Releases auch bei 2.3: configure, make
 Build von Zwischenständen
 Auschecken aus
http://svn.apache.org/repos/asf/httpd/httpd/trunk/
oder git://git.apache.org/httpd.git
 auto-Tools bereitstellen (autoconf/automake/libtool)
 ./buildconf --with-apr=[dir] and –with-apr-util=[dir]
 configure, make
 Dependencies separat bereitstellen, APR etwa via 2.3.6-
Deps-Tarball
© 2010 kippdata informationstechnologie GmbH 69 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Community
 Feedback sehr willkommen!
 Weitergehende Unterstützung natürlich auch!
 Manchmal sind wir in der Reaktion etwas träge :(
 Aber eigentlich nie unfreundlich ;)
© 2010 kippdata informationstechnologie GmbH 70 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Agenda
 Aufwärmrunde
 Kurze Geschichte
 MPMs
 Bibliotheken
 Logging
 Module
 Community
 Diskussion!
© 2010 kippdata informationstechnologie GmbH 71 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
Diskussion
 Fragen?
© 2010 kippdata informationstechnologie GmbH 72 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010
kippdata – Kontakt
 Wie können wir Ihnen helfen?
 So erreichen Sie uns:
 info@kippdata.de
 rainer.jung@kippdata.de
 www.kippdata.de
 0228/98549-0

Weitere ähnliche Inhalte

Was ist angesagt?

OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenOpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenB1 Systems GmbH
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen B1 Systems GmbH
 
Build your own IoT Cloud! [GER]
Build your own IoT Cloud! [GER]Build your own IoT Cloud! [GER]
Build your own IoT Cloud! [GER]Christian Götz
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOPITZ CONSULTING Deutschland
 
Automatisierte Linux installation 0603_version2012_inoxt_rz
Automatisierte Linux installation 0603_version2012_inoxt_rzAutomatisierte Linux installation 0603_version2012_inoxt_rz
Automatisierte Linux installation 0603_version2012_inoxt_rzinoX-tech GmbH
 

Was ist angesagt? (6)

State of syslog (2005)
State of syslog (2005)State of syslog (2005)
State of syslog (2005)
 
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und EntwicklungsumgebungenOpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
OpenStack und Heat - Standardisierte Test- und Entwicklungsumgebungen
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
 
Build your own IoT Cloud! [GER]
Build your own IoT Cloud! [GER]Build your own IoT Cloud! [GER]
Build your own IoT Cloud! [GER]
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
 
Automatisierte Linux installation 0603_version2012_inoxt_rz
Automatisierte Linux installation 0603_version2012_inoxt_rzAutomatisierte Linux installation 0603_version2012_inoxt_rz
Automatisierte Linux installation 0603_version2012_inoxt_rz
 

Ähnlich wie OSDC 2010 | What's new in Apache 2.4? by Rainer Jung

Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Jürg Stuker
 
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer JungOSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer JungNETWAYS
 
LinuxTag 2007 - Linux im Bundesministerium des Inneren bei der Fußball WM 2006
LinuxTag 2007 - Linux im Bundesministerium des Inneren bei der Fußball WM 2006LinuxTag 2007 - Linux im Bundesministerium des Inneren bei der Fußball WM 2006
LinuxTag 2007 - Linux im Bundesministerium des Inneren bei der Fußball WM 2006Schlomo Schapiro
 
LinuxTag 2007: Linux im Bundesministerium des Inneren bei der Fußball WM 2006
LinuxTag 2007: Linux im Bundesministerium des Inneren bei der Fußball WM 2006LinuxTag 2007: Linux im Bundesministerium des Inneren bei der Fußball WM 2006
LinuxTag 2007: Linux im Bundesministerium des Inneren bei der Fußball WM 2006Schlomo Schapiro
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantChristoph Möller
 
Sicheres Root-Server Hosting mit Linux
Sicheres Root-Server Hosting mit LinuxSicheres Root-Server Hosting mit Linux
Sicheres Root-Server Hosting mit Linuxmarkusmarkert
 
Making the internet faster HTTP/3 und QUIC
Making the internet faster HTTP/3 und QUICMaking the internet faster HTTP/3 und QUIC
Making the internet faster HTTP/3 und QUICQAware GmbH
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 
9. Direct Access Workshop - Marc Eggenberger
9. Direct Access Workshop - Marc Eggenberger9. Direct Access Workshop - Marc Eggenberger
9. Direct Access Workshop - Marc EggenbergerDigicomp Academy AG
 
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang Barth
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang BarthOSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang Barth
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang BarthNETWAYS
 
Collaboration day 2016 panagenda
Collaboration day 2016   panagendaCollaboration day 2016   panagenda
Collaboration day 2016 panagendaBelsoft
 
Evaluation des iSIPS IP Stack für drahtlose Sensornetze
Evaluation des iSIPS IP Stack für drahtlose SensornetzeEvaluation des iSIPS IP Stack für drahtlose Sensornetze
Evaluation des iSIPS IP Stack für drahtlose SensornetzePeter Rothenpieler
 
Keynote der 1. webEdition Benutzer Konferenz 2011 in Frankfurt
Keynote der 1. webEdition Benutzer Konferenz 2011 in FrankfurtKeynote der 1. webEdition Benutzer Konferenz 2011 in Frankfurt
Keynote der 1. webEdition Benutzer Konferenz 2011 in FrankfurtwebEdition
 
IPv6 Integration im Datacenter - wie komplex ist es wirklich?
IPv6 Integration im Datacenter - wie komplex ist es wirklich?IPv6 Integration im Datacenter - wie komplex ist es wirklich?
IPv6 Integration im Datacenter - wie komplex ist es wirklich?Swiss IPv6 Council
 
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...OPITZ CONSULTING Deutschland
 
Lotus Foundations Workshop Teil1
Lotus Foundations Workshop Teil1Lotus Foundations Workshop Teil1
Lotus Foundations Workshop Teil1Andreas Schulte
 
DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenFotiosKaramitsos
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenBjoern Reinhold
 

Ähnlich wie OSDC 2010 | What's new in Apache 2.4? by Rainer Jung (20)

Top 10 Internet Trends 2005
Top 10 Internet Trends 2005Top 10 Internet Trends 2005
Top 10 Internet Trends 2005
 
G&L Tech News 02/17
G&L Tech News 02/17G&L Tech News 02/17
G&L Tech News 02/17
 
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer JungOSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
OSMC 2010 | Java Monitoring und Troubleshooting by Rainer Jung
 
LinuxTag 2007 - Linux im Bundesministerium des Inneren bei der Fußball WM 2006
LinuxTag 2007 - Linux im Bundesministerium des Inneren bei der Fußball WM 2006LinuxTag 2007 - Linux im Bundesministerium des Inneren bei der Fußball WM 2006
LinuxTag 2007 - Linux im Bundesministerium des Inneren bei der Fußball WM 2006
 
LinuxTag 2007: Linux im Bundesministerium des Inneren bei der Fußball WM 2006
LinuxTag 2007: Linux im Bundesministerium des Inneren bei der Fußball WM 2006LinuxTag 2007: Linux im Bundesministerium des Inneren bei der Fußball WM 2006
LinuxTag 2007: Linux im Bundesministerium des Inneren bei der Fußball WM 2006
 
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit VagrantDeployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
Deployment von Entwicklungsumgebungen eines TYPO3-Intranets mit Vagrant
 
Sicheres Root-Server Hosting mit Linux
Sicheres Root-Server Hosting mit LinuxSicheres Root-Server Hosting mit Linux
Sicheres Root-Server Hosting mit Linux
 
Making the internet faster HTTP/3 und QUIC
Making the internet faster HTTP/3 und QUICMaking the internet faster HTTP/3 und QUIC
Making the internet faster HTTP/3 und QUIC
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
9. Direct Access Workshop - Marc Eggenberger
9. Direct Access Workshop - Marc Eggenberger9. Direct Access Workshop - Marc Eggenberger
9. Direct Access Workshop - Marc Eggenberger
 
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang Barth
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang BarthOSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang Barth
OSMC 2010 | Netzwerkmonitoring mit Argus by Wolfgang Barth
 
Collaboration day 2016 panagenda
Collaboration day 2016   panagendaCollaboration day 2016   panagenda
Collaboration day 2016 panagenda
 
Evaluation des iSIPS IP Stack für drahtlose Sensornetze
Evaluation des iSIPS IP Stack für drahtlose SensornetzeEvaluation des iSIPS IP Stack für drahtlose Sensornetze
Evaluation des iSIPS IP Stack für drahtlose Sensornetze
 
Keynote der 1. webEdition Benutzer Konferenz 2011 in Frankfurt
Keynote der 1. webEdition Benutzer Konferenz 2011 in FrankfurtKeynote der 1. webEdition Benutzer Konferenz 2011 in Frankfurt
Keynote der 1. webEdition Benutzer Konferenz 2011 in Frankfurt
 
IPv6 Integration im Datacenter - wie komplex ist es wirklich?
IPv6 Integration im Datacenter - wie komplex ist es wirklich?IPv6 Integration im Datacenter - wie komplex ist es wirklich?
IPv6 Integration im Datacenter - wie komplex ist es wirklich?
 
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
 
Lotus Foundations Workshop Teil1
Lotus Foundations Workshop Teil1Lotus Foundations Workshop Teil1
Lotus Foundations Workshop Teil1
 
Linuxtag holgerkoch openqrm_2013
Linuxtag holgerkoch openqrm_2013Linuxtag holgerkoch openqrm_2013
Linuxtag holgerkoch openqrm_2013
 
DevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigenDevOps: Automatisieren, was wir predigen
DevOps: Automatisieren, was wir predigen
 
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge UnternehmenGewinnung von OPEN SOURCE Techniken für junge Unternehmen
Gewinnung von OPEN SOURCE Techniken für junge Unternehmen
 

OSDC 2010 | What's new in Apache 2.4? by Rainer Jung

  • 1. © 2010 kippdata informationstechnologie GmbH 1 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 What's New in Apache 2.4? Rainer Jung, Geschäftsführer kippdata informationstechnologie GmbH
  • 2. © 2010 kippdata informationstechnologie GmbH 2 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Agenda  Aufwärmrunde  Kurze Geschichte  MPMs  Bibliotheken  Logging  Module  Community  Diskussion!
  • 3. © 2010 kippdata informationstechnologie GmbH 3 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Agenda  Aufwärmrunde  Kurze Geschichte  MPMs  Bibliotheken  Logging  Module  Community  Diskussion!
  • 4. © 2010 kippdata informationstechnologie GmbH 4 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Aufwärmrunde – Wer bin ich?  Wer bin ich?  Geschäftsführer kippdata informationstechnologie GmbH  Gründung 1998  25 Mitarbeiter  Erfahrungshintergrund: Schwerpunkt Systemintegration  Hinzufügen von Produktionsqualitäten (Performance, Ausfallsicherung) zu (leider) meist schon fertigen Anwendungen  Troubleshooting (durch den ganzen Stack hindurch) und auf dieser Basis dann ...
  • 5. © 2010 kippdata informationstechnologie GmbH 5 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Aufwärmrunde – Wer bin ich?  Open Source-Leser  Problemanalyse  Open Source-Contributor  Problembehebung  Apache Tomcat-Committer und PMC-Mitglied  Apache HTTP Server-Committer  mod_jk-Maintainer  Apache Software Foundation Member
  • 6. © 2010 kippdata informationstechnologie GmbH 6 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Aufwärmrunde – Wer sind Sie?  Wer sind Sie?  Wer gehört eher zu  Entwicklung?  Betrieb?  Wer setzt ein  Apache 2.2?  Apache 1.3?  Wer nutzt auch andere Webserver als Apache (IIS, Nginx, Lighttpd) nennenswert?
  • 7. © 2010 kippdata informationstechnologie GmbH 7 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Aufwärmrunde – Wer sind Sie?  Wer sind Sie?  Wer hat Spitzenlasten über 1000 Requests pro Sekunde?  Wer hat schon einmal zu einem Open Source-Projekt beigetragen?  Patch, Doku, Problemanalyse  Wer ist Projektmitglied bei einem Open Source-Projekt?
  • 8. © 2010 kippdata informationstechnologie GmbH 8 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Agenda  Aufwärmrunde  Kurze Geschichte  MPMs  Bibliotheken  Logging  Module  Community  Diskussion!
  • 9. © 2010 kippdata informationstechnologie GmbH 9 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Historie Apache Webserver  Vorläufer NCSA httpd: National Center for Supercomputing Applications, University of Illinois  Erstes offizielles Apache Release 0.6.2 im April 1995  Releasefolge:  Apache 1.0: 1995  Apache 1.1: 1996  Apache 1.2: 1997  Apache 1.3: 1998, Finales Release 1.3.42, Februar 2010
  • 10. © 2010 kippdata informationstechnologie GmbH 10 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Historie Apache Webserver  Apache 2.0: 2000, aktuell: 2.0.63  stabil erst seit 2.0.35, April 2002  Apache 2.1: 2003  Entwicklungszweig  Apache 2.2: Dezember 2005, aktuell: 2.2.15  Apache 2.3: 2008, aktuell 2.3.6 (diese Woche!)  Entwicklungszweig  Apache 2.4: voraussichtlich/hoffentlich 2010  Lange Verzögerung bei Adoption von 2.0  wesentlich besser bei 2.2
  • 11. © 2010 kippdata informationstechnologie GmbH 11 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Agenda  Aufwärmrunde  Kurze Geschichte  MPMs  Bibliotheken  Logging  Module  Community  Diskussion!
  • 12. © 2010 kippdata informationstechnologie GmbH 12 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Übersicht  Multi Processing Module (MPMs)  Organisieren die Zuordnung von TCP-Verbindungen bzw. HTTP-Requests auf Prozesse bzw. Threads  Modular wegen  Plattformabhängigkeit  Anpassung auf spezifische Use Cases  Vielfalt durch 3rd-Party MPMs  Interaktion mit Mutterprozess (Start, Stop, Restart)  Query-Interface (Abfrage von MPM-Eigenschaften)
  • 13. © 2010 kippdata informationstechnologie GmbH 13 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Prefork MPM  Prefork (Unix/Linux)  single-threaded  ein Prozess pro TCP-Verbindung  skaliert über zusätzliche Prozesse  schnell  stabil (gute Störungsseparation etwa bei instabilen Modulen)  gut für Module die nicht thread-safe sind  Skalierungsengpass bei sehr vielen Connections (Beispiel Downloadserver)
  • 14. © 2010 kippdata informationstechnologie GmbH 14 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Worker MPM  Worker (Unix/Linux)  multi-threaded  ein Thread pro TCP-Verbindung  skaliert ebenfalls über zusätzliche Prozesse  pro Prozess kommt eine feste Anzahl von Threads dazu  auch schnell, aber etwas Locking-Overhead  weniger Störungsseparation bei instabilen Modulen  nur für Module, die thread-safe sind  skaliert etwas besser bei sehr vielen Connections
  • 15. © 2010 kippdata informationstechnologie GmbH 15 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Event MPM  Event (Unix/Linux)  multi-threaded  Event-basierte Architektur, Details gleich  Häufig deutlich mehr TCP-Verbindungen als Threads  skaliert ebenfalls über zusätzliche Prozesse  pro Prozess kommt eine feste Anzahl von Threads dazu  mehr Context Switches  weniger Störungsseparation bei instabilen Modulen  nur für Module die thread-safe sind  skaliert wesentlich besser bei sehr vielen Connections
  • 16. © 2010 kippdata informationstechnologie GmbH 16 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Andere MPMs  winnt (Windows)  multi-threaded  ein Thread pro TCP-Verbindung  nur ein Arbeitsprozess, feste Thread-Zahl  mpmt_os2 (OS/2)  netware (Netware)
  • 17. © 2010 kippdata informationstechnologie GmbH 17 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Neue und entfallene MPMs  In 2.2  Wegfall einiger experimenteller MPMs „leader“, „perchild“, „threadpool“  „Event“ als neues „experimentelles“ MPM (Unix/Linux)  In 2.4  Unterstützung endet für BeOS, TPF, A/UX, Next, Tandem  MPM „Event“ nicht mehr experimentell, evtl. Default (!)  Neues experimentelles MPM „simple“
  • 18. © 2010 kippdata informationstechnologie GmbH 18 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Event APIs  Event-basierte Architektur bei Event MPM  Events auf Verbindungen werden von einem Listener- Thread überwacht und den Worker-Threads zugeteilt  Epoll (Linux), Kqueue (BSD), Event Ports (Solaris)  Effizienter als select und poll, insbesondere bei  großen Pollsets (viele Verbindungen)  hoher Änderungsrate auf den Pollsets (viele Events)  In 2.2 noch „experimentell“, also wenige User, langsame Code-Reifung  Solaris 10 GA: Kernel crashes bei Apache Stresstest auf Niagara  exakter API-Kontrakt nicht immer klar
  • 19. © 2010 kippdata informationstechnologie GmbH 19 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – HTTP Keep Alive  HTTP-Keep Alive  Keep Alive bedeutet Verwendung von persistenten TCP- Verbindungen für mehrere HTTP-Requests hintereinander  RFC 2616 empfiehlt pro Client maximal 2 parallele Verbindungen zum Server (well behaved)  Niedrigere Latenz, flüssigerer Seitenaufbau  AJAX: die 2-Connections-Regel wird zunehmend verletzt  Konsequenz: Webserver müssen viele relativ idle Connections handhaben  Daumenregel: mit Keep Alive ca. Faktor 5x
  • 20. © 2010 kippdata informationstechnologie GmbH 20 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Event und Keep Alive  Event und HTTP-Keep Alive  Event gibt Worker-Thread frei, sobald ein HTTP-Response gesendet wurde  während des Keep Alive (Warten auf den nächsten Request) wird kein Thread geblockt  sehr ressourcenschonend, skaliert wesentlich besser  dafür aber mehr Context Switches  Bei SSL traditionelle Verarbeitung (ein Thread pro Conn.)  Alles dies gilt schon bei 2.2
  • 21. © 2010 kippdata informationstechnologie GmbH 21 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Event in 2.4  Neu bei Event in 2.4  Async Write Completion  Threads werden frei gegeben, sobald Content fertig ist aber das Netz beim Zurückschreiben blockt  Beispiel: Download-Farm  Event nicht mehr als experimentell markiert  momentan sogar Default MPM auf vielen Plattformen
  • 22. © 2010 kippdata informationstechnologie GmbH 22 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Exkurs Protokolle  Exkurs Protokolle: Hanging HTTP, Long poll, Comet, SPDY, BWTP, BEEP, HTML 5 WebSockets, Hybi et. al.  Zu lösendes Problem: Server soll Nachrichten an Clients senden  Clients erlauben aber keine Connections vom Server  Ansatz: tunneln durch HTTP  Client eröffnet HTTP-Verbindung  Server und Client sind sich einig, die Verbindung offen zu halten  Kommunikationsdetails proprietär
  • 23. © 2010 kippdata informationstechnologie GmbH 23 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Exkurs Protokolle  Beispiel: alle Handy-Kunden sollen kontinuierlich eine Verbindung zum Server offen halten  Problem der Skalierung über enorme Mengen von (idle) Connections  Problem der Fairness des Nachrichtenversandes  Security-Problem  Servlet 3 Spec beinhaltet erste Ansätze der Standardisierung (Async API im Servlet-Container)  Event-Architektur in Gateways / Reverse Proxies ist unabdingbar
  • 24. © 2010 kippdata informationstechnologie GmbH 24 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Exkurs Protokolle  Protokoll-Standardisierung läuft  Großes Interesse der Browserhersteller  HTML5 WebSockets bei W3C (http://dev.w3.org/html5/websockets/)  Interesse von Spieleentwicklern  IETF: BiDirectional or Server-Initiated HTTP (hybi)  http://datatracker.ietf.org/wg/hybi/charter/  http://www.ietf.org/mail-archive/web/hybi/current/maillist.html  Google-Experiment SPDY  http://www.chromium.org/spdy
  • 25. © 2010 kippdata informationstechnologie GmbH 25 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Besonderheiten Event  Interessante Aspekte von Event  Wie macht man ein gutes MPM-Sizing?  Konfiguriert wird die Thread-Anzahl pro Prozess  Wieviele Threads können wie viele Connections verarbeiten?  Parameter MaxClients ist eigentlich MaxWorkerThreads  Es gibt kein MaxClientsPerProcess  Deutlich mehr File-Deskriptoren pro Prozess benötigt  Ein Scoreboard-Eintrag pro Thread, nicht pro Connection  Apache Server-Status beinhaltet keine Informationen über Connections, die nicht gerade auf einem Thread sind
  • 26. © 2010 kippdata informationstechnologie GmbH 26 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Besonderheiten Event  Weitere interessante Aspekte von Event  Zusätzlicher Pool-Lifecycle  nicht nur Request, Connection, Server, Prozess  nun auch Async Write Completion  Request ist zu Ende, obwohl die Daten noch auf Aussendung warten  Bis letztes Wochenende Showstopper, da File Deskriptoren erst am Ende der Keep Alive-Connection freigegeben wurden  Flushes brechen Async Write Completion  Flush schaltet auf synchrones Schreiben um  noch keine Asynchronität beim Lesen des Requests
  • 27. © 2010 kippdata informationstechnologie GmbH 27 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Simple MPM  Simple (Unix/Linux)  multi-threaded  ebenfalls Event-basierte Architektur  skaliert ebenfalls über zusätzliche Prozesse  pro Prozess kommt eine feste Anzahl von Threads dazu  Versuch einer Code- und Konfigurations-Vereinfachung  wirklich noch „experimentell“  entsprechende Markierung fehlt aber noch
  • 28. © 2010 kippdata informationstechnologie GmbH 28 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – MPMs als dynamische Module  MPMs als dynamische Module  MPMs können jetzt als dynamisch ladbare Module gebaut werden  Beispiel: „configure –enable-mpms-shared=all“  „=most“ fehlt noch, bei „=all“ ist noch „simple“ dabei  Default MPM noch offen, zur Zeit Event  Damit werden auch implizite Abhängigkeiten von Modulen zu MPMs verhindert (fallen auf)  Erleichtert Distribution mit auswechselbarem MPM  Witziger Effekt: MPM durch „apachectl graceful“ dynamisch wechselbar
  • 29. © 2010 kippdata informationstechnologie GmbH 29 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – MPM-Konfiguration  MPM-Konfiguration  Beinhaltet conf/extra/httpd-mpm.conf die Default- Konfiguration?  Nein!  Beispiel: MaxRequestsPerChild für viele MPMs im Default „10000“, in der Datei aber „0“  Aktuelle Diskussion: Aktualisierung Defaults und Anpassung der Datei für 2.4  Hinweis: MaxRequestsPerChild müsste bei den meisten MPMs eigentlich MaxConnectionsPerChild heißen. Wichtiger Unterschied!
  • 30. © 2010 kippdata informationstechnologie GmbH 30 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Multi Processing Modules – Prozess-Lifecycle  Prozess-Lifecycle  Beim „graceful“ Beenden von Prozessen können Keep Alive-Verbindungen abgebrochen werden  „apachectl graceful“ oder „apachectl graceful-stop“  MaxRequestsPerChild  MaxSpare  Browser senden in der Regel den Request nochmals, nicht unbedingt jedoch auch technische HTTP-Clients
  • 31. © 2010 kippdata informationstechnologie GmbH 31 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Agenda  Aufwärmrunde  Kurze Geschichte  MPMs  Bibliotheken  Logging  Module  Community  Diskussion!
  • 32. © 2010 kippdata informationstechnologie GmbH 32 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Bibliotheksabhängigkeiten – APR  Bibliotheksabhängigkeiten  APR: Apache Portable Runtime und APR-Util  existiert seit Apache 2.0, damals Version 0.9  Apache 2.2 benötigt APR Version 1.0  Apache 2.4 benötigt APR Version 1.4  Es existiert noch APR 2.0 (trunk, bislang kein Release)  In 2.0 gibt es kein separates APR-Util mehr (reintegriert)  Aktueller Dependency-Tarball für 2.4 beinhaltet APR 1.4.2 und APR-UTIL 1.3.9
  • 33. © 2010 kippdata informationstechnologie GmbH 33 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Bibliotheksabhängigkeiten – Weitere  Weitere Bibliotheksabhängigkeiten  PCRE: Perl Compatible Regular Expressions  In 2.4 unbundled, nicht mehr im Dependency Tarball  Expat: einfacher XML-Parser  Weiterhin bundled, optional als externe Abhängigkeit  SSL: nur noch Unterstützung für OpenSSL  Unterstützte OpenSSL-Versionen  Volle Unterstützung für 0.9.8 und 1.0+  Funktioniert auch noch mit 0.9.7a+, aber evtl. harmlose Compiler- Warnungen  Keine Unterstützung mehr für OpenSSL < 0.9.7a
  • 34. © 2010 kippdata informationstechnologie GmbH 34 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Bibliotheksabhängigkeiten – Weitere  Weitere Bibliotheksabhängigkeiten  Abhängig von den eingesetzten Modulen  memcache: mod_socache_memcache  distcache: mod_socache_dc  serf: mod_serf  lua: mod_lua … zu diesen und anderen Modulen gleich mehr
  • 35. © 2010 kippdata informationstechnologie GmbH 35 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Agenda  Aufwärmrunde  Kurze Geschichte  MPMs  Bibliotheken  Logging  Module  Community  Diskussion!
  • 36. © 2010 kippdata informationstechnologie GmbH 36 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Logging – ErrorLog  Error-Logging  Neues Format:  Subsekunden-Zeitstempel (Mikrosekunden)  Prozess-ID und Thread-ID (welche Logzeilen gehören zusammen?)  Aktuelle Diskussion: konfigurierbares Logformat für ErrorLog?  Client-IP, Request-URL, Connection-ID, ...  Offene Idee: Korrelations-ID für Requests, erlaubt einfache Korrelation mit Access-Log  Neue Logzeile beim Start gibt die verwendete Commandline aus
  • 37. © 2010 kippdata informationstechnologie GmbH 37 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Logging – ErrorLog  Error-Loglevels  Neue Levels TRACE1 bis TRACE8  LogLevel konfigurierbar pro Modul  Spezielle Logfiles aufgelöst (etwa RewriteLog und RewriteLogLevel)  LogLevel konfigurierbar pro Directory/Location  Detaillogging für bestimmte URL-Bereiche  Log-Makro prüft automatisch ob Loglevel aktiv  keine Argumentformatierung wenn LogLevel nicht aktiv  Mehr Trace-Logmeldungen im Core
  • 38. © 2010 kippdata informationstechnologie GmbH 38 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Logging – AccessLog  Zeitangaben im AccessLog  Vorgeschlagener Patch für mod_log_config  optionale Ergänzung von Subsekundenzeitstempel (Millisekunden oder Mikrosekunden)  optionales Loggen von absoluter Zeit in Unix-Milli- oder Mikrosekunden  Zeitpunkt Request-Beginn und -Ende logbar … und wer benutzt eigentlich %D im LogFormat?
  • 39. © 2010 kippdata informationstechnologie GmbH 39 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Agenda  Aufwärmrunde  Kurze Geschichte  MPMs  Bibliotheken  Logging  Module  Community  Diskussion!
  • 40. © 2010 kippdata informationstechnologie GmbH 40 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – API  API-Kompatibilität  In den meisten Fällen sollte eine Neukompilation von Modulen ausreichen, die bereits mit 2.2 funktionieren  Wesentlichste Ausnahmen: Scoreboard, AAA  Anpassungen können Modul verbessern, z.B. Austausch eines Makros für die Logkonfigurierbarkeit pro Modul
  • 41. © 2010 kippdata informationstechnologie GmbH 41 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – Build  Bau von Modulen  Module werden jetzt per Default dynamisch ladbar gebaut (DSOs), optional weiterhin statisch  Vorgefertigte Modulmengen „none“, „few“, „most“, „all“  Default ist jetzt „most“  Genaue Definition und Namen können sich noch ändern  Diskussion nicht alle gebauten Module per Default zu enablen (LoadModule auskommentieren)  Einige Module werden noch in „most“ rutschen, z.B. mod_ssl falls OpenSSL gefunden wird und mod_proxy
  • 42. © 2010 kippdata informationstechnologie GmbH 42 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – mod_ssl  mod_ssl in 2.4  Unterstützung für OCSP (Online Certificate Status Protocol) und OCSP Stapling  Direktive „SSLFIPS On“aktiviert den FIPS-Modus in der SSL- Bibliothek  Session-Cache jetzt via Standard-Modul mod_socache_*  Beispiel: mod_socache_shmcb  Alternativen: memcache, distcache, dbm
  • 43. © 2010 kippdata informationstechnologie GmbH 43 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – mod_ssl  mod_ssl in 2.4  Update SSLCipherSuite und Aufnahme SSLHonorCipherOrder in Default-Konfig geplant  SSLHonorCipherOrder on SSLCipherSuite RC4-SHA:AES128-SHA:ALL:!ADH:!EXP:!LOW:!MD5:!SSLV2:!NULL BrowserMatch "MSIE" ssl-unclean-shutdown BrowserMatch "MSIE [2-5]" nokeepalive downgrade-1.0 force-response-1.0
  • 44. © 2010 kippdata informationstechnologie GmbH 44 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – mod_ssl  mod_ssl in 2.2  SNI-Support (Server Name Indication)  SSL für namensbasierte VHosts  TLS extension: Client übergibt Servernamen aus dem Hostname bereits beim SSL-Handshake, also bevor die eigentliche HTTP-Kommunikation beginnt  Wer hat es schon ausprobiert?  CVE-2009-3555: Man in the Middle bei SSL- Renegotiation  Wer hat seine Server schon gepatcht?  Patch für 2.0 noch nicht released
  • 45. © 2010 kippdata informationstechnologie GmbH 45 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – mod_proxy  mod_proxy in 2.4  Balancer-Methoden für mod_proxy_balancer pluggable  Mitgeliefert: „byrequests“, „bytraffic“, „bybusyness“ und „heartbeat“. Zu Heartbeat später mehr.  Einfach zu schreiben  mod_proxy_balancer selbst gibt es seit 2.2  Dokumentation versteckt in der mod_proxy-Seite  Neu: mod_proxy_fcgi  Nicht gut, wenn FastCGI-Prozess single-threaded ist  Prozessmanager nicht integriert, stattdessen bin/fcgistarter  Alternative: http://httpd.apache.org/mod_fcgid/
  • 46. © 2010 kippdata informationstechnologie GmbH 46 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – mod_proxy  Experimentelles im mod_proxy in 2.4  mod_proxy_fdpass  Übergibt den Client-Socket via Unix Domain Socket an den konfigurierten Proxy-Pfad  ProxyPass /some/url fd:///path/to/my/unix/sock  Komplette Antwort übernimmt der Server-Prozess des Unix Domain Sockets, Apache wird nach Übergabe des Client-Sockets von der Verarbeitung befreit  mod_serf: serf als HTTP-Clientbibliothek  noch komplett undokumentiert
  • 47. © 2010 kippdata informationstechnologie GmbH 47 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – mod_proxy  In Kombination mit einem vorgeschalteten Proxy: mod_remoteip  holt Client-IP aus einem Request-Header  Ergebnis wird überall statt der Proxy-IP verwendet  Authentisierung, Logging, ...  Header und vertrauenswürdige Proxies konfigurierbar  mod_proxy in 2.2  Wer verwendet mod_proxy_balancer?  Wer verwendet mod_proxy_ajp?
  • 48. © 2010 kippdata informationstechnologie GmbH 48 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – AAA  AAA: Authentication, Authorization, Access Control  Klarere Trennung der Aspekte  Kompatibilität mit 2.2-Konfigs durch das optionale Modul mod_access_compat  Authentisierungstypen (AuthType)  weiterhin basic und digest  Provider (AuthBasicProvider, AuthDigestProvider)  weiterhin anon, dbd, dbm, file, ldap  Autorisierung (Require)  weiterhin dbd, dbm, groupfile, host, user, owner, ldap
  • 49. © 2010 kippdata informationstechnologie GmbH 49 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – AAA Require  AAA: Require  Require ip address / Require not ip address  Require host domain_name / ...  Require all denied / Require all granted  Require env let_me_in (Apache Environment-Variable)  Require valid-user  Require user rjung / Require group admin  Require file-owner / Require file-group  Require ldap-* (viele)
  • 50. © 2010 kippdata informationstechnologie GmbH 50 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – AAA Require-Container  AAA: Require-Container  <RequireAll> <RequireAny> <RequireNone>  Seit heute Nacht: mod_authn_socache  Caching von Ergebnissen der Provider dbd, dbm und file  Problem: „Erlaube Zugriff aus internem Netz oder als authentisierter User“ klappte nicht mehr  Wegen rigider Schichtung lief immer erst die Authentisierung, d.h. es poppte immer der Basic Auth-Dialog auf, auch bei Zugriff aus dem internen Netz. Erst später wurde gemerkt, dass ein User nicht nötig war.  Gefixt am letzten Wochenende (Danke Stefan)
  • 51. © 2010 kippdata informationstechnologie GmbH 51 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – AAA Sessions und Form Authentication  AAA: Sessions  mod_session  Cookie-basierte Verwaltung von Session-Daten  Speicherung entweder im Cookie, also auf dem Client, oder im Server via DBD  mod_auth_form  Formular-basierte Anmeldung  kooperiert mit mod_session
  • 52. © 2010 kippdata informationstechnologie GmbH 52 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – Caching  mod_mem_cache wurde aus 2.4 entfernt  Man verwende mod_disk_cache  Neue Cache-Infrastruktur für Module: socache  mod_socache_* in den Ausprägungen „shmcb“, „dbm“, „memcache“ und „dc“ (distcache)  Verwendung etwa in mod_ssl (Session-Cache) und mod_authn_socache (Credentials-Cache)  Caches sind geshared zwischen den Apache-Prozessen einer Instanz
  • 53. © 2010 kippdata informationstechnologie GmbH 53 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – Caching  Statt proprietärem Nutzen des Scoreboard: slotmem  mod_slotmem_* in den Ausprägungen „plain“ und „shm“  plain: normales Memory, nicht geshared  shm: geshared zwischen Prozessen  Alle Slots eines slotmem haben gleiche Größe  Verwendung aktuell im Kontext Heartbeat
  • 54. © 2010 kippdata informationstechnologie GmbH 54 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – Skripting  Skripting in HTTPD – dynamische Konfiguration  Probleme:  Ausdrücken von Konventionen  Regular Expressions und Backreferences in mod_rewrite  Ausdrücken von if-then-else  Komplexe Folgen von Rewrite-Regeln  Situationsabhängige Konfigurationen (Client, IP, …)  Environment-Variablen, mod_rewrite Das Ergebnis ist häufig kaum noch zu verstehen. Zu geringe Ausdruckskraft der Konstrukte.
  • 55. © 2010 kippdata informationstechnologie GmbH 55 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – mod_lua  Alter Ansatz: mod_perl  Aber: Perl-Interpreter zu schwergewichtig für hohe Last und hohe Skalierung  Neuer Ansatz: mod_lua  Sehr leichtgewichtig  Optionaler JIT-Compiler  Basis ANSI-C, d.h. für alle Plattformen verfügbar  Gute beidseitige Bindings an C  Domain Specific Language aufbaubar
  • 56. © 2010 kippdata informationstechnologie GmbH 56 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – mod_lua  Hintergrund zu Lua  1993 erfunden in Brasilien  Gestrippter Interpreter ca. 140 KB  Verwendung als Plugin-Sprache z.B. in  Adobe Lightroom  World of Warcraft  Whireshark, Snort, VLC
  • 57. © 2010 kippdata informationstechnologie GmbH 57 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – mod_lua  Interpreter-Lifecycle  LuaScope: once, request, conn, server  server: Pool von Interpreter-Instanzen via apr_reslist  Skript-Caching  LuaCodeCache stat|forever|never  Zugreifbare Request-Daten  fast alles ist lesbar: uri, host, params, headers, notes, …  vieles ist schreibbar: uri, user, content_type, status, filename, headers (in/out), notes
  • 58. © 2010 kippdata informationstechnologie GmbH 58 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – mod_lua  Logging  r:info("This is an info log message") etc.  Lua-Skripte als Handler  Produzieren also den Response Content  LuaMapHandler uri-pattern /path/to/script.lua [function-name]  LuaMapHandler /(w+)/(/w+) /scripts/$1.lua handle_$2  Lua-Skripte als Hooks  Beeinflussen die weitere Verarbeitung, ähnlich wie es die Konfiguration von Modulen tut
  • 59. © 2010 kippdata informationstechnologie GmbH 59 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – mod_lua  Hooks in Lua  Rückgabewerte wie üblich, in Lua als „apache2.OK“, „apache2.DECLINED“, „apache2.DONE“  Mögliche Hooks  AccessChecker, AuthChecker, CheckUserID, Fixups, InsertFilter, MapToStorage, TranslateName, TypeChecker  Angabe von Skript und Funktion darin  Konfigurierbar bis hinunter auf Directory/Location-Ebene
  • 60. © 2010 kippdata informationstechnologie GmbH 60 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – Heartbeat  Heartbeat-Modul  mod_heartbeat: sendet via Multicast in regelmässigen Abständen die Anzahl von Threads, die laut Scoreboard idle bzw. busy sind  Nutzt mod_watchdog  Läuft in jedem Knoten einer Farm  Konfiguration: Zieladresse für die Nachrichten
  • 61. © 2010 kippdata informationstechnologie GmbH 61 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – Heartbeat  Heartbeat-Masterknoten  mod_heartmonitor: horcht auf die Aussendungen und pflegt eine Liste der gesehene Knoten und ihrer letzten Daten  nutzt mod_watchdog  schreibt Liste auf Platte (Default) oder in slotmem  mod_lbmethod_heartbeat: Provider für mod_proxy_balancer  verteilt Requests zufällig auf die laut Heartbeatdaten des Heartmonitor verfügbaren freien Slots (der aktiven Knoten)  Farm-Topologie wird nicht fix konfiguriert
  • 62. © 2010 kippdata informationstechnologie GmbH 62 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – Watchdog  mod_watchdog als Scheduler  Erlaubt die Registrierung von Callbacks  Ein Thread pro Child, zusätzlich als Singleton nutzbar  Weitere Watchdogs instanziierbar  Kein Schutz gegen blockende oder lange laufende Callbacks
  • 63. © 2010 kippdata informationstechnologie GmbH 63 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – Content Filter  mod_substitute  Ab 2.2: einfache Search and Replace-Operationen auf Response-Content  mod_sed  Neu in 2.4: komplette sed-Implementierung  Input- und Output-Filter, also auch Request Body- Rewriting  Beide auch in Kombination mit Proxy
  • 64. © 2010 kippdata informationstechnologie GmbH 64 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – Connection-Filter  mod_reqtimeout  Ab 2.2.15 (seit kurzem)  Feingranulare Timeouts und Mindestleseraten  mod_noloris (experimental)  Ban für Client IPs mit zu vielen im Lesen wartenden Connections  Proxy-Ausnahmen möglich  Beide Module sind Hilfe bei Denial of Service durch hängende Client-Verbindungen (Slowloris und Co)
  • 65. © 2010 kippdata informationstechnologie GmbH 65 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Module – Sonstige  Nicht behandelte neue Module  mod_buffer: Input/Output-Buffering  mod_request: Wiederverwendung von Request-Bodies  mod_reflector: sende Request-Body über Filter-Chain als Response zurück  mod_ratelimit: einfache Bandbreitenbeschränkung pro Connection  Interessante separate oder 3rd-Party-Module  mod_fcgid, mod_ftp (httpd.apache.org)  mod_macro, mod_define
  • 66. © 2010 kippdata informationstechnologie GmbH 66 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Agenda  Aufwärmrunde  Kurze Geschichte  MPMs  Bibliotheken  Logging  Module  Community  Diskussion!
  • 67. © 2010 kippdata informationstechnologie GmbH 67 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Community  Developer-Liste ist low-traffic: subscribe-dev@httpd.apache.org  Archiv aller Releases unter http://archive.apache.org/dist/httpd  auch 2.3.6!  Fehlerberichte an die Liste oder http://issues.apache.org/bugzilla/  Dokumentation http://httpd.apache.org/docs/trunk/
  • 68. © 2010 kippdata informationstechnologie GmbH 68 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Community  Build von Releases auch bei 2.3: configure, make  Build von Zwischenständen  Auschecken aus http://svn.apache.org/repos/asf/httpd/httpd/trunk/ oder git://git.apache.org/httpd.git  auto-Tools bereitstellen (autoconf/automake/libtool)  ./buildconf --with-apr=[dir] and –with-apr-util=[dir]  configure, make  Dependencies separat bereitstellen, APR etwa via 2.3.6- Deps-Tarball
  • 69. © 2010 kippdata informationstechnologie GmbH 69 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Community  Feedback sehr willkommen!  Weitergehende Unterstützung natürlich auch!  Manchmal sind wir in der Reaktion etwas träge :(  Aber eigentlich nie unfreundlich ;)
  • 70. © 2010 kippdata informationstechnologie GmbH 70 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Agenda  Aufwärmrunde  Kurze Geschichte  MPMs  Bibliotheken  Logging  Module  Community  Diskussion!
  • 71. © 2010 kippdata informationstechnologie GmbH 71 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 Diskussion  Fragen?
  • 72. © 2010 kippdata informationstechnologie GmbH 72 What's New in Apache 2.4? – Rainer Jung – OSDC 2010 – 23.06.2010 kippdata – Kontakt  Wie können wir Ihnen helfen?  So erreichen Sie uns:  info@kippdata.de  rainer.jung@kippdata.de  www.kippdata.de  0228/98549-0