Bezpośrednie połączenie Ethernet między dwoma serwerami

13

Powiedzmy, że miałem dwa serwery, które wymagały bardzo niskiego opóźnienia (baza danych, plik itp.). Czy możliwe byłoby bezpośrednie połączenie dwóch serwerów za pomocą 10GbE, więc każdy serwer miał 1 (w rzeczywistości miałby 2) połączenia z „główną” siecią, ale 1 kartę sieciową za pomocą kabla Ethernet podłączonego bezpośrednio do drugiego serwer, brak przełączników i routerów, tylko bezpośrednie połączenie

                         Internet/Datacenter
                                 |
                                 |
                                 |
                                 |
                                 |
                                 |
                                 |
                        --------------------
                        |                  |
            ------------|      Switch      |-----------
            |           |                  |          |
            |           --------------------          |
            |                                         |
            |                                         |
            |                                         |
            |                                         |
            |                                         |
            |                                         |
            |                                         |
  Network Card 1 (eth0)                     Network Card 1 (eth0)
            |                                         |
  --------------------                      --------------------
  |                  |                      |                  |
  |     Server 1     |                      |     Server 2     |
  |                  |                      |                  |
  --------------------                      --------------------
            |                                         |
  Network Card 2 (eth1)                     Network Card 2 (eth1)
            |                                         |
            |                                         |
            |               Direct 10GbE              |
            -------------------------------------------

Moje pierwsze pytanie brzmi: czy to w ogóle byłoby możliwe? Czy będą potrzebować skonfigurowanych nietypowych / specjalnych usług, które pozwolą im rozmawiać przez tę sieć poza standardowym plikiem /etc/sysconfig/network-scripts/? Oboje mieliby statyczne adresy IP na et1, ale jak działałoby takie rzeczy jak routing? Nie jestem ekspertem od sieci, więc prawdopodobnie jest to pytanie n00b

Drugie pytanie, czy jest jakiś sens? Czy byłoby to korzystne, gdyby pozwalało im komunikować się za pośrednictwem standardowego połączenia sieciowego za pomocą przełącznika lub dawało im drugą dedykowaną sieć tylko do komunikacji między serwerami (ponieważ przepustowość byłaby wykorzystywana w standardowej sieci przez klientów uzyskujących dostęp do serwerów) . Przyjęcie opóźnienia było priorytetem.

Wiem, że istnieją pewne problemy z tą metodą, na przykład kiedy przyjechaliśmy dodać trzeci serwer, musieliśmy dać każdemu serwerowi inną kartę sieciową i prawdopodobnie skonfigurować bardzo skomplikowany trójkąt replikacji, ale ponieważ jest to hipotetyczne, pozwala to zignorować.

A ponieważ opóźnienie jest kluczową kwestią, światłowód byłby lepszy niż Ethernet (prędkość nie jest ważna, dopóki może osiągnąć kilka Gb / s)

Wyraziłem to pytanie z linux POV, ponieważ to moje tło, ale może mieć zastosowanie do dowolnego serwera / urządzenia

Plama
źródło
1
Na marginesie należy użyć protokołu UDP, a nie protokołu TCP, aby uzyskać opóźnienie kosztem utraty gwarancji dostawy. W zależności od wielkości twoich pakietów duże ramki mogą również pomóc, ograniczając liczbę pakietów.
Shadok,
@Shadok UDP nie jest idealny do serwerów baz danych, serwerów plików itp., Ale do monitorowania, rejestrowania i innych niekrytycznych rzeczy UDP jest znacznie lepszą opcją, zgadzam się. Myślę, że taka konfiguracja sieci najprawdopodobniej wymagałaby gwarantowanej dostawy, ale pakiety UDP w sieci głównej mają wiele zastosowań.
Smudge
Ok, miałem wrażenie, że opóźnienie było twoim głównym zmartwieniem i pomyślałem, że prawdopodobnie masz sposób na sprawdzenie integralności lub potwierdzenie dostarczenia pakietów w inny sposób niż TCP. Jednym z pomysłów, które właśnie miałem, było zaimplementowanie prostego licznika zwiększonego dla każdego pakietu, a następnie zażądanie ponownie brakujących lub po prostu upuszczenie ich, ale dygresję :)
Shadok
@Shadok - Jeśli udało Ci się sfałszować połączenie UDP z bazą danych, może to prowadzić do nieprzewidzianych zachowań i uszkodzenia. Dodatkowo w zasadzie zamieniasz UDP w TCP, sekwencjonując pakiety i żądając brakujących. Po to jest TCP. Lepiej byłoby utuczyć ethernet do 100 g lub użyć połączenia światłowodowego
glif

Odpowiedzi:

9

Nie ma powodu, dla którego technicznie nie możesz tego zrobić.

Prawdopodobnie zrobiłbym coś podobnego, w danych okolicznościach. Z czysto linuksowego punktu widzenia jest to naprawdę łatwe, wystarczy podać połączenie adres IP z maską bitową / 30, co daje 2 adresy IP, wtedy jest to proste łącze typu punkt-punkt.

Jeśli chcesz rozbudować sieć, możesz uzyskać przełącznik 10GE, a następnie mieć oddzielną sieć VLAN dla ruchu między serwerami. W gamie przełączników Force10 jest kilka bardzo błyszczących elementów, które potrafią przełączać liniowo 10GE z ogromnymi buforami.

