File uploads op een server met load balancing

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • ToySoldier1992
  • Registratie: September 2009
  • Laatst online: 29-08-2019
Een website staat op een load balancer met 2 servers ( A + B ). Er komt een admin paneeltje op een van de servers (of eventueel een 3e/externe server, dat is nog niet bekend).

Nu is het straks de bedoeling dat de beheerders van de website bestandjes kunnen uploaden naar de website (verschillend van Flash movies, afbeeldingen, PDFjes, noem het maar op). Echter, de reden dat de load balancer gebruikt is, is voor fouttolerantie. Als Server A uitvalt, moet Server B zonder problemen doorgaan. Als Server B uitvalt zou er nog geen probleem zijn, alles staat immers op Server A, maar als Server A uitvalt, kan Server B niet verder, want alle Flash movies, afbeeldingen, PDFjes en alles staat op Server A, die uitgevallen is.

Is er een manier hoe ik dit effectief kan synchroniseren met elkaar?

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Waarom maak je server A en B verschillend?

Zorg ervoor dat ze gelijk zijn, zet je filestorage op een 3e server en je als er A of B uitvalt merkt "niemand" het ook geen admin.

Acties:
  • 0 Henk 'm!

  • Cave_Boy
  • Registratie: Augustus 2005
  • Laatst online: 16-09 19:09
Echter dan heb je nogsteeds geen redunatie omdat als je file server uitvalt je nog niets hebt.

Een sync tussen beide servers lijkt me een betere oplossing. Dit zou ik dan via een ander netwerk laten verlopen.

Acties:
  • 0 Henk 'm!

  • ToySoldier1992
  • Registratie: September 2009
  • Laatst online: 29-08-2019
Klopt, maar dit is geen optie voor de server beheerders (voor om mij onbekende redenen). Is er een andere optie, zodat ik via PHP of iets dergelijks de bestanden kan synchroniseren?

Acties:
  • 0 Henk 'm!

  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 26-08 09:08

Kippenijzer

McFallafel, nu met paardevlees

Dit heeft dus weinig met de file uploads te maken, maar gewoon met de keuze voor je storage (ik verwachtte een vraag hoe je ervoor kunt zorgen dat als een server crasht tijdens een upload het blijft werken, waarvoor ik toch echt geen oplossing ken noch verwacht).
Je best optie is om een shared storage te nemen, die zelf natuurlijk ook weer redundant zal moeten zijn (DRBD met de juiste scripts via heartbeat, of een cluster filesystemen gebruiken).

Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 16-09 20:52

krvabo

MATERIALISE!

ToySoldier1992 schreef op zondag 19 december 2010 @ 23:04:
Klopt, maar dit is geen optie voor de server beheerders (voor om mij onbekende redenen). Is er een andere optie, zodat ik via PHP of iets dergelijks de bestanden kan synchroniseren?
Als het puur om synchroniseren gaat dan kun je het uploadscript toch aanpassen?

-> upload
-=-> Verwerk()
-=-> FTP naar server A
-> Done.

Of pak een Cronjob met rsync (Wel kans op vertraging dus)

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • ToySoldier1992
  • Registratie: September 2009
  • Laatst online: 29-08-2019
Oh jee, klopt ook helemaal ><

Helemaal vergeten dat er FTP functionaliteit in PHP zit. Simpelste oplossing voor een probleem wat zo moeilijk leek :p

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ToySoldier1992 schreef op zondag 19 december 2010 @ 23:04:
Klopt, maar dit is geen optie voor de server beheerders (voor om mij onbekende redenen). Is er een andere optie, zodat ik via PHP of iets dergelijks de bestanden kan synchroniseren?
Het lijkt mij het handigste dat je de server beheerders laat uitzoeken wat dan de beste oplossing is, als een simpele rsync geen optie is. Zelf "prutsen" door dit met php via ftp te doen is niet echt een ideale optie.

Acties:
  • 0 Henk 'm!

  • Kwastie
  • Registratie: April 2005
  • Laatst online: 13:58

Kwastie

Awesomeness

ToySoldier1992 schreef op zondag 19 december 2010 @ 23:04:
Klopt, maar dit is geen optie voor de server beheerders (voor om mij onbekende redenen).
Er is (door iemand) gekozen om de webapplicatie redundant uit te voeren. Het logische gevolg is dan dat de bestanden op beide servers beschikbaar moeten zijn. (hoe dan ook)

Alleen nu zegt de server beheerder dat het syncen "geen optie" is, had je hier dan niet over moeten na denken toen je besloot de server dubbel uit te voeren?

