Czy rozsądne jest używanie NFS na produkcyjnym serwerze WWW?
Czy NFS może być rozsądnie używane na serwerach produkcyjnych jako sposób łączenia serwera obliczeniowego z serwerem pamięci masowej, zakładając, że połączenie jest realizowane przez połączenie LAN 1Gbe lub 10Gbe?
Oczywiście istnieje pewne obciążenie sieci, a NFS wydaje się szczególnie wolniejszy przy zapisach, jeśli masz włączony tryb synchronizacji. W przeciwnym razie wydaje się dość lekki i zdolny do skalowania na podstawie tego, co mogę powiedzieć, ale osobiście mam z tym niewielkie doświadczenie. Czy się mylę?
Problem polega na tym, że mam teraz serwer, który działa zarówno jako pamięć masowa, jak i serwer sieciowy, ale ostatecznie będę musiał podzielić te dwa elementy prawdopodobnie w przyszłości i biorąc pod uwagę, że niektóre żądania muszą przejść przez warstwę aplikacji internetowej w celu uwierzytelnienia przed zainicjowaniem transferu plików, to staje się trochę trudne z tym oprogramowaniem. Network fs mount to najprostsza opcja, po prostu ... nie wiem, czy to dobra.
Planuję również spróbować wykorzystać lokalne buforowanie z NFS, co powinno trochę poprawić wydajność, ale nie jestem pewien, czy to wystarczy.
Jeśli chodzi o alternatywy, jest tylko iSCSI, o którym wiem, że jest prawdziwym konkurentem, a większość ludzi wydaje się polecać NFS zamiast innych mniej znanych.
Odpowiedzi
NFS jest w porządku, z wyjątkiem spełnienia niektórych innych kryteriów, a mianowicie:
- Oba zaangażowane systemy mogą natywnie korzystać z NFS. Windows się tutaj nie liczy, w pewnym sensie działa, ale ma wiele dziwactw i często jest trudny do pracy z NFS w środowisku wieloplatformowym (a jeśli jest to tylko Windows, użyj SMB3, eliminuje większość innych problemów z NFS). Zauważ, że po stronie klienta oznacza to obsługę na poziomie jądra, ponieważ implementacja na poziomie użytkownika albo musi radzić sobie z problemami wydajnościowymi związanymi z używaniem czegoś takiego jak FUSE, albo musi być bezpośrednio połączona z aplikacją, która musi mieć dostęp do dzielić.
- Prawidłowo zweryfikowałeś, jak klient NFS obsługuje restart serwera NFS. Dotyczy to zarówno samego systemu operacyjnego (co w większości przypadków powinno być w porządku), jak i oprogramowania, które będzie uzyskiwać dostęp do udziału. W szczególności należy zachować szczególną ostrożność na niektórych platformach klienckich, gdy oprogramowanie korzystające z udziału utrzymuje pliki otwarte przez dłuższy czas, ponieważ nie wszystkie implementacje klienta NFS z wdziękiem obsługują ponowne uruchamianie serwera poprzez jawne ponowne montowanie i ponowne walidowanie blokad i uchwytów plików, tak jak powinny (co prowadzi do wszelkiego rodzaju problemów z oprogramowaniem klienckim). Zauważ, że powinieneś sprawdzić to ponownie za każdym razem, gdy jakakolwiek część stosu jest aktualizowana lub rekonfigurowana.
- Chcesz skonfigurować odpowiednie mapowanie identyfikatorów użytkowników / grup. Jest to duże, ponieważ bez niego albo musisz odwzorować mapowania UID / GID między systemami (wykonalne, ale byłbym ostrożny podczas konfigurowania logowania jednokrotnego w sieci wewnętrznej dla systemu z dostępem do Internetu) lub skończysz z potencjalnie poważnym wpływ na bezpieczeństwo (a mianowicie to, co widzisz w jednym systemie dla uprawnień, nie zgadza się z tym, co widzisz w innych).
- Pracujesz przez zabezpieczone łącze sieciowe lub chcesz prawidłowo skonfigurować uwierzytelnianie udziału. Bez autoryzacji każdy użytkownik odsyłacza może uzyskać do niego dostęp (a złośliwy klient może z łatwością pominąć podstawowe dyskrecjonalne kontrole dostępu UNIX).
Zakładając, że spełniasz wszystkie te kryteria i masz dość szybką sieć, wszystko powinno być w porządku. Ponadto, jeśli możesz uruchamiać ramki typu jumbo, zrób to, bardzo pomagają one w każdym sieciowym systemie plików lub sieciowej pamięci blokowej.
NFS jest absolutnie OK i jest preferowany w stosunku do iSCSI ze względu na fakt, że NFS jest znacznie łatwiejszy do zarządzania, udostępniania i tworzenia kopii zapasowych.
Od lat używamy NFS do podłączania naszej sieci SAN do naszych serwerów VMware ESXi, obsługując na niej setki maszyn wirtualnych. Żaden problem.
Wąskim gardłem jest raczej system pamięci masowej niż protokół sieciowy.
Oczywiście połączenie sieciowe powinno być wystarczająco szybkie, co oznacza Ethernet 10 Gb lub światłowód. Nie przejmujemy się już nawet oddzielną siecią pamięci.
iSCSI może być trochę szybsze ...
https://www.vmware.com/content/dam/digitalmarketing/vmware/en/pdf/techpaper/storage_protocol_comparison-white-paper.pdf
https://www.hyper-v.io/whos-got-bigger-balls-testing-nfs-vs-iscsi-performance-part-3-test-results/
... ale NFS, jak każdy inny przekierowujący sieci (SMB3, AFS / AFP itp.), umożliwia jednoczesny wielodostęp, co jest trudne w przypadku iSCSI lub innych protokołów blokowych.
https://forums.starwindsoftware.com/viewtopic.php?f=5&t=1392