Skocz do zawartości
Gość Kamikadze

Zewnętrzna baza danych a prędkość

Polecane posty

Gość Kamikadze

Zastanawiam się nad zakupem jakiegoś dodatkowego VPSa pod samego MySQLa aby tam trzymać całą bazę danych aplikacji a pozostałe serwery by pobierały z niego dane.

 

I to rodzi pytanie czy takie rozwiązanie będzie dobre względem prędkości. Bo praktycznie połączenia będą ciągle przez 24/7 do MySQLa i zapytania praktycznie non stop :)

 

Czy serwery korzystające z tej bazy nie będą zamulone? Myślę o 2-3 serwerach z różnych lokalizacji.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Myślę że stosowanie serwera VPS jako serwera bazy danych mija się z celem. Patrząc na wydajność całego systemu właściwie nic nie zyskasz. Jedynie kiedy pojawiają się problemy z dostępnością bazy przejdź na wyższy pakiet. Dodatkowy serwer bazy danych na sens gdy rozmawiamy o serwerach dedykowanych , hostingu współdzielonym. Zapytanie do bazy postawionej na VPS musi przebyć spora drogę. Nikt Tobie nie da gwarancji że postawiony VPS pod to zastosowanie bedzie idealnym rozwiązaniem. Jeżeli chcesz mogę na test postawić tobie baze z lokalizacją UK. Serwery oparte na procesorach xeon 16GB ram i dyski SSD. Są to jednostki tylko pod bazy danych więc biorąc pod uwagę ping raczej będzie to porównywalne z serwerem VPS postawionym w tym samym data center.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Mam dwa serwery dedykowane i na jednym jest MySQL a drugi łączy się zdalnie. Chwilowo zrobiłem tak że drugi ma swoją bazę którą (na razie ręcznie) aktualizuje z danych z tego pierwszego.

 

Zapytania do MySQL:

Sumarycznie ø na godzinę ø na minutę ø na sekundę 541 k 6,05 k 100,86 1,68

 

Więc niby nie jest tego dużo ale baza jest "zarzynana" na okrągło :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

No na razie może i nie to ja wiem że inni mają bardzie, ale serwer też rakieta nie jest :)

 

 

Planuję zwiększyć obciążenie kilkakrotnie :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

I to rodzi pytanie czy takie rozwiązanie będzie dobre względem prędkości. Bo praktycznie połączenia będą ciągle przez 24/7 do MySQLa i zapytania praktycznie non stop smile.png

Czy serwery korzystające z tej bazy nie będą zamulone? Myślę o 2-3 serwerach z różnych lokalizacji.

 

Pamiętaj, że każde zapytanie będzie miało opóźnienie równe czterokrotnemu pingowi do odległej lokalizacji. Wyobraź sobie Joomlę, która stoi w Polsce, a serwer baz danych ma w US. Joomla zadaje 30 zapytań do bazy danych, ping wynosi 100ms (optymistycznie bardzo). Tak więc, każde zapytanie ma opóźnienie rzędu 400ms. Wydaje się, że to mało, ale potrafi zlagować stronę na dodatkowe 5-8 sekund. Jeśli chcesz rozproszyć aplikację po świecie, to lepsza będzie dla Ciebie replikacja master-master i dodatkowe serwery WWW w tej samej serwerowni co bazy danych:

 

Polska: [WWW] [DB] [DB] [WWW] :USA

 

Przykładowe lokalizacje Polska/USA oczywiście są wzięte z kosmosu, bo de facto nie wiem, gdzie chcesz mieć serwery.

Zasadnicze pytanie brzmi, co chcesz osiągnąć :-)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość pzebracki

Zastanawiam się nad zakupem jakiegoś dodatkowego VPSa pod samego MySQLa aby tam trzymać całą bazę danych aplikacji a pozostałe serwery by pobierały z niego dane.

 

I to rodzi pytanie czy takie rozwiązanie będzie dobre względem prędkości. Bo praktycznie połączenia będą ciągle przez 24/7 do MySQLa i zapytania praktycznie non stop smile.png

 

Czy serwery korzystające z tej bazy nie będą zamulone? Myślę o 2-3 serwerach z różnych lokalizacji.

 

To co chcesz zrobic, jak najbardziej jest możliwe, ale zalecana jest komunikacja po L2.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Muszę mieć z kilku serwerów w Polsce dostęp do tak jak by identycznej bazy.

 

Np.

 

Serwer1 gromadzi dane np. z formularzy itp.

Serwer2 korzysta z danych zgromadzonych w MySQL z Serwera1 i "przetwarza je"

Serwer3 pobiera rekordy oraz je aktualizuje - z bazy danych na Serwerze1

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość pzebracki

a nie mozesz sobie tego zrobic w jednej lokalizacji ?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

No właśnie nie :)

 

Potrzebuję kilku lokalizacji + praca z miejsca zamieszkania :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A nie myślałeś o replikacji?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Jeżeli już potrzebujesz kilku różnych lokalizacji to najlepszą praktyką będzie stworzenie prywatnej sieci między nimi.

Utwórz sobie VPN między nimi i kontaktuj się przez swoją prywatną sieć między sobą. Będzie bezpieczniej dla Twoich baz i usługi.

 

Jakbyś coś więcej powiedział, dlaczego takie rozwiązanie preferujesz (rozbijanie tych danych na 3 różne serwery) to też więcej można by było powiedzieć jak to rozplanować.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

VPN odpada...

 