Overigens moet jij (als programmeur) niet de applicatie niet willen aanpassen omdat het syncen van bestanden prima door de beheerder kan worden geregeld. Het introduceert allemaal extra complexiteit en vergroot de kans op "fouten".
ToySoldier1992 schreef op zondag 19 december 2010 @ 23:04:
Is er een andere optie, zodat ik via PHP of iets dergelijks de bestanden kan synchroniseren?
Je wilt file synchronisatie niet in PHP maken, het is niet "the right tool for the right job"

Wat eigenlijk nog mooier is als je alle statische bestanden op 1 server zetten (deze laten fungeren als CDN) of beide servers toegang geven tot een aparte (interne) server waar alle bestanden staan opgeslagen.
ToySoldier1992 schreef op zondag 19 december 2010 @ 23:56:
Oh jee, klopt ook helemaal ><

Helemaal vergeten dat er FTP functionaliteit in PHP zit. Simpelste oplossing voor een probleem wat zo moeilijk leek :p
Nogmaals, je wilt dit niet doen als programmeur.

When I get sad i stop being sad and be awesome instead


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

je kan iig kijken in dit topic naar nog wat ideeen: Linux DFS voor Webplatform

Acties:
  • 0 Henk 'm!

  • ToySoldier1992
  • Registratie: September 2009
  • Laatst online: 29-08-2019
Tjah, ik heb ook al gezegd/doorgegeven dat het echt niet de effectiefste manier is, maar ik heb over de servers niet echt veel te zeggen verder, dus...

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
ToySoldier1992 schreef op maandag 20 december 2010 @ 19:59:
Tjah, ik heb ook al gezegd/doorgegeven dat het echt niet de effectiefste manier is, maar ik heb over de servers niet echt veel te zeggen verder, dus...
Simpel gezegd : weiger het dan, dat is nog altijd beter dan knoeiwerk afleveren wat in de toekomst (zo goed als) gegarandeerd fout gaat.

Als het fout gaat dan gaat er een zondebok gezocht worden en als jij het niet goed hebt (kunnen) maken dan kan ik wel raden wie het wordt...

Acties:
  • 0 Henk 'm!

  • Jan_V
  • Registratie: Maart 2002
  • Laatst online: 17:55
Je kunt de bestanden natuurlijk in je DropBox of Live Mesh stoppen, waardoor syncen ook automatisch wordt gedaan.
Uiteraard is daar weer een beheerder voor nodig en zou ik dat zeker niet aan willen raden om in productie systemen te gebruiken. Thuis doe ik dat wel, om zo m'n belangrijke documenten op de server te syncen, waardoor deze automatisch ook in de backup mee komen.

Kun je de bestanden niet gewoon als blob in de database opslaan en die dan redundant draaien? Aangezien je php gebruikt denk ik dat je geen MS SQL Server als db server hebt, weet niet in hoeverre xxxSQL een goede methode hiervoor hebben om mirroring of iets dergelijks toe te passen.

Battle.net - Jandev#2601 / XBOX: VriesDeJ


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 16-09 20:52

krvabo

MATERIALISE!

Gomez12 schreef op maandag 20 december 2010 @ 20:09:
[...]

Simpel gezegd : weiger het dan, dat is nog altijd beter dan knoeiwerk afleveren wat in de toekomst (zo goed als) gegarandeerd fout gaat.
Als IT-manager zou je moeten weten dat niet elk bedrijf even flexibel is? :)
Regeltjes regeltjes regeltjes en ook al werkt het slechter; nee het kan niet worden aangepast.

Overigens is het inbouwen van de "synchronisatie" in je uploadscript helemaal niet zo slecht hoor. Het zijn steeds compleet nieuwe bestanden (dus incrementeel uploaden hóeft niet).
Het allerergste dat kan gebeuren is dat een bestand niet gesynct wordt. Het is de bedoeling dat de webserver het sowieso niet van de slave afhaalt tenzij de master uitstaat. (Afaik) Een korte vertraging zou in deze dus ook geen probleem hoeven zijn. Je zou per kwartier nog eens een cronjob kunnen draaien die oude files opnieuw probeert te versturen..

Ik vind FTP in PHP overigens geen -slechte- keuze, hooguit kan het netter. De ondersteuning zit er voor in, het werkt prima en aangezien het intern verkeer is gaan er ook geen wachtwoorden over het internet. Met een ignore_user_abort(); zorg je er ook nog voor dat de gebruiker het niet kan stoppen, dus tenzij je een server hebt die plotsklaps stopt heb je echt geen problemen.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

Verwijderd