Tom O'Connor
źródło
5

Nie mogę skomentować punktu widzenia Linuksa, ale wykorzystam swoją wiedzę i zadam więcej pytań.

Czy zależy Ci na niskim opóźnieniu i musisz synchronizować te serwery? Czy oboje prowadzą bazę danych czy coś takiego? 10GbE powinno wystarczyć do większości potrzeb 2 serwerów, aby je zsynchronizować. Wkrótce wolałbym raczej wydać pieniądze na przyzwoity przełącznik w środku 2 zamiast iść trasą, na którą patrzysz.

Przy pomocy przyzwoitego przełącznika możesz oznaczyć te porty, aby nadać priorytet ruchowi, a nawet QoS ruchowi, który musi być w czasie rzeczywistym.

Moje myśli.

Zapto
źródło
Danie im własnego przełącznika / „sieci prywatnej” byłoby znacznie lepszą opcją niż bezpośrednie połączenie, w ten sposób, gdybyśmy potrzebowali później dodać więcej serwerów, byłoby znacznie łatwiej. Priorytetem jest także priorytetowanie ruchu, właściwie nie zdawałem sobie sprawy, że możesz to zrobić, czy to zależy od funkcji przełącznika / producenta, czy jest to dość standardowa rzecz?
Smudge
QoS na przełączniku jest w dużej mierze zależny od dostawcy, niektórzy go obsługują, niektórzy wspierają go w bardzo zastrzeżony sposób, niektórzy obsługują go zgodnie z RFC, ale prawdopodobnie trzeba go mieć na wszystkich urządzeniach w sieci, aby zobaczyć przyzwoity efekt.
Tom O'Connor,
+1, ponieważ wiele przełączników działa teraz w sposób, który jest zasadniczo mądry. Prawidłowo skonfigurowana sieć będzie korzystna na wiele sposobów już omówionych, a także pomoże w znalezieniu usterki.
Dan
5

Zrobiłem to między dwoma laptopami. Większość nowoczesnych kart LAN ma między sobą automatyczną negocjację, dzięki czemu można użyć zwykłego kabla LAN.

Ustaw statyczne adresy IP, które nie są w tym samym zakresie, co każda inna podsieć, której używasz - na przykład, jeśli moje systemy znajdują się w podsieci 192.168.xx, używam między nimi podsieci 10.0.0.x. W przeciwnym razie powinno po prostu działać

Journeyman Geek
źródło
2

Korzystanie z takiej konfiguracji nie ma żadnej korzyści. dzisiejsze przełączniki błyskawicznie się zapalają, więc nigdy nie spotkasz żadnego widocznego opóźnienia z powodu przełącznika. i skalowalność również byłaby dla ciebie dużym problemem. Ponadto pojawiłby się problem z konfiguracją routingu, ponieważ będziesz musiał utrzymywać DWIE osobne sieci zamiast tylko jednej.

Farhan
źródło
2
Zaletą w mojej sytuacji było to, że bezpośrednie połączenie wyeliminowało potrzebę użycia szyfrowania SSL w połączeniu z bazą danych, ponieważ przechodzi ono przez prywatny przewód, a nie półprywatny przełącznik, w którym można wąchać hasła.
glif
2
  1. Jestem pewien, że będziesz potrzebować kabla krosowego, aby połączyć Serwer 1 z Serwerem 2.
  2. Będziesz miał bardzo małe opóźnienie, ale opóźnienie w sieci LAN z nowoczesnymi przełącznikami jest prawie tak bliskie zeru, jak to możliwe. Szczerze wątpię widać żadnego mierzalnego wzrostu wydajności.
SBWorks
źródło
10
Gb i 10 Gb robią auto-MDIX, więc nie potrzebujesz crossovera. To tylko dla 10/100.
MDMarra,
Myślę, że masz rację, @MarkM Nie wydaje mi się, żebym kiedykolwiek próbował tego w prawdziwym życiu.
SBWorks,
2

Bezpieczeństwo a wydajność vs. pieniądze.

  • Jeśli ruch na kanale zwrotnym jest duży, a pieniądze niskie, skorzystaj z bezpośredniego połączenia. Odbywa się to codziennie, aw wielu rzeczywistych sytuacjach może mieć lepszą wydajność niż przeciążony przełącznik.

  • Jeśli ruch na kanale tylnym jest niski, a bezpieczeństwo średnie lub niskie, połącz karty sieciowe, aby zwiększyć ogólną przepustowość Internetu - dwa połączenia z każdego serwera do Internetu, sieć NIC dla wielu domów w celu „odizolowania” ruchu replikacji (oddzielne przestrzenie IP ułatwiają zaporę ogniową , audyt, wykonaj diagnostykę śledzenia pakietów itp.).

  • Jeśli bezpieczeństwo jest wysokie i dużo pieniędzy, użyj przełącznika. Łatwiejsze do rozszerzenia. Łatwiej zdiagnozować problemy.

W danym scenariuszu zakup przełącznika nie byłby uzasadniony. Zastosowanie istniejącego przełącznika z segmentacją VLAN byłoby możliwe. Chociaż nie widzę żadnego powodu, aby podłączyć się do przełącznika, chyba że serwery są współdzielone, tj. Fizycznie niedostępne. To marnotrawstwo dwóch portów przełączników, chyba że przechwytywanie / debugowanie pakietów jest aktywne.

Joe
źródło