Temat: Serwery lustrzane - współdzielenie plików...

Witam,

w ciągu najbliższych dni planuję dołączyć dwie nowe maszyny do jednej, już działającej. Będą to lustrzane serwery HTTP - każdy będzie posiadał identyczne oprogramowanie, identyczne pliki konfiguracyjne, z kilkoma wyjątkami (hostname na przykład) oraz będzie świadczył dokładnie te same usługi. Zapoznałem się z zasadami FHS (Filesystem Hierarchy Standard) w systemach Linux i powiem szczerze, że jestem trochę zagubiony. Serwery stoją za sprzętowym loadbalancerem, tak więc mogą współdzielić praktycznie całą konfigurację. Współdzielenie oprogramowania pomiędzy maszynami będzie polegało na podpięciu partycji /usr z zewnętrznej maszyny za pomocą protokołu NFS, tak samo jak współdzielenie plików użytkowników - w tym wypadku partycja /srv. Problemem jest współdzielenie konfiguracji. Zgodnie z FHS, katalog /etc jest unikalny dla każdego systemu. W porządku, pasuje mi to rozwiązanie. Wiele starszych wersji tej dokumentacji zezwala także na istnienie katalogu /usr/etc, który zawierałby współdzieloną dokumentację, jednak nowsze wersje całkowicie tego odradzają. Chciałbym trzymać się tych zasad, ale nawet jeśli zdecydowałbym się na trzymanie konfiguracji w tym folderze to widzę dużo minusów tego rozwiązania. Drugim sposobem, jaki przyszedł mi do głowy jest rsync. Ma on swoje zalety, ma także swoje wady:

Współdzielenie /usr/etc przez NFS:

Zalety:
- prawie zero konfiguracji, podpinasz i zapominasz
- katalog podpięty w trybie read-only, tak więc nie martwię się o niezgodności w plikach na różnych maszynach
- zmiana pliku na maszynie świadczącej usługi NFS spowoduje natychmiastowe pojawienie się zmian na wszystkich maszynach HTTP
- z punktu widzenia intuicji to jest naturalny sposób na współdzielenie konfiguracji pomiędzy maszynami, jako, że cały katalog /usr jest właśnie do tego przeznaczony

Wady:
- w przypadku błędu w pliku konfiguracyjnym padają automatycznie wszystkie serwery HTTP
- brak możliwości wprowadzania zmian pojedynczo, na każdą maszynę z osobna
- wbrew zasadom FHS
- w przypadku awarii serwera NFS padają automatycznie wszystkie usługi

Rozwiązanie z użyciem rsync:

Zalety:
- możliwość wprowadzania zmian pojedynczo na każdą maszynę
- serwer zawsze posiada kopię lokalną plików konfiguracyjnych, więc w razie awarii NFS cały czas świadczy swoje usługi
- mniej problemów, nie trzeba tworzyć dowiązań symbolicznych z /etc do /usr/etc, wszystkie zmiany są wprowadzane bezpośrednio do folderu /etc
- brak problemów podczas rebootu serwera (jeśli dobrze kombinuję, np. w przypadku, gdy podepnę pliki passwd/shadow jako dowiązania symboliczne do /usr/etc to serwer nie wystartuje, ponieważ te pliki będą potrzebne zanim jeszcze zostanie zamontowana partycja zewnętrzna je zawierająca)

Wady:
- większa ilość konfiguracji, dodatkowa aplikacja do zarządzania przez sysadmina
- w przypadku gdy rsync nie będzie automatycznie ściągał zmian po ich pojawieniu się (wtedy kiedy chciałbym wprowadzać nową konfigurację pojedynczo) będę zmuszony wywoływać ręcznie ten proces z użyciem SSH
- w przypadku gdy serwer NFS padnie po aktualizacji konfiguracji na dwóch z trzech maszyn, wtedy jedna może może mieć problemy z działaniem z racji posiadania innej konfiguracji
- niezbyt intuicyjne, katalogi /usr i /srv są już współdzielone za pomocą NFS, ale /etc musi być współdzielone za pomocą rsync..

To pierwsze zalety/wady jakie przychodzą mi na myśl. Szczerze to byłbym bardzo zadowolony gdybym mógł wykorzystać jedną usługę do współdzielenia wszystkiego, ale nie wiem czy jest to możliwe w tym wypadku. Nie wiem także za bardzo czemu FHS odradza używanie /usr/etc do współdzielenia konfiguracji, pliki są podpinane tylko w trybie read-only, zmiany są wprowadzane wyłącznie na serwerze NFS, nie ma problemu z sytuacją wyścigu, nie ryzykuję, że włamanie na jeden serwer HTTP pozwoli na modyfikację wszystkich innych serwerów (chyba, że rsync będzie działał tylko w jedną stronę), no i najważniejsze, jest to z logicznego punktu widzenia prawidłowe rozwiązanie. Jestem raczej początkującym administratorem, niedawno uciekłem z Ubuntu Server na Debiana, do tego chciałbym też trzymać się wyznaczonych zasad zamiast wynajdować na nowo koło, więc wolę się doradzić osób które posiadają większą wiedzę ode mnie. Z którego rozwiązania powinienem skorzystać? A może jest jeszcze jakiś inny, lepszy sposób na to?
Michał Panasiewicz

Michał Panasiewicz Administrator
systemów, sieci i
aplikacji.

Temat: Serwery lustrzane - współdzielenie plików...

puppet, cheef, itd...

Temat: Serwery lustrzane - współdzielenie plików...

Właśnie poznałem nowe narzędzie :) Puppet wydaje się być skrojony całkowicie do moich potrzeb. Jest to niestety dodatkowe oprogramowanie do zarządzania, ale z tego co widzę to z użyciem Puppeta mogę bardzo zautomatyzować cały synchronizacji konfiguracji. Na pewno bliżej zapoznam się z tym oprogramowaniem, dzięki :)



Wyślij zaproszenie do