Een san blijft hier gewoon de beste oplossing. De kosten die je zal gaan maken als er inconsistenties optreden tussen meerdere volumes door onvoorziene problemen (locking, fouten, vul in...) zullen normaliter veel hoger zijn dan de inzet van een san.

Er is enterprise gerichte software beschikbaar op de markt om toch een soort shared volume op te zetten maar daar mag je diep voor in de buidel tasten. Het bekendste praktijkvoorbeeld van een dergelijke opzet
is Google. :)

Acties:
  • 0 Henk 'm!

  • CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 12:23

CrankyGamerOG

Assumption is the mother.....

Of je balanced alleen puur de httpcluster?

De data duw je op dan een aparte cluster? (nfsmount naar de 2 webservers (ja 1 tegenlijk duh :D) ?)

Google op "heartbeat", "pacemaker", "haproxy" en "drbd".

(dus 5 servers in totaal : Balancer , web1 , web 2 , data1 en data2)

veel success ;)

Ik bouw vaker een setup die jij wenst ;)

[ Voor 40% gewijzigd door CrankyGamerOG op 20-12-2010 20:42 ]

KPN - Vodafone Ziggo Partner


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
krvabo schreef op maandag 20 december 2010 @ 20:25:
[...]

Als IT-manager zou je moeten weten dat niet elk bedrijf even flexibel is? :)
Regeltjes regeltjes regeltjes en ook al werkt het slechter; nee het kan niet worden aangepast.
En soms zeg ik dan ook gewoon simpelweg dat iets niet gaat gebeuren, het kan wel. Maar het gebeurt niet...
Superieuren hebben nog genoeg vertrouwen en ervaring met mij dat het dan ook niet gebeurt ( oftewel ik roep het niet bij elk futiliteitje wat anders/beter kan )
Een korte vertraging zou in deze dus ook geen probleem hoeven zijn. Je zou per kwartier nog eens een cronjob kunnen draaien die oude files opnieuw probeert te versturen..
Als je die cronjob kan draaien kan je daarin ook rsyncen :)
Ik vind FTP in PHP overigens geen -slechte- keuze, hooguit kan het netter. De ondersteuning zit er voor in, het werkt prima en aangezien het intern verkeer is gaan er ook geen wachtwoorden over het internet. Met een ignore_user_abort(); zorg je er ook nog voor dat de gebruiker het niet kan stoppen, dus tenzij je een server hebt die plotsklaps stopt heb je echt geen problemen.
Totdat je iemand krijgt die met een hdd met bestanden aan komt zetten en die even via ftp gaat uploaden, oeps dan heb je opeens een groot gat.
Of iemand bedenkt dat het makkelijk is als filmpjes automatisch omgezet worden via een ander script. Oeps...

PHP is leuk voor het simpele frontend gedeelte, maar of je moet je PHP-script super uitgebreid maken ( multiple uploads, progress bars, giga-bestanden aankunnen etc. etc. ) en steeds blijven uitbreiden of je gaat gewoon op de lange termijn niet alles ondervangen.
Syncen wil je gewoon in je backend regelen en niet in je frontend.

Eigenlijk wil je niet enkel je uploads syncen, maar alle files die je ter download aanbied, ongeacht waar die vandaan komen.

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

krvabo schreef op maandag 20 december 2010 @ 20:25:
Overigens is het inbouwen van de "synchronisatie" in je uploadscript helemaal niet zo slecht hoor. Het zijn steeds compleet nieuwe bestanden (dus incrementeel uploaden hóeft niet).
Het allerergste dat kan gebeuren is dat een bestand niet gesynct wordt. Het is de bedoeling dat de webserver het sowieso niet van de slave afhaalt tenzij de master uitstaat. (Afaik) Een korte vertraging zou in deze dus ook geen probleem hoeven zijn. Je zou per kwartier nog eens een cronjob kunnen draaien die oude files opnieuw probeert te versturen.
Al is dat wel iets dat je _niet_ live tijdens het uploaden wil uitvoeren.

Een scriptje dat periodiek draait en aan de database vraagt welke bestanden nog niet gesynct zijn is iig een prima mogelijkheid. Direct naar GFS oid. schrijven is natuurlijk prettiger, maar zoiets werkt ook prima (sterker nog, beter dan een platte rsync oplossing waarbij van elke directory gecontroleerd moet worden wat er geupload moet worden).

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 16-09 20:52

krvabo

MATERIALISE!

Gomez12 schreef op maandag 20 december 2010 @ 21:45:

Als je die cronjob kan draaien kan je daarin ook rsyncen :)
True, dat was ook onderdeel van mijn eerste post in dit topic :)
[...]

