Bekijk Volledige Versie : 300-500 duizend bezoekers, met deze hardware.
jeroen2496
23/09/08, 17:33
Beste mensen,
Voor het volgende heb ik een aantal servers klaar staan, maar vraag mij af of dit voldoende is:
Een eenvoudige website, met login, uploaden van afbeeldingen (klein).
Een database, waar men in kan zoeken +3.000.000 record.
Nu zal deze site in de eerste week naar verwachting 300-500 duizend bezoekers trekken. Niet iedereen zal inloggen <5%, en wel de zoekfunctie gebruiken.
Ik heb de volgende systemen:
LB1: AMD SEMPRON 3200+ 1.81 Ghz
512MB
LB2: Nog niet bekend
WEB1: Intel Core 2 Duo 1.86 Ghz
2048MB DDR-2 667Mhz
RAID 1 3Ware/AMCC Hardware
WEB2: Intel Pentium 531, 3.0 Ghz
1024MB DDR2 667Mhz
WEB3: Eventueel zouden we MySQL2 als WEB3 en LB2 kunnen laten draaien.
MySQL1: Intel Xeon E5410, Harpertown 2.33Ghz Quad Core,
FSB1333, 12MB, 32/64 bit, VT, 80W
4096MB DDR-2 667Mhz Fully Buffered ECC
RAID 1 3Ware/AMCC Hardware
MySQL2: Intel Xeon E5410, Harpertown 2.33Ghz Quad Core,
FSB1333, 12MB, 32/64 bit, VT, 80W
4096MB DDR-2 667Mhz Fully Buffered ECC
RAID 1 3Ware/AMCC Hardware.
Nu had ik in gedachte om mysql in replication op te zetten over de 2 servers.
Vervolgens wil ik een aantal SELECT opdrachten op de slave (mysql2) laten uitvoeren en de INSERT/UPDATE op de master server (mysql1).
Zal het bovenstaande voldoen of is het verstandig nog enkele webservers er bij te kopen?
Alvast bedankt,
de grote vraag zit hem hier: "is de applicatie goed gebouwd, en vooral, is de database voorzien op de zoekqueries (en stelt de applicatie de juiste vragen aan de database)".
Ik zou vooraf wat benchmarken met de applicatie en de dataset.
Waarom RAID 1 en niet RAID 5, scheelt performance
jeroen2496
23/09/08, 18:23
Waarom RAID 1 en niet RAID 5, scheelt performance
Met 2 HD's ? :P
Edit: Dit zijn bestaande systemen die ik heb hé :)
jeroen2496
23/09/08, 18:27
de grote vraag zit hem hier: "is de applicatie goed gebouwd, en vooral, is de database voorzien op de zoekqueries (en stelt de applicatie de juiste vragen aan de database)".
Ik zou vooraf wat benchmarken met de applicatie en de dataset.
Ik heb zelf de applicatie gebouwd, en werk al een aantal jaar in deze branche.
De queries zijn juist opgebouwd, snel, en doeltreffend. Ik verwacht hier dus geen directe problemen.
Maar, hoe zit het met de webservers? Zit ik daar goed mee? En een loadbalancer, hoeveel moet deze kunnen...? Niet veel heb ik al vernomen, maar heb graag een second opinion!
Met 2 HD's ? :P
Edit: Dit zijn bestaande systemen die ik heb hé :)
Dan koop je er 2 bij? Moet je toch want als je geen reserve meer kunt krijgen heb je niks aan raid :)
jeroen2496
23/09/08, 19:00
Ja maar, er passen er maar 2 in :D ..... helaas.
jeroen2496
23/09/08, 19:04
Ook ga ik een flink aantal pagina's door middel van een cronjob op de webserver opslaan (op de zoek pagina na dan he ;) )
jeroen2496
23/09/08, 19:25
Eventueel voor echte snelheid, kan ik natuurlijk ook RAID 0 doen voor de webservers...mocht er iets fout gaan, dan is herinstalleren geen probleem!
Is dit een idee, of toch niet zo verstandig?
Eventueel voor echte snelheid, kan ik natuurlijk ook RAID 0 doen voor de webservers...mocht er iets fout gaan, dan is herinstalleren geen probleem!
Is dit een idee, of toch niet zo verstandig?
Dat ligt aan de downtime die jij wil accepteren bij een defect HDD.
jeroen2496
23/09/08, 19:28
Heb meerdere webservers, die dan de bezoekers zouden moeten verwerken.
Zal RAID0 echt veel uitmaken voor zo'n webserver of is RAID1 voldoende?
http://nl.wikipedia.org/wiki/Redundant_Array_of_Independent_Disks
Succes.
jeroen2496
23/09/08, 19:45
raid0 it is!
raid0 it is!
Bijna,
http://en.wikipedia.org/wiki/RAID_10#RAID_1.2B0 ,
en dan de discussie nog over
http://nl.wikipedia.org/wiki/Redundant_Array_of_Independent_Disks#Combinaties
al had je er geen plaats voor....
raid 1 zou moeten volstaan voor het server van statische pagina's. De data kan van één van beide disks gehaald worden. Verder komt het er toch op neer om zoveel mogelijk in memory te hebben (filesystem cache).
Als webserver kan je alternatieven voor Apache overwegen (lighttpd, nginx,...), en kan zorgen dat de caching van je statische content goed gebeurt (in html-files, die onmiddellijk geserved kunnen worden).
Voor het doorzoeken, zorg ervoor dat je query gebruik maakt van indexes, dat je misschien een indexer gebruikt (sfinx, ferret, etc etc...).
Als je extreme performantie wenst, denk dan ook even aan oplossingen met memcached om tijdelijke data of gecachede data op te slaan...
Again: benchmark de oplossing. Je hebt de servers liggen? Je hebt de applicatie liggen? Je hebt de dataset? Slechts één manier om zekerheid te hebben...
jeroen2496
23/09/08, 20:37
@Wonko, bedankt!
Ik ben me nu aan het verdiepen in memcached, dit ziet er zéér interessant uit!
Alleen kom ik er op http://www.danga.com/memcached/ in het gedeelte "What about database replication?" niet helemaal uit.
Bedoelen ze nou dat je de database opdeelt, en op die manier de writes gaat verdelen over meerdere servers?
Dat bedoelen ze inderdaad; maar dat is hier vermoedelijk nog niet aan de orde. Zorg er gewoon voor dat je systeem goed opgesteld staat, dat de parameters van de webservers en databaseservers goed staan en... draai loadtests (benchmarks) met realistische datasets en load.
Ik kan het niet genoeg benadrukken: je hebt alles liggen, test het gewoon uit. Grijp dan pas naar zaken als memcached en aanverwanten. Je applicatie klinkt vrij eenvoudig; en als je dataset onder controle te houden is, zou dat zonder problemen moeten lopen.
Om deze hele opstelling te kunnen beoordelen, ontbreekt 1 belangrijk gegeven;
Waar wordt de data van de website opgeslagen, de pagina's zelf dus?
Persoonlijk zou ik dit in een dergelijke setup opslaan in MySQL. In dat geval, wordt dus alle data geladen vanaf de SQL servers. Er wordt dan dus geen data geladen vanaf de web servers - wat dus betekent dat RAID-0 feitelijk geen meerwaarde in de webservers. Hier zou ik dus gewoon RAID-1 gebruiken.
Voor de MySQL servers zul je aan RAID-1 met normale 7200RPM schijven zeker niet genoeg hebben voor een dergelijk bezoekersaantal. Ik zou hier eerder denken aan RAID-10 met minimaal 10.000RPM schijven.
Ik weet natuurlijk niet precies hoe goed de bezoekers over de dag verdeeld zullen zijn, en ook niet hoeveel queries iedere bezoeker met zich mee brengt, maar ik kan je met vrij veel zekerheid zeggen dat 2 mysql servers met 7200rpm RAID 1 die 500.000 bezoekers niet zullen gaan trekken.
jeroen2496
24/09/08, 09:05
Dat bedoelen ze inderdaad; maar dat is hier vermoedelijk nog niet aan de orde. Zorg er gewoon voor dat je systeem goed opgesteld staat, dat de parameters van de webservers en databaseservers goed staan en... draai loadtests (benchmarks) met realistische datasets en load.
Ik kan het niet genoeg benadrukken: je hebt alles liggen, test het gewoon uit. Grijp dan pas naar zaken als memcached en aanverwanten. Je applicatie klinkt vrij eenvoudig; en als je dataset onder controle te houden is, zou dat zonder problemen moeten lopen.
Ik ga idd zsm alles testen, mocht uit de tests blijken dat dit niet mogelijk is dan zal ik eens verder gaan met memcached.
Over de app. het is een zoekmachine met bedrijven er op, bezoekers zullen dus de bedrijvendatabase gaan doorzoeken, wat misschien wel wat load met zich mee gaat brengen.
@Apoc
De pagina's worden dmv eval() uit de mysql database gelezen. Afbeeldingen en dergelijke zullen op de server zelf staan. Maar mijn bedoeling was om de pagina's op te slaan op de webservers dmv een uurlijkse cronjob, waardoor de load van de database af gaat. Of kan ik die load beter op de DB hebben dan de web servers?
Thanks!
hmmmz, je werkwijze is wat vreemd. Waarom ga je niet de eerste maal de pagina gegenereerd werd de uitvoer ook opslaan in een file?
jeroen2496
24/09/08, 17:44
Ergens terug geef ik ook aan dat ik de pagina's wil laten opslaan dmv een uurlijkse cronjob op de webservers.
Ik heb altijd al gewerkt met php pagina's in mysql, via een zelf gemaakt cms.
Dit was erg makkelijk voor het draaien van backups, wijzigingen aanbrengen, uitbreiden etc.
Drie vragen nog dus:
1. Is het verstandig om dit te blijven gebruiken? icm met de cronjob.
2. Ik heb op de webservers een map met een aantal functies staan.
Deze map wordt in zijn geheel op de index geincluded. Eventueel kan ik dit ook via de database doen, dus een tabel met functies die dmv eval worden geincluded.
3. Ik wil nog een loadbalancer aanschaffen voor de webservers, aan wat voor een configuratie moet ik denken? Is een AMD Opteron of een celleron genoeg? Hoeveel geheugen etc.?
*Er is 3500 euro (moet voldoende zijn toch ;) ) te besteden aan een mysql server, ik ben nu op ahead-it het 1 en ander aan het samen stellen, hier kom ik later nog op terug!
jeroen2496
25/09/08, 16:56
6015B-NTR: max. 4 x SAS hot-swap // 32GB DDR-2 // redundante voeding // 2 x PCI-e uitbreiding
1 * 3 Jaar Ahead-IT Server Service met EasyRMA+, Advanced Replacement Service & gratis levering
1 * Supermicro SuperServer 6015B-NTR, 1U, redundante voeding, 2 x PCI-e uitbreiding
1 * Supermicro Slim DVD lezer inclusief
1 * Areca 1212, 4 x SATA/SAS hardware RAID, 256MB cache, PCI-E
1 * Areca ARC-BBM Battery Backup Unit
1 * Supermicro IPMI 2.0 SIMSO+ met KVM over IP
4 * Kingston 2048MB DDR-2 667Mhz Fully Buffered ECC
4 * Mtron SSD PRO 3.5", 16GB, r/w 130/120MBs, at 0.1ms, low power
2 * Intel Xeon L5410, Harpertown 2.33Ghz Quad Core, FSB1333, 12MB, 32/64 bit, VT, 50W low-voltage
Maximum power consumption at full load: 301W ( = 1,37A ) per server
Totaal excl. BTW € 3.862,33
Zou dit wat zijn? hoeveel hou ik over in GB's met een raid 10 configuratie?
1] houd de Dell aanbiedingen in de gaten.
2] Heb je de tests hierboven beschreven door wonko en apoc uitgevoerd, en wat zijn de resultaten?
6015B-NTR: max. 4 x SAS hot-swap // 32GB DDR-2 // redundante voeding // 2 x PCI-e uitbreiding
1 * 3 Jaar Ahead-IT Server Service met EasyRMA+, Advanced Replacement Service & gratis levering
1 * Supermicro SuperServer 6015B-NTR, 1U, redundante voeding, 2 x PCI-e uitbreiding
1 * Supermicro Slim DVD lezer inclusief
1 * Areca 1212, 4 x SATA/SAS hardware RAID, 256MB cache, PCI-E
1 * Areca ARC-BBM Battery Backup Unit
1 * Supermicro IPMI 2.0 SIMSO+ met KVM over IP
4 * Kingston 2048MB DDR-2 667Mhz Fully Buffered ECC
4 * Mtron SSD PRO 3.5", 16GB, r/w 130/120MBs, at 0.1ms, low power
2 * Intel Xeon L5410, Harpertown 2.33Ghz Quad Core, FSB1333, 12MB, 32/64 bit, VT, 50W low-voltage
Maximum power consumption at full load: 301W ( = 1,37A ) per server
Totaal excl. BTW € 3.862,33
Zou dit wat zijn? hoeveel hou ik over in GB's met een raid 10 configuratie?
Dat is zeker wel wat, maar zoveel processorkracht en RAM heb je waarschijnlijk niet nodig. Ik zou dan eerder wat geld besparen op die configuratie door een enkele quad core te nemen met 4GB ram, en van het geld wat over is kun je waarschijnlijk nog zo'n server kopen (althans, een groot gedeelte ervan) voor load balancing.
Met RAID 10 hou je ongeveer 50% van de diskruimte over (iets minder dan 50%).
Persoonlijk zou ik eerder gaan voor 2x aparte servers, met ieder een quad core cpu, 4GB ram, 2x SSD schijven in RAID1 (of RAID0).
Je zou voor deze configuratie kunnen kiezen voor RAID-0. In verband met de betrouwbaarheid van SSD + het feit dat de data op beide servers aanwezig is, zou dit geen probleem moeten zijn. De kans dat een SSD schijf kapot gaat is vele malen kleiner dan een HDD schijf. Daarnaast biedt RAID-0 meer snelheid en 2 keer zoveel ruimte als RAID-1, en zoals eerder genoemd: als een van de 2 schijven dood gaat zal de hele RAID array verloren zijn, maar je hebt dan dus nog wel alles op de andere server staan. Het is dan ook wel belangrijk dat je voor de MySQL clustering geen master/slave setup gebruikt, want als de master het niet meer doet, heeft ook de slave een probleem. Dat is een risico wat je niet moet nemen.
Overigens; hoe de website van Ahead-it erbij komt dat die configuratie 301 Watt zou verbruiken onder full load is me een raadsel. Zo veel zal die configuratie bij lange na niet gebruiken.
jeroen2496
25/09/08, 18:48
Dat is zeker wel wat, maar zoveel processorkracht en RAM heb je waarschijnlijk niet nodig. Ik zou dan eerder wat geld besparen op die configuratie door een enkele quad core te nemen met 4GB ram, en van het geld wat over is kun je waarschijnlijk nog zo'n server kopen (althans, een groot gedeelte ervan) voor load balancing.
Met RAID 10 hou je ongeveer 50% van de diskruimte over (iets minder dan 50%).
Persoonlijk zou ik eerder gaan voor 2x aparte servers, met ieder een quad core cpu, 4GB ram, 2x SSD schijven in RAID1 (of RAID0).
Je zou voor deze configuratie kunnen kiezen voor RAID-0. In verband met de betrouwbaarheid van SSD + het feit dat de data op beide servers aanwezig is, zou dit geen probleem moeten zijn. De kans dat een SSD schijf kapot gaat is vele malen kleiner dan een HDD schijf. Daarnaast biedt RAID-0 meer snelheid en 2 keer zoveel ruimte als RAID-1, en zoals eerder genoemd: als een van de 2 schijven dood gaat zal de hele RAID array verloren zijn, maar je hebt dan dus nog wel alles op de andere server staan. Het is dan ook wel belangrijk dat je voor de MySQL clustering geen master/slave setup gebruikt, want als de master het niet meer doet, heeft ook de slave een probleem. Dat is een risico wat je niet moet nemen.
Overigens; hoe de website van Ahead-it erbij komt dat die configuratie 301 Watt zou verbruiken onder full load is me een raadsel. Zo veel zal die configuratie bij lange na niet gebruiken.
Bedankt voor de heldere uitleg!
Een config als dit zou dus beter zijn? Ik heb hier ook een 5e SSDvoor het geval dat er 1 kapot gaat, dan kan deze direct ge-rebuild worden:
SXSC815: max 8 x SAS hot-swap // 64GB DDR-2 // redundante voeding // 2 x PCI-e uitbreiding
1 * 3 Jaar Ahead-IT Server Service met EasyRMA+, Advanced Replacement Service & gratis levering
1 * Supermicro X7DWU Server Moederbord
1 * Supermicro SC113TQ-R650U, hot-swappable, redundante voeding, 1U
1 * Areca 1680-i, 8 x SATA/SAS hardware RAID, 256MB cache, PCI-E
1 * Areca ARC-BBM Battery Backup Unit
1 * Supermicro 1U riser card 1 x PCI-e 4x rechts
1 * Supermicro IPMI 2.0 SIMSO+ met KVM over IP
2 * Kingston 2048MB DDR-2 667Mhz Fully Buffered ECC
5 * Mtron SSD PRO 2.5", 16GB, r/w 130/120MBs, at 0.1ms, low power
1 * Intel Xeon E5405, Harpertown 2.0Ghz Quad Core, FSB1333, 12MB, 32/64 bit, VT, 80W
€ 3.874,02
2 servers zou nog mooier zijn ja, maar dan krijg ik weer te maken met mysql clustering, heb je hier zware load balancers voor nodig?
Je kunt in principe een veel goedkopere server gebruiken. Zaken die in die configuratie de prijs flink opschroeven zijn:
- RAID controller met 8 poorten
- 5 SSD schijven
- 2u chassis
Je kunt alle 3 problemen oplossen door gebruik te maken van 2 schijven in RAID-0 (zoals gezegd heb je dan dus wel 2 servers nodig voor redundancy). 2 SSD schijven in RAID-0 zullen zeker snel genoeg zijn, en ik vermoed dat 32GB diskspace ook zeker genoeg moet zijn voor de database (of is de database groter dan dat? Zo ja, dan heb je ook wel meer CPU nodig - maar ik kan me slecht voorstellen dat de database ZO groot is). Hou er rekening mee dat databases in principe niet veel ruimte in nemen, het is voornamelijk tekst natuurlijk.
Als je gebruik maakt van 2 schijven in RAID-0 kun je gebruik maken van een 1u chassis, je kan gebruik maken van een 2-poorts RAID controller, en dus ook maar 2 fysieke schijven. Deze zaken zullen de prijs waarschijnlijk bijna halveren, wat je dus ook in staat stelt om voor hetzelfde geld 2 servers te kopen. Kijk bijvoorbeeld eens naar een configuratie als dit:
http://www.ahead-it.be/shop/configure.asp?NR=SCS217&config_nr=1
Ik kom daar uit (met Quad core CPU, 2x 16GB SSD, raid controller en 4GB RAM) uit op 1568 euro, minder dan de helft van het geld dus. Neem daar 2 van et voila :)
Iets waar je wel rekening mee moet houden; als de stroom uitvalt is er een vrij grote kans dat je RAID array kapot is. Stel dat door stroomuitval dus allebei de servers uitvallen, heb je een probleem. Neem dus in overweging om bijvoorbeeld een goede UPS voor je servers te hangen in dit geval. Dat hoeft in principe helemaal niet veel te kosten, voor een paar 100 euro ben je klaar. Het hoeft natuurlijk geen grote UPS te zijn, een kleine UPS zal zeker in staat zijn om een enkele server een uur in leven te houden).
Afgezien van stroomuitval, is de kans dat beide servers tegelijkertijd uitvallen minimaal. Je hebt dan dus door die 2 servers te clusteren genoeg redundancy. Hou er wel rekening mee dat je cluster met 1 server (tijdelijk) minder prestaties levert dan met de servers samen, maar dat is waarschijnlijk nog wel overkomelijk.
Wat betreft de load balancers; je hebt daar absoluut geen zware load balancers voor nodig, tenzij je veel SSL verkeer doet. Bij normaal verkeer is het enige wat een load balancer doet, het doorsturen van een packet. Het heeft ongeveer dezelfde functie als een router. Voor SSL is het een ander verhaal, want dan moet de load balancer eerst alle packets processen en dan pas doorsturen. Voor een normale load balancer voor een website als dit, is een P3 processor met 1GB ram meer dan genoeg.
jeroen2496
26/09/08, 07:19
Apoc, bedankt voor het verhelderen weer :)
Wat betreft het nemen van 2 servers, ben ik het met je eens, maar, het risico van de stroomuitval staat mij niet echt aan, zeker niet als de RAID verloreren gaat, daarom neem ik het liefste een Raid Controller Battery Backup, maar volgens mij gaan deze alleen in deze configuratie: http://www.ahead-it.be/shop/configure.asp?NR=SCSC821&config_nr=3
Deze server heeft ook de mogelijkheid voor een 2e voeding, welke ik op stroom feed B kan aansluiten voor meer zekerheid.
Aan de andere kant, backups worden elk uur uitgevoerd, misschien is het ook een idee om dit nog vaker te doen (alleen de tabellen die veel gewijzigd worden). Wat er dan zou kunnen gebeuren in een geval dat allebei de servers down gaan, ik de backup + OS binnen het uur weer draaiend heb.
De database is zeer klein, momenteel misschien 300MB. Deze zal wel uitgroeien, maar verwacht daar geen tientallen GB's van :)
Edit Ik heb de volgende config samen gesteld, maar ben nog niet uit over de processor, kan deze kleiner, groter, meer FSB, meer cache nodig etc?
SCS217: max. 2 x SATA hot-swap // 8GB DDR-2 // 4xGbit LAN
1 * 3 Jaar Ahead-IT Server Service met EasyRMA+, Advanced Replacement Service & gratis levering
1 * Supermicro X7SBi Server Moederbord, 2 x Gbit LAN
1 * Supermicro SC811i-260, 1U
1 * Areca 1200, 2 x SATA II hardware RAID 0/1, PCI-e Volgens Ahead is Areca het snelste, wat zijn jou bevindingen? Ook lijkt deze controler alleen SATA te ondersteunen?
1 * Supermicro IPMI 2.0 SIMSO-HTC
2 * Kingston 2048MB DDR-2 667Mhz ECC
2 * Mtron SSD PRO 3.5", 16GB, r/w 130/120MBs, at 0.1ms, low power
1 * Intel Core 2 Duo Q6600, 2.4Ghz Quad Core, FSB1066, 8MB, 32/64 bit, VT, 105W
Maximum power consumption at full load: 175W ( = 0,80A ) per server
€ 1.570,96 x 2 = 3141,92 :)
jeroen2496
26/09/08, 14:19
Dit is het geworden, zie bijlagen!
Waar is de sempron heen :)? Die zou mooi kunnen loadbalancen en die core2duo als web3 dienen.
jeroen2496
26/09/08, 14:50
Ik weet niet of dat wel genoeg is, want stuurt de loadbalancer de bezoeker slechts door, of gaat hij alle pakketjes continu doorgeven? Net iemand gesproken die mij het advies gaf de 1e optie te hebben...
Wil volgens deze howto gaan werken: http://www.howtoforge.com/high-availability-load-balancer-haproxy-heartbeat-fedora8
Stel dat de mainswitch kapot gaat?
Dit is het geworden, zie bijlagen!
Waarom heb je dan 5x32GB SAS gekozen als je database nog geen gigabyte is? Om eerlijk te zijn vind ik de gekozen configuratie absoluut niet slim, maar dat is aan jou natuurlijk.
jeroen2496
26/09/08, 15:01
Waarom heb je dan 5x32GB SAS gekozen als je database nog geen gigabyte is? Om eerlijk te zijn vind ik de gekozen configuratie absoluut niet slim, maar dat is aan jou natuurlijk.
Ik heb met meerdere partijen contact gehad, en allemaal hebben ze mij verteld absoluut geen RAID0 te gaan gebruiken, ook al draaien er 2 systemen.
Tevens kan ik me hier heel goed in vinden, het was gewoon een afweging die ik heb moeten maken.
Ook kan ik in deze config gebruik maken voor een backup battery voor de Raid controller.
Ik ben er zeker van dat het systeem hier goed op zal gaan draaien (RAID10), ik was overigens stukken goedkoper uit: € 2290,-
Of denk je dat de config te laag zou zijn? :)
jeroen2496
26/09/08, 15:03
Stel dat de mainswitch kapot gaat?
Daar komen 2 switches te staan, tekening is wat verouderd. :)
Moet ik dan van elke port van de server deze op een switch aansluiten?
[...]
De pagina's worden dmv eval() uit de mysql database gelezen. Afbeeldingen en dergelijke zullen op de server zelf staan. Maar mijn bedoeling was om de pagina's op te slaan op de webservers dmv een uurlijkse cronjob, waardoor de load van de database af gaat. Of kan ik die load beter op de DB hebben dan de web servers?
Thanks!
?! Je meent toch niet serieus dat je al je code opslaat in een MySQL database om hem er vervolgens uit de halen en te runnen met een rete trage functie?
Ik kan je garanderen dat dat je performance niet te goede komt. Je tekst incl. opmaak opslaan in de database lijkt me logisch. Je geeft zelf aan dat je al een aantal jaar in de branche actief bent, ik neem aan als programmeur, dan zou je moeten weten dat een dergelijke oplossing not done is.
Dat terzijde, als je je load op de MySQL servers enigzins wilt beperken ga dan aan de slag met memcached. Als je het goed implementeerd dan scheelt dat echt enorm. Vertaal al je tabellen naar objecten die je vervolgens opslaat in het geheugen. Is niet alleen een handige manier om te cachen, maar ook je code wordt er overzichtelijker op.
Ik heb met meerdere partijen contact gehad, en allemaal hebben ze mij verteld absoluut geen RAID0 te gaan gebruiken, ook al draaien er 2 systemen.
Tevens kan ik me hier heel goed in vinden, het was gewoon een afweging die ik heb moeten maken.
Ook kan ik in deze config gebruik maken voor een backup battery voor de Raid controller.
Ik ben er zeker van dat het systeem hier goed op zal gaan draaien (RAID10), ik was overigens stukken goedkoper uit: € 2290,-
Of denk je dat de config te laag zou zijn? :)
Als je geen RAID-0 wilde gebruiken had je evengoed bij 2x16GB SSD in RAID-1 kunnen blijven. Aan de snelheid van de SSD schijven zal het niet liggen.
jeroen2496
26/09/08, 16:21
Nu past het gewoon beter in het budget, prima schijven zijn het verder zo toch?
Tuurlijk is de SSD sneller, maar dit zal ook moeten volstaan.
Mij is ook geadviseerd de SAS te nemen, aangezien de SSD nog te veel in de kinderschoenen staat, en SAS gewoon snel genoeg zal zijn.
Eventueel kunnen we eind volgende maand mocht het nodig blijken, uitbreiden met een vergelijkbaar systeem, op een andere locatie, als het budget dit toelaat.
De server vind ik nu zo betrouwbaar als het maar kan.
2 x voeding, Raid 10, genoeg geheugen (uit te breiden tot 64gb) en er is plaatst voor een 2e processor.
De server vind ik nu zo betrouwbaar als het maar kan.
2 x voeding, Raid 10, genoeg geheugen (uit te breiden tot 64gb) en er is plaatst voor een 2e processor.
Totdat je raid controller een keer de geest geeft :)
Hoe je het ook wendt of keert, met een enkele MySQL server kun je geen 99.9999+% high-availability opzetten.
jeroen2496
27/09/08, 07:35
Daar heb je zeker gelijk in, daarom hoop ik ook ergens volgende maand nog zo'n server te kunnen aanschaffen. Mocht het toch gebeuren dat de mysql uitvalt, is een foutmelding bij het zoeken op zich nog niet de aller grootste ramp, als de website maar bekeken kan worden (dus weg met eval!) :)
Dan heb ik nog de volgende vragen:
- De DNS server(s), met echt een minimale config, kan die deze bezoekers aan? Opzich is het een niet al te grote taak zou je zeggen... En de TTL hoog (12 uur?) is misschien ook verstandig.
- Hoe werkt een loadbalancer (Via deze howto http://www.howtoforge.com/high-availability-load-balancer-haproxy-heartbeat-fedora8), worden bezoekers doorgestuurd naar de server, of blijft de loadbalancer er continu tussen? In dat geval, voldoen de loadbalancers (2e staat als failover), in de eerder geplaatste bijlage?
Als ze ruim voldoen, zou een - AMD SEMPRON 3200+ 1.81 Ghz 512MB - ook voldoen? In dat geval zou ik namelijk lb1 hiervoor kunnen vervangen en de server in kunnen zetten als extra webserver.
- De switches staan met elkaar in verbinding, en hebben ieder een glasvezel verbinding.
Is het verstandig elke server op allebei switches aan te sluiten, maar hoe doe je dat met de ip configuratie voor de netwerk poorten? Kan je gewoon voor elke poort hetzelfde ip instellen? Lijkt mij niet iig.
Bedankt alvast!
- De switches staan met elkaar in verbinding, en hebben ieder een glasvezel verbinding.
Is het verstandig elke server op allebei switches aan te sluiten, maar hoe doe je dat met de ip configuratie voor de netwerk poorten? Kan je gewoon voor elke poort hetzelfde ip instellen? Lijkt mij niet iig.
Bedankt alvast!
Ik zou elke server op beide switches aansluiten, en dan bijvb "network teaming" met failover gebruiken. Je netwerkadapter en switch moeten dit wel ondersteunen.
jeroen2496
27/09/08, 11:43
Ja, de netwerk adapter ondersteunt dit, maar werkt dit ook onder centos?
Ja, de netwerk adapter ondersteunt dit, maar werkt dit ook onder centos?
Ik denk dat je daar wel uit komt
http://www.google.nl/search?hl=nl&rlz=1T4GPTB_nlNL290NL290&q=nic+teaming+centos&meta=
:)
jeroen2496
27/09/08, 11:54
Ik denk dat je daar wel uit komt
http://www.google.nl/search?hl=nl&rlz=1T4GPTB_nlNL290NL290&q=nic+teaming+centos&meta=
:)
:D top! Op nic teaming zoeken dus ;)
Dan heb ik dus nog alleen de volgende vragen:
- De DNS server(s), met echt een minimale config, kan die deze bezoekers aan? Opzich is het een niet al te grote taak zou je zeggen... En de TTL hoog (12 uur?) is misschien ook verstandig.
- Hoe werkt een loadbalancer (Via deze howto http://www.howtoforge.com/high-avail...rtbeat-fedora8), worden bezoekers doorgestuurd naar de server, of blijft de loadbalancer er continu tussen? In dat geval, voldoen de loadbalancers (2e staat als failover), in de eerder geplaatste bijlage?
Als ze ruim voldoen, zou een - AMD SEMPRON 3200+ 1.81 Ghz 512MB - ook voldoen? In dat geval zou ik namelijk lb1 hiervoor kunnen vervangen en de server in kunnen zetten als extra webserver.
jeroen2496
27/09/08, 17:56
't is rustig op zaterdag! :(
iedereen heeft weekend he ;)
- Hoe werkt een loadbalancer (Via deze howto http://www.howtoforge.com/high-avail...rtbeat-fedora8), worden bezoekers doorgestuurd naar de server, of blijft de loadbalancer er continu tussen? In dat geval, voldoen de loadbalancers (2e staat als failover), in de eerder geplaatste bijlage?
Als ze ruim voldoen, zou een - AMD SEMPRON 3200+ 1.81 Ghz 512MB - ook voldoen? In dat geval zou ik namelijk lb1 hiervoor kunnen vervangen en de server in kunnen zetten als extra webserver.
Hey..
ik heb een identieke opstelling staan (3xWEB, 2xDB, 2xLB) voor het HA hosten van een Joomla omgeving (don't ask..) De DB's staan in een circular multi-master opstelling, dus op beide DB's kunnen gewoon INSERTS, UPDATES etc worden uitgevoerd.
Ik gebruik hier Pen als loadbalancer, niet alleen op de LB's voor de WEB's, maar ook tussen WEB en DB. Zo wordt de load ook evenredig (round-robin) over de DB's verdeeld.
Pen werkt als een soort proxy.. hij accepteert de TCP connectie vanaf internet, en bouwt aan de andere kant een TCP sessie naar de eerstvolgende beschikbare WEB op. Alle data, heen en terug, gaat er doorheen. De WEB's zien dus alleen maar de LB's als clients..
Ik ken HAProxy niet.. maar neem aan dat deze op dezelfde manier werkt.
Ondanks dat de LB's alle traffic voor een kiezen krijgen valt het me op dat ze bijzonder weinig cpu% trekken. Als je enkele tientallen mbits traffic stampt zou een sempron mij goed genoeg lijken.
Succes ermee!
jeroen2496
11/10/08, 15:09
Ja, HAproxy werkt precies hetzelfde!
Overigens gebruik ik nu voor de zoekfunctie sphinx, met erg veel succes!
Zoekopdrachten binnen de database kan ik doen in 0,005 seconden!
Werkt lekker dus :D
Nu loop ik wel tegen een 'klein' probleempje aan, what to do with sessions :o
Ik denk dat ik het beste de sessies in de database kan zetten, en dan dmv een cookie/sessid (ben hier geen fan van...) uit te kunnen lezen... iemand anders nog ideeën of tips hierover?
Je kan gebruikers sticky maken in de LB, dan komt een bepaalde sessie altijd op dezelfde webserver uit. Dat is een stuk eenvoudiger dan je hele sessie management omgooien (ook omdat je juist de database wilt ontlasten, niet extra met sessie afhandeling). Mocht een webserver crashen dan is natuurlijk de sessie wel weg dus dat is een punt van overweging.
jeroen2496
11/10/08, 15:35
En als de master LB uitvalt, dan neem ik aan dat ook alle gebruikers hun sessie kwijt zijn?
kijk naar memcached voor je sessies.
jeroen2496
11/10/08, 17:52
memcached installeren op de sql server toch?
jeroen2496
14/10/08, 09:11
Ik heb memcached geinstalleerd icm met sessies, en t werkt als een zonnetje!
Ik heb 2048mb gereserveerd voor het proces, dit zou meer dan voldoende moeten zijn toch? Tevens heb ik het op de mysql server geinstalleerd, maar wie weet is het een beter idee om het op de loadbalancer te doen?
ik zou het op de load balancer doen, of op de webservers, want een DB wordt beter met elke extra MB geheugen dat hij kan krijgen...
jeroen2496
14/10/08, 10:24
Ok, duidelijk. Neem memcached veel geheugen in?
En stel lb1 gaat offline, zou het geen idee kunnen zijn om de sessies dubbel op te slaan (op lb1 & lb2), en mocht lb1 offline gaan dat lb2 ook dat overneemt?