NFsec Logo

Symulacje awarii sieci

16/11/2014 w Administracja Brak komentarzy.  (artykuł nr 465, ilość słów: 485)

W

ięc stworzyliśmy swoją niezawodną aplikację / system / usługę (* niepotrzebne skreślić) i jesteśmy gotowi na produkcję. Wszystko logicznie zostało zaprogramowane – wyłączyliśmy / włączyliśmy – przetestowane. Jednak cykl życia aplikacji w prawdziwej dżungli IT wygląda trochę inaczej.

Na początek nasza aplikacja, jeżeli nie zostanie dobrze ograniczona lub sprofilowana może być trochę zachłanna, jeśli chodzi o zużycie pamięci. System Linux bardzo dobrze radzi sobie z takimi sytuacjami wywołując OOM Killer na najbardziej zasobożernych procesach. Nie musimy czekać na tego typu sytuację – wystarczy, że sami szybko i skutecznie zabijemy nasz produkt za pomocą polecenia: kill -9 [PID]. Ot tak. Nie będziemy świadomi, jak się nasz system zachowa dopóki sami nie zobaczymy go w warunkach awarii. Szczególnie tyczy się to procesów, które komunikują się z innymi procesami – niezależnie, czy są one lokalne, czy zdalne. Trudno przewidzieć, co się stanie, jeśli komunikacja pomiędzy tymi procesami zostanie zakłócona lub przerwana, ale bardzo łatwo doprowadzić do symulacji takich warunków w systemie Linux.

1. Pierwszym narzędziem jakie możemy wykorzystać to iptables. Za jego pomocą możemy przeprowadzić symulację prawdopodobieństwa zaginięcia 10% przychodzącego i wychodzącego ruchu na maszynie i sprawdzeniu, jak zachowa się nasza usługa w takich warunkach. Przy zabawie z tego rodzajem “bardzo ubogiego” połączenia nie można przesadzić z procentami, ponieważ przy wartości 14% i wyżej używanie daemona SSH staje się praktycznie niemożliwe.

iptables -A INPUT -m statistic --mode random --probability 0.1 -j DROP
iptables -A OUTPUT -m statistic --mode random --probability 0.1 -j DROP

Całkowity zanik komunikacji do innego procesu nasłuchującego na porcie TCP 61616 możemy przeprowadzić przy pomocy:

iptables -I INPUT 1 -p tcp --sport 61616 -j DROP
iptables -I INPUT 2 -p tcp --dport 61616 -j DROP

2. Drugim narzędziem wręcz stworzonym do emulacji sieci jest netem. Za jego pomocą możemy emulować opóźnienia, straty, szumy, powielanie oraz zamianę pakietów sieciowych. Na przykład polecenie:

tc qdisc add dev eth0 root netem delay 250ms loss 10% rate 1mbps

doda nam na interfejsie eth0 250ms opóźnienia z 10% utratą pakietów oraz ograniczeniem przepustowości do 1Mbps.

tc qdisc add dev eth0 root netem delay 50ms 20ms distribution normal

Możemy również dodawać przedziały opóźnień i realistyczny ich rozkład (aby otrzymać ładną krzywą w kształcie dzwonu), a także wspomniane wcześniej inne zakłócenia:

tc qdisc add dev eth0 root netem reorder 0.02 duplicate 0.05 corrupt 0.01

Oprócz programów wbudowanych lub dostarczonym razem z każdą dystrybucją systemu Linux możemy również wykorzystać zewnętrzne narzędzia, jak: Chaos Monkey, Comcast, delay-net, slow, WANem.

Więcej informacji: Failure Testing Made Easy

Kategorie K a t e g o r i e : Administracja

Tagi T a g i : , , , , , , ,

Komentowanie tego wpisu jest zablokowane.