Chyba spróbuję zrobić replikację z pomocą CRON :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

VPN odpada...

 

Chyba spróbuję zrobić replikację z pomocą CRON smile.png

 

Ale to nie ma większego sensu. Nie lepiej zrobić normalną replikację + tunel SSH?

 

Muszę mieć z kilku serwerów w Polsce dostęp do tak jak by identycznej bazy.

Np.

Serwer1 gromadzi dane np. z formularzy itp.

Serwer2 korzysta z danych zgromadzonych w MySQL z Serwera1 i "przetwarza je"

Serwer3 pobiera rekordy oraz je aktualizuje - z bazy danych na Serwerze1

 

Tak z ciekawości - czemu zatem nie zrobisz dostępu do jednej bazy z dwóch zewnętrznych serwerów? Skoro wszystko stoi w Polsce, to pingi nie będą stanowiły większego problemu, a cały ruch możesz, tak jak już wspomniałem tunelować po SSH.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Ze względu na to że jak serwer z MySQL padnie to nie będzie nic działało a tak to jakiś dane pozostaną na serwerach pozostałych które mogą pracować nadal.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

VPN odpada...

Przy VPN wrzucasz sobie wszystkie bazy do jednej sieci i wymieniasz ruchem między nimi, to dobre rozwiązanie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Przy VPN wrzucasz sobie wszystkie bazy do jednej sieci i wymieniasz ruchem między nimi, to dobre rozwiązanie.

 

A mógłbyś to bardziej rozpisać jak to ma działać? Lub rzucić jakiś artykuł?

 

 

Edit:

 

Na razie zrobiłem samą replikację jednej bazy (później pewnie zwiększe do 5) więc nie jest źle... Zależało mi właśnie na tym aby szybko się dane aktualizowały i było "odporne" na awarię jednego serwera.

 

:)

Edytowano przez Kamikadze (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A mógłbyś to bardziej rozpisać jak to ma działać? Lub rzucić jakiś artykuł?

 

 

Edit:

 

Na razie zrobiłem samą replikację jednej bazy (później pewnie zwiększe do 5) więc nie jest źle... Zależało mi właśnie na tym aby szybko się dane aktualizowały i było "odporne" na awarię jednego serwera.

 

smile.png

 

Polecam zestawić tunel SSH między maszynami, bo przy replikacji dane nie są szyfrowane po drodze. Inna rzecz, że replikacja master-master może być w Twoim wypadku lepsza.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Polecam zestawić tunel SSH między maszynami, bo przy replikacji dane nie są szyfrowane po drodze. Inna rzecz, że replikacja master-master może być w Twoim wypadku lepsza.

 

To zależy w jakim kierunku pójdzie mój projekt :)

 

Co do tunelu to może jutro o tym poczytam co nieco :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A mógłbyś to bardziej rozpisać jak to ma działać? Lub rzucić jakiś artykuł?

 

Poszukaj artykułów na temat tworzenia VPNów. Podam Ci skrót, żebyś się nie męczył, znajdź coś o zestawieniu tunelu przy użyciu PPTP.

MySQL w większości przypadków stawia się aby nasłuchiwał na lokalnym interfejsie. Tworzysz sieć prywatną i adresujesz ją na lokalną adresację, każdy z serwerów MySQL ustawiasz na IPki dla przykładu 127.0.0.1, (drugi) 127.0.0.2, (trzeci serwer) 127.0.0.3. Zestawiasz VPN między nimi i każdy serwer bez zbędnego bawienia się czymkolwiek innym będzie widział siebie nawzajem. Wtedy wrzucasz replikację i problem solved. Do tego konfigurujesz, aby VPN zestawiał się razem z boot OS i masz ładnie działającą prywatną sieć.

MySQL schowane jak należy, a transmisja między nimi szyfrowana.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Poszukaj artykułów na temat tworzenia VPNów. Podam Ci skrót, żebyś się nie męczył, znajdź coś o zestawieniu tunelu przy użyciu PPTP.

MySQL w większości przypadków stawia się aby nasłuchiwał na lokalnym interfejsie. Tworzysz sieć prywatną i adresujesz ją na lokalną adresację, każdy z serwerów MySQL ustawiasz na IPki dla przykładu 127.0.0.1, (drugi) 127.0.0.2, (trzeci serwer) 127.0.0.3. Zestawiasz VPN między nimi i każdy serwer bez zbędnego bawienia się czymkolwiek innym będzie widział siebie nawzajem. Wtedy wrzucasz replikację i problem solved. Do tego konfigurujesz, aby VPN zestawiał się razem z boot OS i masz ładnie działającą prywatną sieć.

MySQL schowane jak należy, a transmisja między nimi szyfrowana.

 

Znaczy VPN jako taki to znam, bawiłem się kiedyś tylko nigdy bym nie pomyślał że można zastosować do takich rzeczy :)

 

Dzięki za radę, poczytam na pewno :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Tworzysz sieć prywatną i adresujesz ją na lokalną adresację, każdy z serwerów MySQL ustawiasz na IPki dla przykładu 127.0.0.1, (drugi) 127.0.0.2, (trzeci serwer) 127.0.0.3.

 

Serio? Adresy z loopbacku? :D

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Serio? Adresy z loopbacku? biggrin.png

 

Fakt, grzebiąc właśnie w konfiguracji serwera "wkręciły" mi się te adresy pisząc tutaj. Wybrać wystarczy ipki z innej klasy (a/b/c) i będzie ok.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×