Ogarnij Squid-a – część I warstwa sprzętowa

Pewnie wielu z Was słyszało o pakiecie Squid. Jeden z najpopularniejszych serwerów proxy dla systemów Linux oraz Unix. Jednak już na samym początku warto zaznaczyć, że nie jest on łatwy w obsłudze, a co dopiero w konfiguracji. Wdrażając serwer proxy oparty na Squid-zie musimy przemyśleć parę spraw:

-jaki mamy ruch sieci
-z jakich stron korzystają pracownicy
-jakie wymagania sprzętowe będą odpowiednie
-jak skonfigurować cache dysku
-jak skonfigurować reguły odświeżania
-jaką metodę odświeżania wybrać
-itd

Jak widać, spraw jest dużo, nawet bardzo, dlatego wdrożenie tego systemu tak, aby wszystko śmigało nie jest łatwe. Postaram się nieco przybliżyć serwer proxy Squid. W trzyczęściowej pracy będę chciał pokazać jaki sprzęt wybrać, jak obliczać zasobo-żerność pakietu, jak zainstalować, jak optymalnie skonfigurować i pokazać pewnie tricki, które możemy dzięki niemu wykonać. Dzisiaj chciałbym się zająć sprzętem – jeżeli nie będziemy wiedzieć, na co mamy zwracać uwagę przy wyborze serwera, to zawalimy cały proces wdrożeniowy. Zapraszam zatem do lektury.

Squid – czego on właściwie potrzebuje

Wymagania Squid-a opierają się właściwie na dwóch aspektach. Ilości pamięci RAM oraz wielkości dysku twardego. Procesor nie jest tutaj istotnym elementem, ale też nie jest bez znaczenia. Co do RAM-u i HDD najważniejszą rolę nie odgrywa tutaj wielkość, ale szybkość. Czas dostępu do zmagazynowanych plików musi być jak najmniejszy.

Jak to w ogóle działa ?

Większość stron w internecie jest typu dynamicznego, ale zawsze one zawierają elementy statyczne np. obrazki, tekst. Jeżeli wchodzimy parę razy na tą samą stronę, przeglądarka zawsze musi poprosić serwer o wygenerowanie całej treści strony mimo iż byliśmy na niej powiedzmy już 7 razy, i pewne elementy nie uległy zmianie. Kosztuje to obciążeniem serwera oraz większym przepływem danych przez sieć. Jeżeli po drodze mamy proxy, to wygląda to tak. Wchodzimy pierwszy raz na stronę. Proxy przechwytuje to zapytanie i nie jako w imieniu przeglądarki każe wygenerować treść strony. Według ustalonych wcześniej reguł proxy zapisuje w swojej pamięci pewne dane np. logo i dalej przekazuje przeglądarce informacje w postaci gotowej strony. Powiedzmy, że znów wchodzimy na tą samą stronę 2 godziny później. Proxy znów przechwytuje zapytanie i „dowiaduje” się, że już ta strona była odwiedzana. Prosi o wygenerowanie zawartości witryny i porównuje ją ze swoimi zbuforowanymi danymi. Jeżeli dany element nie zmienił się od czasu ostatniej wizyty np. logo, to zamiast pobierać je od serwera, pobiera ze swojej pamięci. Zyskujemy dzięki temu czas (serwer nie musi ponownie generować obrazka) oraz mniejszy transfer sieci na zewnątrz. Może opisowo niezrozumiale to napisałem, więc może grafika jakoś lepiej pomoże Wam przyswoić jak to się wszystko dzieje.

Bez proxy


Pierwsza wizyta na stronie poprzez proxy



Kolejna wizyta na stronie poprzez proxy

Uwaga !!! Przedstawione rysunki służą tylko do celów poglądowych, nie pokazują pełnej zasady działanie przekazu informacji. Proszę z tej okazji nie robić awantur.

Dobra. Jaki sprzęt pod to.

Wiemy do czego służy Squid, wiemy jak działa, teraz pora zając się jego wymaganiami. Tutaj powiem jedno zdanie. NIE MA TYPOWYCH WYMAGAŃ DLA SQUID-A. Jest za dużo zmiennych, aby je łatwo określić. Te zmienne to:

-natężenie ruchu w sieci
-ilość indeksowanych danych
-typy danych
-czas przechowywania
-ilość komputerów korzystających z proxy
-szybkość łącza

Może jest ich niewiele, ale tyle wystarczy, aby utrudnić jasne określenie wymagań. Poniżej postaram się ogólnie powiedzieć na temat wymagań.

RAM

