Een aantal van mijn servers serveert steeds meer content en verbruikt dus ook steeds meer bandbreedte. Het gaat om grote bestanden (rond 1 GB) die op server 1 OF server 2 staan. Wanneer iemand een bestand van server 2 opvraagt is de huidige situatie is als volgt:
(user) request --> server 1 --> bestand --> server 2 --> server 1 --> user krijgt download.
Het probleem is echter dat het om veel en grote bestanden ga dus ik wil geen load balancer opzetten, de bestanden moeten namelijk niet gemirrored worden maar op 1 locatie staan. De bandbreedte tussen server 1 en 2 is niet relevant (servers staan naast elkaar) maar server 1 verstookt nu onnodig veel bandbreedte.
In de huidge opzet is 1 centrale server (server 1) waar een bestandsysteem gemount is van een andere server (server 2). Op server 1 is dan een directory met daarin de bestanden van 2 servers. Dit lukt momenteel al prima via SSHFS of NFS. Het probleem is echter dat connecties gemaakt worden naar server 1 die vervolgens content van server 2 aanbiedt en dit laat lopen via server 1 (zie ook het diagram boven).
De gewenste situatie is echter:
(user) request --> server 1 --> bestand --> server 2 --> user krijgt download.
Op deze manier wordt een bestand niet langer door server 1 naar de gebruiker gesluisd maar is server 1 na de initele aanvraag niet meer nodig. Bij een bestand van 1 GB heeft server 2 dus 1 GB dataverkeer en server 1 < 100 KB (alleen de aanvraag).
Ik zat zelf te denken aan een netwerk filesysteem waarbij ik met stat() kijk op welke fysieke server het bestand staat. Met stat() gaat iets dergelijks niet werken dus ik vraag me af of deze denkrichting wel goed is. Een andere optie lijkt mij het vastleggen op welke fysieke server een bestand staat (bijvoorbeeld in een database, de architectuur ligt er al) en een downloadlink maken rechtstreeks vanaf server 2. Dit heeft echter weer nadelen bij uitbreiding met meer servers en lijkt mij onnodig complex. Is er wel een eenvoudige oplossing voor mijn probleem mogelijk?
(user) request --> server 1 --> bestand --> server 2 --> server 1 --> user krijgt download.
Het probleem is echter dat het om veel en grote bestanden ga dus ik wil geen load balancer opzetten, de bestanden moeten namelijk niet gemirrored worden maar op 1 locatie staan. De bandbreedte tussen server 1 en 2 is niet relevant (servers staan naast elkaar) maar server 1 verstookt nu onnodig veel bandbreedte.
In de huidge opzet is 1 centrale server (server 1) waar een bestandsysteem gemount is van een andere server (server 2). Op server 1 is dan een directory met daarin de bestanden van 2 servers. Dit lukt momenteel al prima via SSHFS of NFS. Het probleem is echter dat connecties gemaakt worden naar server 1 die vervolgens content van server 2 aanbiedt en dit laat lopen via server 1 (zie ook het diagram boven).
De gewenste situatie is echter:
(user) request --> server 1 --> bestand --> server 2 --> user krijgt download.
Op deze manier wordt een bestand niet langer door server 1 naar de gebruiker gesluisd maar is server 1 na de initele aanvraag niet meer nodig. Bij een bestand van 1 GB heeft server 2 dus 1 GB dataverkeer en server 1 < 100 KB (alleen de aanvraag).
Ik zat zelf te denken aan een netwerk filesysteem waarbij ik met stat() kijk op welke fysieke server het bestand staat. Met stat() gaat iets dergelijks niet werken dus ik vraag me af of deze denkrichting wel goed is. Een andere optie lijkt mij het vastleggen op welke fysieke server een bestand staat (bijvoorbeeld in een database, de architectuur ligt er al) en een downloadlink maken rechtstreeks vanaf server 2. Dit heeft echter weer nadelen bij uitbreiding met meer servers en lijkt mij onnodig complex. Is er wel een eenvoudige oplossing voor mijn probleem mogelijk?