[Webserving] 3 servers, 1 users database

Pagina: 1
Acties:

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 23-02 19:26

Snow_King

Konijn is stoer!

Topicstarter
Hoi,

Ik heb het volgende idee in mijn hoofd en wil dit eens gaan testen
Afbeeldingslocatie: http://www.tweakers.net/ext/f/18917/full.gif

Server 1 t/m 3 zijn webservers, deze beschikken allen over 2 NIC's.
De Fileserver is uiteraard een fileserver ;)

Het idee gaat om webhosting welke ik zo fail-safe mogelijk wil maken.
Hoe zit mijn idee nu in elkaar?

De directory structuur voor de websites zit zo in elkaar:
code:
1
/home/<domein.ext>/public_html/<subdomein>/


Stel je hebt Tweakers.net draait op mijn server krijg je als absolute-path:
code:
1
2
/home/tweakers.net/public_html/www/
/home/tweakers.net/public_html/gathering/


/home staat gemount op de fileserver, dus alle websites staan op 1 server welke beschikt over de nodige RAID e.d.

In principe zijn alle websites op 3 servers bereikbaar, als je het IP in de DNS maar goed zet.

Het inloggen op de FTP gebeurd via ProFTP-mysql, waarom? Dit is mooi en makkelijk via php te combineren met een admin-panel.
Als alle proftp nu uit de zelfde MySQL database hun gegevens uitlezen kunnen alle websites dus inloggen op 3 servers.

Alleen er is 1 probleem wat ik tot nu toe zie:
In de MySQL database geef je voor proftpd het volgende op: linux user, linux userID, linux user groupID

Stel je zou op alle servers deze users apart aan maken zou dat zeer omslachtig zijn, je hebt immers 3 servers waar je dit op bij moet houden.
Nu dacht ik hé, is het niet mogelijk dat deze servers ook van de fileserver een gezamelijke user database uitlezen? Dus de servers zijn qua software eigenlijk identiek aan elkaar, behalve dan het IP dat ze hebben (zowel intern als extern)

Nu vraag ik me af:
A: Is dit mogelijk? (Zo ja gaan naar B )
B: Hoe?
C: Jammer :(

Het probleem met de DNS had ik ook al wat op bedacht, ik zet de "time-out" van de DNS op 5 min, dus mocht een server uitvallen waarom dan ook, dan draait je domein na 5 minuten op een andere server :)

Bedankt!

[ Voor 4% gewijzigd door Snow_King op 13-12-2003 17:45 ]


  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 07:15

LauPro

Prof Mierenneuke®

Dit is mogelijk met een SAN naar je fileserver toe. Dit zal echter een duur grapje zijn. Je kan dan beter 1 loadbalancer pakken en daarna een netwerk maken met webservers en fileservers e.d. daar weer achter. De webservers laat je dan ook meeten als proxy optreden en eventueel booten vanaf een fileserver.

Bij een goede configuratie kan je dan een webserver toevoegen zonder dat er iets 'down' hoeft te gaan en bij een /. serveren meerdere webservers de (gecachete?) content.

edit: voor de ftp-server kan beter een aparte machine nemen (mits niet public). Je kan er dan namelijk vanuit gaan dat er geen D-Dos attack oid zal optreden. Eventueel een tweede machine standby om de 'down-gegaande' ftp-server op te vangen.

[ Voor 25% gewijzigd door LauPro op 13-12-2003 17:54 ]

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 11-02 20:53

Kippenijzer

McFallafel, nu met paardevlees

Snow_King schreef op 13 december 2003 @ 17:44:
Stel je zou op alle servers deze users apart aan maken zou dat zeer omslachtig zijn, je hebt immers 3 servers waar je dit op bij moet houden.
Nu dacht ik hé, is het niet mogelijk dat deze servers ook van de fileserver een gezamelijke user database uitlezen? Dus de servers zijn qua software eigenlijk identiek aan elkaar, behalve dan het IP dat ze hebben (zowel intern als extern)

Nu vraag ik me af:
A: Is dit mogelijk? (Zo ja gaan naar B )
B: Hoe?
C: Jammer :(

Het probleem met de DNS had ik ook al wat op bedacht, ik zet de "time-out" van de DNS op 5 min, dus mocht een server uitvallen waarom dan ook, dan draait je domein na 5 minuten op een andere server :)