Najważniejszy parametr dla Squid-a. Jaka jest najmniejsza wymagana wartość ? Nie odpowiem jednoznacznie, ale pewnie wszyscy, który mieli do czynienia z tym narzędziem potwierdzą, że Squid pokazuje co potrafi od 1 GB RAM-u. Także poniżej tej wartości nie ma co patrzeć. A maksymalna ? Praktycznie nie ma takiej. Możemy tak go skonfigurować, aby maksymalnie używał 2 GB, albo 20 GB. Ja osobiście polecam oscylować w granicach 3-4 GB, aby mieć ten komfort psychiczny. Jeżeli będziemy buforować tylko pliki tekstowe, to nawet 1,5 GB mu wystarczy. Jeżeli marzy nam się indeksowanie filmów, plików dźwiękowych to już od 3 GB w górę. Warto tutaj jeszcze podkreślić, że pisząc te wartości biorę pod uwagę ruch oraz ilość komputerów. (w tym przypadku około 1 MB na komputer oraz 100 komputerów.

W dokumentacji można znaleźć zapis, że na każdy 1 GB miejsca na dysku trzeba przypisać 10 MB pamięci w wersji 32-bitowej i 14 MB w wersji 64-bitowej. W pewnym sensie jest to prawda, bo im więcej miejsca Squid ma na HDD, tym większy ma apetyt na RAM.

Warto tutaj jeszcze dodać, aby zwracać uwagę na częstotliwość pracy pamięci RAM. Im wyższa, tym dane będą prędzej „zasuwać”.

Co będzie, jeżeli przypiszemy mu zbyt mało pamięci RAM ? Po prostu Squid zacznie częściej korzystać w dysku i spadnie jego wydajność. Wiadomo, pamięć ram jest dużo szybsza od dysku.

Aby odnaleźć najlepszy wariant, trzeba niestety pobawić się przez pewien czas w dobieranie parametrów aż w końcu odnajdzie się ta najbardziej wydajna. Ogólnie mówiąc, lepiej dać mu więcej, niż mniej.

UWAGA !!! Podawane wartości pamięci RAM są przypisywane tylko Squid-owi, bez systemu operacyjnego.

Dysk twardy.

HDD jest drugim ważnym komponentem. Nie używane elementy z pamięci RAM lądują na dysk, aby ewentualnie być znowu wykorzystanie, odświeżone lub usunięte. Teraz jaki pojemny ma być ten dysk. Według mnie, jeżeli będziemy mieli około 3 GB RAM-u, odpowiednio ustawione reguły odświeżania to 320 GB spokojnie wystarczy.

a) jeden dysk, czy kilka

Można korzystać z kilka dysków, ale metodą JBOD, nie RAID. Zalecane jest korzystanie z tego wariantu, gdyż Squid pracuje wtedy o wiele szybciej.

b) jaki system plików

Jak dla mnie zdecydowanie Reiserfs. Doskonale radzi sobie z dużą ilością małych plików (zobacz dokumentację na ten temat)

Ważne jest, aby dysk był szybki, ale też żeby przez tą szybkość nie generował dużo błędów.

Karta sieciowa.

Ważnym elementem jest też karta sieciowa. Serwer, na którym będzie pracował Squid musi wytrzymać cały ruch sieciowy. Dlatego nie warto kupować karty sieciowej za „dwa browary” w celu zaoszczędzenia, tylko już lepiej zainwestować większe pieniądze, niż później przywracać do życia leżącą sieć.

Procesor

Według mnie, poniżej 1,5 GHz nie schodzić.

Mamy serwer. Teraz gdzie go podłączyć ?

Skoro zakupiliśmy blaszaka, to warto się zastanowić, gdzie go podłączyć. Jest kilka wariantów:

Podłączenie proxy po firewallu:

Podłączenie proxy po firewallu i uruchomienie na nim dzielenie łącza:

Połączenie firewalla i squida na jednej maszynie:


oraz z możliwością dzielenia łącza:

Krótko mówiąc proxy ma być wpięte w główny węzeł Internetu. Pamiętam, jak w mojej aktualnej szkole (nie będę pisał jakiej, bo popsuje im renomę) uruchamiali proxy i zamiast podpiąć w główną gałąź to wpięli w jakąś odnogę. W efekcie Internet jak zaczął mulić, że w czasie ładowania Interii dałbym radę zaparzyć i wypić trzy kawy. Powodem było „latanie” pakietów po całej sieci i poprzez to „zarzynanie” jej działania.

Jeżeli korzystamy z proxy, które będzie dodatkowo dzieło nam łącze, to ważne jest, aby firewall w razie awarii oferował również dzielenie łącza. Squid jest bardzo wyczulony na awarie dysku. Jeżeli dysk się na chwilę nawet zatnie, cały Squid się sypie. Możemy przez to położyć całą sieć. Jeżeli będziemy mieli wszystko przygotowane, to wtedy wystarczy tylko poprzypinać kable, odhashować odpowiednie opcje i już sieć działa jak należy.

Jeżeli zaś stawiamy proxy na firewallu, to polecam uważać na ten serwer, szczególnie na moduł firewall. Jeżeli z jakiegoś powodu on nam siądzie, to wtedy będzie nieciekawie.

Jak widzimy, nie podałem konkretnej receptury na wymagania sprzętowe, lecz omówiłem według mnie najważniejsze aspekty, na jakie należy zwracać uwagę podczas wdrażania proxy. Wymagania będą się zmieniały wraz z przeznaczeniem. Słabszy serwer będzie potrzebny tam, gdzie operuje się na plikach tekstowych, pobiera mało danych z internetu, zaś mocniejszy musi być np. w szkole, gdzie jest powiedzmy 100 komputerów i każdy dzieciak chce oglądać filmiki na Youtube albo przeglądać seksowne zdjęcia swojej koleżanki na Facebook-u. Jeżeli są pytania, zapraszam do dyskusji w komentarzach.

Część druga będzie opisywać instalację oraz konfigurację Squid-a.

Znalazłeś błąd w artykule ? Zgłoś to