Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Podział upload-u na kilka serwerów w PHP, W jaki sposób wykonać podział uploadu plików na kilka serwerów..
yllyov
post 3.06.2017, 23:27:31
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.02.2017

Ostrzeżenie: (0%)
-----


Chcę stworzyć serwis który oferuje przestrzeń na pliki, (hosting plików).
Na początek chce zakupić parę serwerów dedykowanych. Na głównym serwerzę chcę odpalić LEMP a na pozostałym LEP.
Aby nie obciążać jednego serwera, chcę zrobić podział uploadu na pare serwerów, zastanawiam się jak to zrobić.
Myślałem aby przekazywać plik poprzez główny serwer do reszty serwerów metodą curl natomiast to zapychałoby niepotrzebnie łącze.
W jaki sposób to zrobić najlepiej (jak zrobić podział uploadu plików na serwery)?

Ten post edytował yllyov 3.06.2017, 23:28:38
Go to the top of the page
+Quote Post
Pyton_000
post 5.06.2017, 07:48:32
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Stawiasz 1 główny serwer, dodatkowe serwery montujesz przez FS i tyle. Dodatkowo możesz podpiąć subdomeny per server aby bezpośrednio z nich zaciągać pliki.
Go to the top of the page
+Quote Post
ohm
post 5.06.2017, 08:15:23
Post #3





Grupa: Zarejestrowani
Postów: 618
Pomógł: 143
Dołączył: 22.12.2010

Ostrzeżenie: (0%)
-----


W tej sytuacji jednym z sensowniejszych rozwiązań jest połączenie serwerów w "jeden" system plików, np. poprzez glusterfs. Nie musisz bawić się w pilnowanie tego, dodawanie/usuwanie bricków jest dość proste. Przy użyciu glustera (lub podobnego rozwiązania) możesz sobie spokojnie zdecentralizować aplikację (np. klon na kilku serwerach)
Go to the top of the page
+Quote Post
yllyov
post 6.06.2017, 15:02:44
Post #4





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.02.2017

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 5.06.2017, 08:48:32 ) *
Stawiasz 1 główny serwer, dodatkowe serwery montujesz przez FS i tyle. Dodatkowo możesz podpiąć subdomeny per server aby bezpośrednio z nich zaciągać pliki.


Mógłbyś bardziej sprecyzować?
Pozdrawiam
Go to the top of the page
+Quote Post
ohm
post 6.06.2017, 16:54:39
Post #5





Grupa: Zarejestrowani
Postów: 618
Pomógł: 143
Dołączył: 22.12.2010

Ostrzeżenie: (0%)
-----


Masz sobie np 5 serwerów, wydzielasz na każdym z serwerów partycję, przykładowo 1TB. Następnie na kazdym instalujesz glusterfs, pod którego "podłączasz" daną partycję i robisz z każdego serwera tzw bricka/node'a, po czym te bricki ze sobą łączysz w jeden "klaster" i masz wirtualny system plików. Taki system plików sobie później montujesz jako np /var/files i masz w nim 5TB danych. Wrzucając jakiś plik do /var/files glusterfs automatycznie rozsyła po tych serwerach dane pliki.
Jeśli zaczyna brakować Ci miejsca, to mozesz spokojnie dodawać kolejne serwery do tego klastra. Możesz też usuwać, pliki powinny zostać automatycznie przeniesione na inne nody.

Oczywiście glusterfs jest tu przykładem, ale ogólnie bez jakiegoś sensownego sieciowego systemu plików się zwyczajnie pogubisz, jeśli planujesz iść w dużą ilość plików i serwerów wink.gif
Go to the top of the page
+Quote Post
yllyov
post 7.06.2017, 04:49:03
Post #6





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 6.02.2017

Ostrzeżenie: (0%)
-----