Bedankt!
Er zijn toch gewoon tools (meen onderdeel van LDAP) die users op netwerkniveau ipv serverniveau beheren? Hiermee kun je gewoon je users op 1 systeem houden, terwijl wel alle systemen ze kunnen gebruiken, zoekvraagje.
Daarnaast heb je weinig aan je 5minuut NDS timeout. Waarom? Omdat 90% van de DNS servers over de wereld daar geen zin in hebben en de veel te DNS-intensieve time-out van 5 minuten vrolijk herschrijven naar bijvoorbeeld 2 uur, of beter nog, 2 dagen. Oftewel, alleen mensen die rechtstreeks op je eigen DNS resolven zullen inderdaad in 5 minuut de site via de andere machine zien, de rest van de wereld zit een tijd zonder.
Oplossingen :
-Load balancing : Zo doet tweakers het ook, zet er een bakje voor die de load verdeelt, en laat alle systemen alles hosten, is een systeem down, gewoon daar geen requests meer op laten uitvoeren.
-DNS Round-Robin : impliciete Load-balancing, echter geen optie bij systeem uitval, omdat het IP nog altijd in de DNS staat.
-IP-overnemen : laat alle servers testen of de andere servers up zijn, zo niet? Dan meteen het ip van de gecrashte bak door een andere bak laten claimen, zodat die de sites van de ander ook voor rekening neemt. Dit geinitje kan ik 30 seconden rond zijn en ken geen beperkingen, gezien het voor internet niet uit maakt welk systeem het bewuste IP gebruikt...

  • Snow_King
  • Registratie: April 2001
  • Laatst online: 23-02 19:26

Snow_King

Konijn is stoer!

Topicstarter
Ok...

LauPro, jij had opzich wel een slim idee, aparte bak voor de FTP :)

Load balancer is iets waar ik helemaal niet aan gedacht had, stom natuurlijk, is de meest simpele oplossing voor dit :)

En ik wist niet dat die user-sharing LDAP heette, maar bedankt, ik ga daar zeker eens meer over zoeken!

Zijn er verder nog opmerkingen / aanmerkingen op bijvoorbeeld mijn dir config?

  • Vae Victis
  • Registratie: April 2001
  • Laatst online: 20:32

Vae Victis

Dark Lord of the Sith

Alleen er is 1 probleem wat ik tot nu toe zie:
In de MySQL database geef je voor proftpd het volgende op: linux user, linux userID, linux user groupID
Met proftpd en mysql hoef je geen 'echte' linux users te gebruiken/aanmaken.
Je hebt gewoon een table met users en passwords.
Stel je zou op alle servers deze users apart aan maken zou dat zeer omslachtig zijn, je hebt immers 3 servers waar je dit op bij moet houden.
Dat hoeft dus helemaal niet :)
Je kunt zelfs af zonder extra users aan te maken.

  • pinball
  • Registratie: Oktober 1999
  • Niet online

pinball

Electric Monk

Om de users te syncen kan je volgens mij ook NIS gebruiken, en voor de beschikbaarheid van de webservers zou ik eens naar heartbeat (Linux-HA) kijken, dat is kant en klare software voor ip (en service) takeover waar Kippenijzer het over had.

Wat betreft de rest van de setup heb ik (qua availibility) m'n twijfels: je switches en je fileserver blijven single points of failure, ook al zet je er 50 webservers tussen. Het enige wat je met deze setup wint is imo wat betere load per webserver, en centrale opslag op je fileserver.

Dus het om failsafe gaat zou ik kiezen voor 2 webservers, en 2 fileservers. Die 2 fileservers kun je hun data laten syncen, of met shared storage werken. Shared storage is duurder, maar wel veel makkelijker (afhankelijk van het aantal mutaties per uur op die fileserver natuurlijk).

Whenever you find that you are on the side of the majority, it is time to reform.


  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 07:15

LauPro

Prof Mierenneuke®

Wanneer je 2 loadbalancers gebruikt en daar de load verdeeld via 'Round-Robin' en dan daar twee aparte netwerken achter voor de webservers en fileservers (en dan de fileservers via apart netwerk weer laten syncen).

Maargoed, je gaat dan wel heel ver en je blijft afhankelijk van die lijn naar inet toe. Daarnaast zit er natuurlijk een maximum aan sites (als je het over virtual hosts hebt) dat je per webserver kan hosten.

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • Coen Rosdorff
  • Registratie: Januari 2000
  • Niet online
Het laag zetten van de ttl van dns records werkt uitstekend.
Heb zeer breed ervaring met die setups.

Diensten als dyndns.org leven zelfs van korte ttl. Bind gaat prima om lage ttls. Er zal vast hier en daar een brakke server zijn, maar 99% is toch bind en Microsoft dns

Verwijderd

Wat we dan ook nog wel vergeten is een redundante lijn (fallback) naar internet.
Dit het liefst dan via een andere leverancier.

Mocht dan heel de hosting locatie van internet gedisconect worden dan zou je een paar extern gecolocate systemen moeten hebben die dit weer over nemen.

Maar wat laupro zegt is een hele mooie oplossing die in heel veel situaties gebruikt wordt.

Bij webservers worden vaak alleen de boot en root lokaal gebruikt en de rest via nfs of andere methode geladen. Dit zorgt ervoor dat een wijziging direct op al de webservers zichtbaar zijn. De systemen hier worden via een een crm database via een ldap connector gebruikt. In die database kunnen we gelijk ook de mail account , ftp mogelijkheden per klant of user aangeven.

Er zijn heel veel oplossingen zoals een aantal hier aan bod zijn gekomen. Echter welke het beste bij je past ligt volledig aan de situatie. Gezien jou verhaal zou ik gaan voor een. loadbalancer 1 of 2, 2 caching webservers en fileserver met proftp mysql. De users in deze situatie zou ik persoonlijk mysql gebruiken met een mooi frontend php optie.
Pagina: 1