FreeBSD Webserv

From: Martin S. Andersen (none@karto--inleadmedia.com.lh.bsd-dk.dk)
Date: Thu 11 Dec 2003 - 19:25:56 CET


Subject: FreeBSD Webserv
Date: Thu, 11 Dec 2003 19:25:56 +0100
From: "Martin S. Andersen" <none@karto--inleadmedia.com.lh.bsd-dk.dk>
To: <none@bsd-dk--bsd-dk.dk.lh.bsd-dk.dk>

Hejsa alle sammen,

 

Jeg skal til at lave et nyt server setup til vores web hosting, med load balancing og failover.

 

Lige nu har vi ca. 50-60 sites, som vi styre 100 %, og ca. 12 mill. hits pr. md.

Vi har også en del web applikationer, der ikke kan håndtere at bruge en replikeret MySQL database, da slave serverne ikke bliver opdateret med det samme efter en UPDATE / INSERT.

Udover dette, så bruger applikationerne også PHP sessions, hvilket gør at en klient / browser ikke må "hoppe" fra server til server, når den load balancer.

 

Setuppet skal helst være så skalerbart, at vi på et tidspunkt skal kunne klare 100 gange så mange hits. Dvs. 1.2 milliard hits pr. md. Så skal der bare nogle flere og bedre servere til.

 

Jeg håber der er nogen af jer der har lidt erfaring med lignende setups, og der har lyst til at hjælpe mig med at få det fedeste og bedste setup.

 

Budgettet til dette setup ligger på omkring 3 - 400t kr., og serverne skal købes hos IBM.

 

Indtil videre ser setuppet sådan her ud, i mit hoved:

 

 

 

                       Router

                          |

                       +--+--+

                      BF1 BF2

                       +--+--+

    NS2 MX2 |

     | | |

 NS1 | MX1 | | LB1 LB2

  | | | | | | |

--+--+--+--+-------+----+-+--+------+--+--+--+--+---- Eth1 (213.xxx.xxx.128/26)

  | | | | | | | | |

  | MR | MON LOG BAK Web1 Web2 Web3

 MS SPAM | | | | | |

                   +----+----+------+--+--+--+--+--- Eth2 (192.168.1.0/24)

                                       | |

                                      DB1 DB2

 

 

 

* Web hosting servere

BF = Bridge med firewall og IDS

LB = Load Balancer

WEB = Apache webserver

DB = MySQL database server

 

* Administrations servere

MON = Monitoring server (Nagios, rrtools osv.)

LOG = Syslog server

BAK = Backup server

 

* Diverse servere

NS = Name server

MX = Mail server

MS = Cyrus Mail store (imap / pop3)

MR = Mail relay for all the servers

SPAM = Spam / virus filter server

 

* Eth1

100 mbit med offentlige ip-adresser. Alle serverne sidder på dette netværk.

 

* Eth2

1 gbit privat net, med private ip-adresser. Bruges til dataoverførsel mellem serverne. Ikke forbundet til det offentlige net.

 

 

 

 

* Bridge med firewall

Jeg har allerede en Linux box der gør netop dette, og det virker ganske fint. Jeg ved ikke om i har nogle erfaringer med andre systemet til dette?

Indtil videre så tror jeg det bliver en Linux med ebtables patchen til bridge firewall og snort til IDS

System: Linux, ebtables, snort, fake, heartbeat

 

* Load Balancer

For at kunne opfylde kravet med at en klient bruger samme server under hele hans session, ser det ud til at jeg bliver nødt til at bruge Linux'es LVS (http://www.linuxvirtualserver.org/) som load balancer, da jeg ikke kan finde noget med samme mulighed til FreeBSD (jeg har kigget på http://siag.nu/pen/ og på http://www.bsdshell.net/hut_loadd.html). Udover det så er der også nogle flere fordele i LVS.

System: Linux, LVS, mon, fake, heartbeat

 

* Webserver

Hidtil har jeg brugt Linux til dette, men jeg tror jeg vil over og køre FreeBSD, da jeg mange steder har hørt, at den er bedre og hurtigere.

Så det bilver en FreeBSD med Apache. Derudover regner jeg med at køre thttpd på sin egen ip på hver server, og så lade load balanceren styre begge. Til sidste, så mangler jeg bare et fault-tolerant distribueret fil system, der har en lokal cache, så den automatisk synkronisere filerne på serverne, og stadig hente eksisterende filer fra harddisken. Har i et forslag til et fil system? Ellers må jeg nøjes med en rsync hver 10-20 min.

System: FreeBSD, Apache, thttpd

 

 * Database server

Jeg har ikke hørt meget om FreeBSD som MySQL server. Men jeg går ud fra at det er det samme som med Apache, og regner derfor også med at bruge FreeBSD til den. Hvad siger i til den, er der nogen kommentar?

System: FreeBSD, MySQL

 

* De andre servere

De andre servere er lidt lige meget, det er ikke fordi nogen af dem får det vildeste load, og jeg regner egentlig med at køre mange af serverne i VMWare, eller lignende, på et par fysisk rigtige servere.

Mailserver bliver Postfix,

imap server bliver Cyrus

nameserver bliver Bind 9

Og så kommer der til at køre Nagios, rrtools, syslogd og rsync til backup.

I må gerne komme med forslag til hvilke servere der ville passe godt sammen, på samme fysiske server, igennem VMWare.

 

 

 

Jeg er ny til FreeBSD (har installeret den nogle gange, men det er aldrig blevet til noget), til gengæld har jeg arbejdet med Linux i 6 år, og ved hvordan den arbejder og skal administreres. Derfor håber jeg i vil være lidt venlige, og måske forklare lidt af de forskelle jeg kunne støde ind i.

 

 

 

Det gik lidt stærkt her tid sidst, men jeg håber i forstår hvad det er jeg vil, og i er villige til at hjælpe mig med at finde den bedste løsning.

 

 

 

 

 

Med venlig hilsen / Best regards

Martin Karto Andersen

Partner, Software Engineer & Sys Admin

 

karto@inleadmedia.com <none@mailto:karto--inleadmedia.com.lh.bsd-dk.dk>

Direct: +45 35 25 99 05

Mobile: +45 40 82 80 68

 

InleadMedia ApS

Sortedam Dossering 81 * DK-2100 Copenhagen

Tel.: +45 7020 1220 * Fax: +45 7020 1231

info@inleadmedia.com <none@mailto:info--inleadmedia.com.lh.bsd-dk.dk> * www.inleadmedia.com <http://www.inleadmedia.com/>

 

EasySite - Content Management System

www.easysite.org <http://www.easysite.org/>

 

 

 

 



This archive was generated by hypermail 2b30 : Wed 15 Nov 2006 - 18:24:34 CET