WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Frågor kring webserver kluster (https://www.wn.se/forum/showthread.php?t=6288)

brokep 2005-02-24 18:40

Citat:

Originally posted by zoran@Feb 24 2005, 18:33
Vad du kan göra med bilderna är att lagra dem i MySQL som blob, ifall de inte är gigantiskt stora. MySQL replikerar du tämligen lätt.

Sessionsvariabler kan du spara på klientsidan mha-kakor ifall du krypterar dem. Då borde även det fungera tämligen bra.

/Zoran

Skulle nog aldrig rekommendera nån att använda blobbar om man absolut inte måste. Speciellt inte i ett högtillgänglighetssystem där prestanda är ett krav.

Och sessioner hade jag ogärna sparat på klientsidan även om man krypterade dom - kakor är inte alltid gott.

kullervo 2005-02-24 21:13

Citat:

Originally posted by zoran@Feb 24 2005, 17:33
Vad du kan göra med bilderna är att lagra dem i MySQL som blob, ifall de inte är gigantiskt stora. MySQL replikerar du tämligen lätt.

Sessionsvariabler kan du spara på klientsidan mha-kakor ifall du krypterar dem. Då borde även det fungera tämligen bra.

/Zoran

Vad krångligt att ha filer i databas. Filsystem är ju den smidigaste sortens databas att ha filer i... :D

Om man replikerar en MySQL-databas som du beskriver så kommer alla bilder ligga på alla MySQL-servrar. Onödigt slöseri med hårddisk och prestanda. NFS (eller SMB för Windows) är ju gjort för delning av filer över nätverk :D

Visst kan man lägga en del icke-kritiska sessionvariabler krypterat på klientsidan, men man vill ändå inte lägga all sessiondata där (såsom vilken användare man är inloggad som)? Isf är det ju ingen mening att lägga en del hos klienten.

jonny 2005-02-25 01:40

Bör väl gå rätt bra att använda någon form av nätverkslagring för bilder och framförallt att ha dem på en egen server.

Vore kul att höra hur ni löser det på sikt. Det finns ju också relativt enkla lösningar som att uppgradera servern med flera processorer och liknande...

brokep 2005-02-25 02:09

Citat:

Originally posted by jonny@Feb 25 2005, 02:40
Vore kul att höra hur ni löser det på sikt. Det finns ju också relativt enkla lösningar som att uppgradera servern med flera processorer och liknande...
Det tycker jag är "fel" ställe att börja på, i längden kostar det bara mer än att använda det otrevliga uttrycket "gör om, gör rätt".
Kasta hårdvara på problemen skjuter bara upp dom till imorgon :-)
Dessutom är det ju så otroligt roligt att optimera saker! (Tycker jag på riktigt) :)

zoran 2005-02-26 08:48

Citat:

Ursprungligen postat av kullervo
Citat:

Ursprungligen postat av zoran
Vad du kan göra med bilderna är att lagra dem i MySQL som blob, ifall de inte är gigantiskt stora. MySQL replikerar du tämligen lätt.

Sessionsvariabler kan du spara på klientsidan mha-kakor ifall du krypterar dem. Då borde även det fungera tämligen bra.

/Zoran

Vad krångligt att ha filer i databas. Filsystem är ju den smidigaste sortens databas att ha filer i... :D

Om man replikerar en MySQL-databas som du beskriver så kommer alla bilder ligga på alla MySQL-servrar. Onödigt slöseri med hårddisk och prestanda. NFS (eller SMB för Windows) är ju gjort för delning av filer över nätverk :D

Visst kan man lägga en del icke-kritiska sessionvariabler krypterat på klientsidan, men man vill ändå inte lägga all sessiondata där (såsom vilken användare man är inloggad som)? Isf är det ju ingen mening att lägga en del hos klienten.

Hårddiskutrymme? Alltså så här ÄR det: Om du vill eliminera din "one single point of failure" måste du lagra datat redundant.

Ett sätt är det att göra som jag sa, replikerat över MySQL-servrar. Annat sätt är att utnyttja någon form av distribuerat filsystem från en filserver. Ett tredje sätt är att haka på flera servrar på samma diskarray (fast där är det HA vi pratar om och inte LB eftersom bara EN server kan komma åt filerna åt gången).

Prestandamessigt är det ju naturligtvis MySQL-lösningen som har störst överhead. Men ifall man pratar om små datamängder kan den överheaden vara försumbar med tanke på att priset blir annorlunda.

Vad jag kan tänka mig är att den här lösningen inte är värst skalbar.


Vad bertäffar sessionsdata, så visst, om jag hade en internetbank skulle jag väl inte förlita mig på det. Däremot tror jag bestämt att du kan få tillräckligt god säkerhet ifall du ska driva ett community eller liknande.

Om du sparar username i kakan, samt på serversidan ser till att du genererar en checksumma från username + någothemligt-innehåll + IP + whatsoever (för varje användare olika), och sen lagrar checksumman som kaka, så har du kommit en bit på väg. (se till bara att använda ssl).

/Zoran

brokep 2005-02-26 15:57

Standardlösningen man bygger i ett sånt här läge är ju en enklare form av lastbalansering. Det är bäst i form av pris och prestanda.

* N antal webservrar som står i ett lastbalans-"cluster", antingen bakom en riktig lastbalanserare eller bakom t.ex. en maskin som kör gnu balance.

* En filserver (eller fler beroende på hur stabilt man ska ha det) som kör t.ex. NFS och delar ut alla webfiler.
Evt kan man även rsynca över filerna till varje webserver.
* En databas-server. Vill du ha det mer redundant får du replikera den också.

Billig-varianten här är att köra filserver & databas-server på samma maskin - har du inte nån vidare last på databasen så går det oftast alldeles utmärkt, och eftersom du ändå har SPOF (single point of failure) på en replikerad databas i.o.m. att den inte står i ett riktigt cluster, så behöver du inte ha en extra maskin i onödan om prestandan inte är problemet.

Men att lagra bilder i BLOB'ar och göra selects, det är förkastligt. Och att lagra användardata på klientmaskinen, det skulle jag av säkerhetsskäl aldrig göra - det är nog att nån öppnar sin session efter dom har fattat hur du krypterat din nyckel och byter sitt användarid t.ex.
Tänk om Lunarstorm hade lagrat allt hos dig, den hade varit knäckt för länge sen och massvis av människor hade varit inne på olika personers konton. Nej, det är _inte_ en bra lösning.


Alla tider är GMT +2. Klockan är nu 01:19.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson