PDA

Bekijk Volledige Versie : PHP Session sharing



GuusDeGraeve
22/06/09, 11:55
Als je nu meerder webservers in een cluster hebt zitten waarover een website verspreid staat. En je wil je PHP sessies sharen over de meerdere servers.

Wat is dan de beste manier hiervoor? session_save path op NFS, sessies doen via MySQL, ...?

Tim.Bracquez
22/06/09, 12:02
Hier altijd via nfs of iets dergelijks gedaan. (Ook DRBD in andere setups)

Deze link is er vermoedelijk toch al('home' folders) en is het eenvoudigste te gebruiken.

GuusDeGraeve
22/06/09, 12:19
Wat ik wel graag zou hebben is dat de sessions niet in een single-point-of-failure zitten. Bij NFS bijvoorbeeld, als de NFS server stilvalt kunnen er geen sessies gemaakt/gelezen worden. Wat uiteraard voor problemen zorgt in de applicaties.

Ik had zitten lezen over memcached, wat hiervoor volgens velen de beste oplossing zou zijn, facebook en dergelijke grote projecten werken er ook mee. Maar dan zit je toch nog steeds met een single point of failure, tenzij je dan met DRBD verschillende memcached servers realtime synct.

Sander-
22/06/09, 12:35
Wie zegt dat je NFS server standaard een SPOF zou zijn dan? Je kunt ook je NFS via DRDB dupliceren, of in geval van een enterprise NAS oplossing zijn daar vaak ook standaard modules en mogelijkheden voor. Maar heb je dan ook:
2 uplinks naar verschillende coreswitches bij je provider
2 firewalls in HA
2 switches in HA

etc?

GuusDeGraeve
22/06/09, 12:39
Dat is waar, maar ik was eigenlijk opzoek naar de meest performante manier, en aangezien een memcached server alles in het geheugen zet zal dat ongetwijfeld performanter zijn dan NFS. Je kan inderdaad oneindig ver gaan wat HA betreft, jammer genoeg ook oneindig ver in budget ;).

Japje
22/06/09, 12:42
waarom NFS met DRDB doen? kun je net zo goed die webbakken zelf laten DRDB'en.. dan heb je ook geen NFS link er tussen.. en kun je met 2 bakken minder af..

Sander-
22/06/09, 12:43
waarom nfs DRDB doen? kun je net zo goed die webbakken zelf laten syncen.. dan heb je ook geen NFS link er tussen.. en kun je met 2 bakken minder af..

Als je met 2 machines werkt wel, ik neem aan dat je ook wil kunnen groeien? Dan is het slimmer om nu gelijk het goed op te zetten zodat je in de toekomst makkelijker nodes kunt bijprikken.

Mikey
22/06/09, 12:43
waarom NFS met DRDB doen? kun je net zo goed die webbakken zelf laten DRDB'en.. dan heb je ook geen NFS link er tussen.. en kun je met 2 bakken minder af..

Dan moet je hier wel van te voren rekening mee houden, ideaal zou zijn als je dan een kleine partitie overhoud waarmee je dit kan doen

Tim.Bracquez
22/06/09, 12:44
waarom NFS met DRDB doen? kun je net zo goed die webbakken zelf laten DRDB'en.. dan heb je ook geen NFS link er tussen.. en kun je met 2 bakken minder af..
Omdat je dan gelijk meerdere NFS shares kan maken voor meerdere servers en waarbij je dus makkelijk 1 storage systeem kan opbouwen.

Nuja als je later toch niet gaat uitbreiden kan je dit op dezelfde machines gaan doen

EDIT; hierboven waren ze me voor

Japje
22/06/09, 12:45
Tuurlijk, maar dat ligt natuurlijk volledig aan hoe schaalbaar het moet zijn.. en wat het budget is ;) je kan natuurlijk beginnen met 2 bakken DRDB en later daar een redundante storage achter plakken met NFS..

maxnet
22/06/09, 18:37
Ligt eraan wat je huidige setup is.

Maakt de website nu ook al gebruik van een database?
Als die afhankelijkheid er toch al is, kan je daar net zo goed meteen de sessies in stoppen.

GuusDeGraeve
22/06/09, 18:42
Website maakt idd gebruik van een database (mysql).

maxnet
22/06/09, 19:42
Website maakt idd gebruik van een database (mysql).

Dan lijkt me dat toch het simpelste.

Het is ook relatief makkelijk om een multimaster setup met meerdere MySQL servers te maken, mits je daar in je database ontwerp rekening mee houd (met name m.b.t. auto increment velden).

DRBD tussen webservers gaat niet zondermeer werken.
Bij DRBD in combinatie met een "normaal" bestandssysteem kan er maar 1 node tegelijk het bestandssysteem gemount hebben.
Als alle webservers in je cluster tegelijk in gebruik zijn, en sessiedata willen kunnen wegschrijven, is dat dus een probleem.
Alleen met speciale cluster bestandssystemen is dat mogelijk, maar die hebben (IMHO) een nogal experimenteel karakter.

Bij Memcached worden alle gegevens in het geheugen opgeslagen en zijn deze weg op het moment dat de server waarop het draait down gaat.
Is dan ook alleen bedoeld voor het cachen van gegevens, die opnieuw gegenereerd kunnen worden.

GuusDeGraeve
22/06/09, 19:48
Bij het ontwerpen van de database en applicatie is er rekening gehouden met schaalbaarheid, bij het ontwerpen van de applicatie ook. Zo is het geen probleem om mysql servers bij te plaatsen en meteen in gebruik te nemen. Voor sommige dingen zijn we zelf in onze applicatie voorbereid op database sharding.

pvdpf
22/06/09, 22:32
Ben toevallig nu bezig met een memcache server te installeren.
Deze zal voorlopig wel SPOF zijn, maarja, de gebruikers moeten er maar genoegen mee nemen.

GuusDeGraeve
22/06/09, 22:38
Heb er ook al heel veel goeie dingen over gehoord. Ook bijvoorbeeld voor database querycaching schijnt het ongelofelijk goed te werken.

pvdpf
22/06/09, 23:27
Nou.. het werkt.
Had alleen op de laatste server een klein typfoutje gemaakt.
Alle vensters natuurlijk al afgesloten, dus moest weer bij web01 beginnen met het controleren van de scripts :thumbdown:

Maar voor zo ver ik kan zien werkt het script nu goed waar ik voorheen om de zoveel requests weer uitgelogd was.

Een phpbb forum werkte al de hele tijd, maar kan zijn dat phpbb de sessies opslaat in z'n eigen db?

GuusDeGraeve
22/06/09, 23:29
phpbb slaat idd sessies ook op in mysqldb

pvdpf
22/06/09, 23:37
Dacht ik al.


Maar Memcache werkt iig prima.
Zeer makkelijk te configureren.

JustMe-
22/06/09, 23:55
Als je met 2 machines werkt wel, ik neem aan dat je ook wil kunnen groeien? Dan is het slimmer om nu gelijk het goed op te zetten zodat je in de toekomst makkelijker nodes kunt bijprikken.
Storage (ISCSI of FC) afnemen bij je provider welke zorgt dat het SAN netjes redunant is uitgevoerd enzo? Mocht je groter groeien, je eigen storage gaan gebruiken (indien wenselijk).

GuusDeGraeve
23/06/09, 00:22
Zijn er veel providers die dit aanbieden?

Tim.Bracquez
23/06/09, 00:29
Zijn er veel providers die dit aanbieden?
Veel niet, maar er zijn er. Ken er toch al enkele welke dit mogelijk zouden willen aanbieden. Uiteraard alles heeft zijn prijs.

Zet even wat in aanbiedingen gezocht en er zullen wel enkele jou hier in kunnen tegemoed komen.

GuusDeGraeve
23/06/09, 00:45
Zijn er mensen die dit dan als dedicated server kunnen aanbieden die ik in m'n eigen rack kan plaatsen? Of gebeurt dit in hetzelfde datacenter in een ander rack? En hoe zit het dan met traffic?

Mikey
23/06/09, 09:25
ik denk niet dat iemand een dedicated server gata verhuren en die vervolgens ergens anders onder gaat brengen. We zijn tenslotte geen lease maatschappijen ;)

Tim.Bracquez
23/06/09, 10:23
ik denk niet dat iemand een dedicated server gata verhuren en die vervolgens ergens anders onder gaat brengen. We zijn tenslotte geen lease maatschappijen ;)
Nu, ik denk het wel. Dergelijke custom made systemen doen sommige bedrijven (ikzelf ook), echter zullen hiervoor goede/dure contracten opgesteld moeten worden.

Ik stel voor zoek wat rond achter mensen die al een redundante opstelling hebben en die ruimte wensen te verkopen, vaak als je in hun netwerk een colo/dedi zet kan je wat. Het systeem zelf opbouwen is ook een oplossing

JustMe-
23/06/09, 10:51
Zijn er mensen die dit dan als dedicated server kunnen aanbieden die ik in m'n eigen rack kan plaatsen? Of gebeurt dit in hetzelfde datacenter in een ander rack? En hoe zit het dan met traffic?
Het zo aanbieden als dienst zijn er wel genoeg die dat doen. Alleen zal het dan geen dedicated meer heten. Dan noem je zoiets dat je de hardware leased of huurt.. Te samen met een eventueel beheers en/of onderhouds contract.

En natuurlijk kun je een complete omgeving; servers, storage, switches wat je dan ook maar nodig heb, leasen/huren.