Totdat je iemand krijgt die met een hdd met bestanden aan komt zetten en die even via ftp gaat uploaden, oeps dan heb je opeens een groot gat.
En daar kun je natuurlijk net zo hard 'nee' tegen zeggen als bij het ontwikkelen van ftp-synchronisatie in php ;)
Of iemand bedenkt dat het makkelijk is als filmpjes automatisch omgezet worden via een ander script. Oeps...
Dan moeten ze ook synchronisatie inbouwen / copy pasten / method gebruiken
PHP is leuk voor het simpele frontend gedeelte, maar of je moet je PHP-script super uitgebreid maken ( multiple uploads, progress bars, giga-bestanden aankunnen etc. etc. ) en steeds blijven uitbreiden of je gaat gewoon op de lange termijn niet alles ondervangen.
Syncen wil je gewoon in je backend regelen en niet in je frontend.

Eigenlijk wil je niet enkel je uploads syncen, maar alle files die je ter download aanbied, ongeacht waar die vandaan komen.
Ik zeg niet dat het de beste optie is, maar afhankelijk van je vereisten, mogelijkheden en degelijke kennis kun je het niet globaal uitsluiten.
Wolfboy schreef op maandag 20 december 2010 @ 21:49:
[...]
Al is dat wel iets dat je _niet_ live tijdens het uploaden wil uitvoeren.
Dat is waar, maar het kan bijvoorbeeld zo zijn dat, in een project waar ik toevallig mee bezig ben, je videos extern laat encoden en een signaal krijgt als het klaar is. Dan kan het dus wel op het moment dat ik een signaal krijg dat het klaar is.

Overigens kun je php ignore_user_abort() gebruiken en dan de connectie sluiten waardoor de gebruiker alsnog meteen het 'resultaat' laat zien. Maar zeker niet de meest geniale oplossing nee :P

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • Bastiaan V
  • Registratie: Juni 2005
  • Niet online

Bastiaan V

Tux's lil' helper

CrankyGamerOG schreef op maandag 20 december 2010 @ 20:34:
Of je balanced alleen puur de httpcluster?

De data duw je op dan een aparte cluster? (nfsmount naar de 2 webservers (ja 1 tegenlijk duh :D) ?)

Google op "heartbeat", "pacemaker", "haproxy" en "drbd".

(dus 5 servers in totaal : Balancer , web1 , web 2 , data1 en data2)

veel success ;)

Ik bouw vaker een setup die jij wenst ;)
en dan de balancer als SPOF?

pak dan 2 servers en draai alles op beide. (balancer hot/cold, rest hot/hot)

/edit
uiteraard is de eerstvolgende stap het lostrekken van de verschillende servers, maar 9 van de 10 keer is het prima met 2 machines te doen.

[ Voor 11% gewijzigd door Bastiaan V op 20-12-2010 22:26 ]


Acties:
  • 0 Henk 'm!

  • CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 12:23

CrankyGamerOG

Assumption is the mother.....

Bastiaan V schreef op maandag 20 december 2010 @ 22:25:
[...]

en dan de balancer als SPOF?

pak dan 2 servers en draai alles op beide. (balancer hot/cold, rest hot/hot)

/edit
uiteraard is de eerstvolgende stap het lostrekken van de verschillende servers, maar 9 van de 10 keer is het prima met 2 machines te doen.
Dan zet je 2 balancers in, het ligt er maar net aan wat het budget is. :),
Trouwens een balancer is niet per definitie een single point of failure :)

Op het moment dat de balancer weg valt zal ten alle tijden web1 de hoofdtaak alleen draaien, en kun je dan onderzoek instellen naar de balancer.(uiteraard ben je dan tijdelijk de balancing kwijt tussen de twee webservers).

[ Voor 4% gewijzigd door CrankyGamerOG op 20-12-2010 23:38 ]

KPN - Vodafone Ziggo Partner


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

CrankyGamerOG schreef op maandag 20 december 2010 @ 23:37:
[...]

Dan zet je 2 balancers in, het ligt er maar net aan wat het budget is. :),
Trouwens een balancer is niet per definitie een single point of failure :)

Op het moment dat de balancer weg valt zal ten alle tijden web1 de hoofdtaak alleen draaien, en kun je dan onderzoek instellen naar de balancer.(uiteraard ben je dan tijdelijk de balancing kwijt tussen de twee webservers).
Ook dat is prima op te lossen. Laat 2 load balancers tegelijk draaien waarbij load balancer 1 actief is en continu status reports doorstuurt naar load balancer 2.

