Apacz po liftingu

Serwer Apache 2.2.0 to pierwsza poważna aktualizacja od momentu publikacji Apache 2.0 w 2002 r. Zmiany dotyczą przede wszystkim skalowalności aplikacji oraz bezpieczeństwa.

Serwer Apache 2.2.0 to pierwsza poważna aktualizacja od momentu publikacji Apache 2.0 w 2002 r. Zmiany dotyczą przede wszystkim skalowalności aplikacji oraz bezpieczeństwa.

Stare porzekadło administratorów mówi, że jeśli coś działa, to nie należy tego udoskonalać. Zgodnie z nim, wiele publicznych witryn WWW i intranetów nadal wykorzystuje "stary" serwer Apache 1.3, który na przestrzeni kilku lat udowodnił swoją stabilność. Był i jest także ceniony za swoją wydajność - Apache 1.3 działa na uczelniach i w firmach na serwerach, które pamiętają jeszcze gorączkę spółek internetowych!

Opublikowana w 2002 r. wersja 2.0 była ukłonem w stronę użytkowników, którzy chcieli bądź musieli wykorzystywać serwer Apache na platformach Windows. Zamiast emulacji wywodzących się z Unixa wątków POSIX, zastosowano w niej możliwość implementacji wątków zgodnie z wymogami systemu operacyjnego, co podniosło wydajność i zmniejszyło liczbę błędów. W wersji 2.0 wprowadzono także filtry treści oraz nowe interfejsy API, umożliwiające łatwiejsze pisanie własnych modułów rozszerzających.

Na przełomie listopada i grudnia 2005 r. swoją premierę miała "duża" aktualizacja wersji 2.0 oznaczona indeksem 2.2.0. Administratorzy znów zastanawiają się, czy to już czas na przesiadkę, czy też może poczekać jeszcze jeden "sezon". Tym razem decyzja będzie naprawdę trudna, bowiem wersja 2.2.0, choć z pozoru inkrementalna, przynosi sporo nowości, które trudno zignorować.

Najpierw aplikacje

Na przestrzeni ostatnich lat WWW w coraz większym stopniu stają się frontową warstwą środowisk aplikacyjnych i zmiany wprowadzane w Apache 2.2.0 odzwierciedlają ten trend. Przykładowo, moduł wielowątkowości MPM, odpowiedzialny w serwerze Apache za obsługę połączeń typu keep alive, został wyłączony jako osobny proces. Zabieg ten jest o tyle użyteczny, że w aplikacjach biznesowych sesje keep alive to nie wyjątki, lecz spora część ogólnej liczby połączeń. Dzięki wprowadzonej zmianie serwer może je obsłużyć wydajniej, bez nadmiernego obciążania swoich głównych procesów.

Skalowalność aplikacji wykorzystujących serwer Apache została w wersji 2.2.0 poprawiona przez wprowadzenie efektywnego mechanizmu równoważenia obciążenia. Nowy osobny moduł mod_proxy_balancer równoważy obciążenie między modułami proxy współpracujących serwerów Apache na kilka sposobów. Możliwe jest równoważenie oparte na liczbie połączeń lub ważonym obciążeniu. Wagi przy podziale obciążenia administrator może definiować nie tylko według liczby połączeń, ale także wolumenu danych.

Kolejna sprawa w kontekście to możliwość bezpośredniego odwoływania się modułów Apache do serwera baz danych SQL. W wersji 2.2.0 znalazł się dedykowany moduł mod_dbd, który wykonuje takie operacje w imieniu innych modułów. Co istotne, połączenia z bazami mają charakter wielowątkowy i odbywają się poprzez dedykowaną pulę połączeń. Nowy moduł nie zastąpi raczej dedykowanych modułów Perl czy CGI, ale może być zaczątkiem standaryzacji komunikacji z bazami danych na platformie Apache - czas już chyba najwyższy.

Nieco bezpieczniej

Istotne są także zmiany wprowadzone w modułach związanych z uwierzytelnianiem. Uwierzytelnianie proste, oparte na plikach oraz wykorzystujące serwery LDAP zostały wyraźnie oddzielone od siebie - w sensie fizycznych modułów i ich nazewnictwa. To powinno ułatwić tworzenie bezpiecznych mechanizmów dostępowych do zasobów udostępnianych za pośrednictwem serwera. Poszczególne atrybuty uwierzytelniania mogą być brane pod uwagę, bądź nie, w zależności od tego, z którą wersją serwera moduł został uruchomiony.

Bezpieczeństwo zostało także wzmocnione przez przebudowę mechanizmu filtrów treści. W wersji 2.0 filtry były na sztywno przypisywane typom plików i były na nich wykonywane za każdym razem. Obecnie filtry mogą być wywoływane dynamicznie, w zależności od zawartości nagłówka wywołania/odpowiedzi lub wartości zmiennej systemowej. Filtry w Apache 2.2.0 mogą też być uruchamiane sekwencyjnie na tych samych zbiorach danych - w dowolnej kolejności.

W Apache 2.2.0 pojawiło się wsparcie dla RFC 2817, definiującego możliwość zestawiania sesji TLS na porcie 80 w ramach już istniejącej sesji niezaszyfrowanej. Przejście od sesji otwartej do szyfrowanej w ramach tej samej sesji logicznej samo w sobie jest ułatwieniem. Transmisja TLS przez port 80 umożliwia realizowanie transmisji SSL-VPN pomimo blokowania komunikacji na porcie 143 w sieci, w której znajduje się klient (przeglądarka).

Wiele drobnych zmian

Niewielkie zmiany pojawiły się w nowej wersji serwera Apache. Często nie są to zmiany fundamentalne, lecz udoskonalenia i aktualizacje wynikające z obserwacji. Wyliczmy choćby te ważniejsze. W module mod_proxy w wersji 2.2.0 obsługiwany jest także Apache JServ Protocol w wersji 1.3 (komunikacja binarna serwera Apache z kontenerem serwletów Tomcat). Wreszcie pojawiło się wsparcie dla plików większych niż 2 GB.

Udoskonalono też działanie dyrektywy graceful_shutdown. Obecnie dyrektywa ta może obejmować nie tylko główny serwer httpd, ale także wszystkie współpracujące z nim serwery o statusie worker (serwer zależny, zwykle wykonujący zlecenia w ramach współdzielenia obciążenia), prefork (wstępne przyjmowanie żądań) i event (obsługa połączeń typu keep alive). Serwer główny informuje serwery zależne, że po obsłużeniu bieżących zapytań powinny się wyłączyć i ustala dla nich graniczny parametr timeout.

Jeden bądź wiele plików

W wersji 2.2.0 serwera Apache wprowadzono zmiany odnoszące się do zasad konfiguracji serwera. Standardowa instalacja tworzy - tak jak dotychczas - jeden plik konfiguracyjny dla serwera i wszystkich modułów. Obecnie Apache oficjalnie wspiera trwającą od dłuższego czasu praktykę administratorów polegającą na dzieleniu monolitycznego pliku konfiguracyjnego na kilka mniejszych plików. Podział jest umowny, tj. każdy może podzielić plik konfiguracyjny na tyle plików, ile potrzebuje - nie ma żadnych ograniczeń.


TOP 200