Rozumiem smile.gif dzieki wielkie za wyjaśnienie. Możesz mi jeszcze jedno powiedzieć, chce zakupić 6 serwerów o parametrach
Ram: 16 gb
Procesor: i7 2600 (4 rdzenie 3.0 ghz)
Dyski: 2x3 tb
Siec: 1gb
Chcialbym je polaczyc w taki sposób jaki opisałeś. Natomiast mam kilka pytań, nie mam doswiadczenia natomiast martwia mnie te pytania:
1. Czy jesli kazdy serwer ma lacze 1gb to jesli na serwerze bedzie kilka tys plikow (np 6k), i powiedzmy 5k osob bedzie w tym samym czasie pobierac plik, tzn. Np (chcialem dac mozliwosc podgladu, odtworzenia plików na stronie i tu wyswietlac reklamy by utrzymac serwery) to czy lacze da rade ze nie bedzie się dlugo bufrowalo? (aby nie dawac unikalnych linkow do plikow chce otwierac je w pliku php np, funkcja fread. Czy tu ograniczac predkosc pobierania dla 1 osoby, czy poprostu otworzyc plik bez ograniczania predkosci wysylania pliku do klienta)
2. Czy gdybym na jednym z 6 serwerów postawil mysql i by nie marnowac miejsca trzymal na nim pliki to czy by serwer się nie zapychal. (gdyz musze gdzies trzymac informacje o plikach i za kazdym razem je pobierac) czy dobrym rozwiazaniem byłoby trzymac te informacje w malych plikach na dysku i za kazdym razem pobierac je. Dodam ze na stronie nie bedzie logowania i rejestracji tzn. Zadnych dodatkowych zapytań do bazy (tylko odczyt informacji o plikach)
3. Waro wedlug ciebie uzywac ngnx czy apache spokojnie da sobie rade przy tego typu projekcje.
4. Znasz jakas strone co jest wytłumaczenie jak skonfigurowac ten system plikow (opisany przez ciebie)?

Gdybyś mogl na nie odpowiedziec, wszystko bym juz wiedział. Jeszcze raz bardzo dziękuję za pomoc smile.gif
Go to the top of the page
+Quote Post
ohm
post 7.06.2017, 08:44:40
Post #7





Grupa: Zarejestrowani
Postów: 618
Pomógł: 143
Dołączył: 22.12.2010

Ostrzeżenie: (0%)
-----


1. Ciężko mi powiedzieć cokolwiek na temat wysycania łącza, ale ogólnie lepiej byłoby ograniczać limit pobierania żeby użytkownik nie musiał czekać (ewentualnie jakieś odliczanie czasu czy kolejkę, ale to są już mniej przyjazne rozwiązania wg mnie). Wg mnie najlepiej jak byś postawił na 1 serwerze "cetralę", czyli główna apka z mysqlem i serwer zarządca glusterfs (ustawiasz jako pierwszy brick, przyjmująs s01) a resztę podpinasz jako "storage" (s02-s06). Następnie montujesz ten wirtualny system plików na każdym z bricków i wrzucasz (na każdy) apkę serwującą pliki. Następnie jeśli użytkownik wysyła żądanie pobrania pliku serwer centralny decyduje (na podstawie obciążenia lub po prostu losowo) z którego serwera może klient pobrać plik (s01.domena.com/jakisplik lub s05, itp, ogólnie s01-s06) wtedy masz do dyspozycji trochę więcej transferu smile.gif Ogólnie wszystko zależy od dobrze przemyślanej struktury żeby nie marnować żadnych zasobów.

2. Jeśli chcesz mieć pewność żeby nie zapcha się główny serwer, to tak jak w przypadku wyżej, wyłączasz go z puli "serwujących", ale ogólnie ciężko powiedzieć jakie będzie miał mysql obciążenie Co do plików, to imo nie ma sensu się w to pchać, lepiej wziąć mysqla z jakąś replikacją, bo przynajmniej będziesz miał jakąś konkretną strukturę danych. Ewentualnie możesz też pomyśleć nad nierelacyjną bazą typu mongodb.

3. Akurat w tym przypadku to raczej nie będzie miało większego znaczenia, bo to zależy w dużej mierze od konfiguracji, aczkolwiek nginx jest trochę lżejszy i do serwowania plików nada się trochę lepiej.

4. Taka dość podstawowa: https://www.howtoforge.com/tutorial/high-av...with-two-nodes/
https://gluster.readthedocs.io/en/latest/Qu...ide/Quickstart/ - tutaj więcej informacji
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.04.2024 - 09:45