Zodra load balancer 1 dan stopt met werken (heartbeat signaaltje) neemt load balancer 2 alles over met de config van load balancer 1. Meer dan een paar seconden downtime (heartbeat interval) heb je dan niet.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • CrankyGamerOG
  • Registratie: Juni 2003
  • Laatst online: 12:23

CrankyGamerOG

Assumption is the mother.....

Wolfboy schreef op dinsdag 21 december 2010 @ 00:12:
[...]
Ook dat is prima op te lossen. Laat 2 load balancers tegelijk draaien waarbij load balancer 1 actief is en continu status reports doorstuurt naar load balancer 2.

Zodra load balancer 1 dan stopt met werken (heartbeat signaaltje) neemt load balancer 2 alles over met de config van load balancer 1. Meer dan een paar seconden downtime (heartbeat interval) heb je dan niet.
Ja dat zeg ik toch. :D

KPN - Vodafone Ziggo Partner


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Je zei "uiteraard ben je dan tijdelijk de balancing kwijt tussen de twee webservers", dat hoeft niet het geval te zijn ;)

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • ToySoldier1992
  • Registratie: September 2009
  • Laatst online: 29-08-2019
Ik weet niet tot in hoeverre mijn baas aanpassingen in de servers wil gaan doen. Het doel moet in ieder geval zijn dat we servers 2 stand-alone servers hebben + de load balancer. De database-server heeft ook een back-up server, dus dat is ook geen SPOF hier. Ik zal in ieder geval de suggesties hier weer doorgeven aan mijn baas en kijken wat er mogelijk is.

Upd: Bestandjes zullen max. ongeveer 8 MB zijn, in ieder geval niet veel meer.

[ Voor 10% gewijzigd door ToySoldier1992 op 21-12-2010 23:49 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
ToySoldier1992 schreef op dinsdag 21 december 2010 @ 23:40:
Ik weet niet tot in hoeverre mijn baas aanpassingen in de servers wil gaan doen. Het doel moet in ieder geval zijn dat we servers 2 stand-alone servers hebben + de load balancer. De database-server heeft ook een back-up server, dus dat is ook geen SPOF hier. Ik zal in ieder geval de suggesties hier weer doorgeven aan mijn baas en kijken wat er mogelijk is.

Upd: Bestandjes zullen max. ongeveer 8 MB zijn, in ieder geval niet veel meer.
Bespreek eens serieus met je baas de mogelijkheid om op een rustig moment gewoon de stekker bij een server eruit te trekken en ga daarna nog eens in gesprek met hem over wat hij nu wil...

Want als ik het zo lees dan ga je net op een ongelukkig uitkomend tijdstip (murphy's law) eens een keer een hele grote downtime krijgen en dan staat iedereen achteraf te vragen waarom dit allemaal zo lang moet duren en hoeveel geld het wel niet gekost heeft.
- Geen aanpassingen in servers is gewoon geen redundantie als ik het zo lees.
- Heeft die dbase server wel een backup-server die doet wat jullie willen. Om 3 uur 's nachts een backup maken is ook een backup hebben, maar als je server om 11 uur 's avonds uitvalt dan ben je toch veel kwijt, nog even daargelaten wanneer iemand die backup moet terugzetten ( oftewel is er 24-uurs controle of doen jullie de controle en wordt er dus pas opdracht gegeven tot backup terugzetten om 08:30 's ochtends ( even ervanuit gaande dat je eerst nog een half uur van alles nakijkt om te zien of er niet iets nog leeft ))

Persoonlijk zou ik adviseren om een extern bedrijf er gewoon eens naar te laten kijken, want ik heb nou niet echt het idee dat je enig benul hebt waar je mee bezig bent.
Je wilt flash movies gaan uploaden en die zullen onder de 8mb blijven? Ik geloof niet dat ik de kwaliteit /tijdsduur van die filmpjes wil weten...

Acties:
  • 0 Henk 'm!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 02-06 12:29
makkelijkste oplossing is een master slave opstelling lijkt mij dan,.. je stelt één machine aan als master, en die pushed de files naar de slaves op het moment dat de upload geprocessed wordt.

Enige wat je moet doen is in je applicatie een extra controle toevoegen of het bestand al aangekomen is zodat je geen content naar de gebruiker suurt die er nog niet is. Maar met bestanden van max 8Mb is dat niet echt een probleem, want dat gaat over een normale uplink dermate snel.

Netwerk technisch moet je er voor zorgen dat je servers uitgerust zijn met of twee nic's, één voor de uplink naar de load balancer en één voor de verbinding naar elkaar toe. Of als het niet anders kan een vlan achter loadbalancer waarmee je de twee servers direct aan elkaar hangt.

Driving a cadillac in a fool's parade.

Pagina: 1