Achter de schermen: een flinke upgrade van ons netwerk!

De afgelopen maanden hebben we op de afdeling techniek niet stilgezeten. We hebben onze netwerkinfrastructuur een flinke upgrade gegeven en een groot deel van de fileservers vernieuwd. Gevolg? Maarliefst 20x meer bandbreedte, een nog stabieler netwerk en lagere latency naar je bestanden! In deze (technische) blogpost geef ik je heel graag een kijkje achter de schermen.

Upgrade van het netwerk

Het Byte netwerk begon in de buurt te komen van de grens aan de beschikbare bandbreedte. In de oude situatie was elk serverrack met een redundante 1 Gbps uplink verbonden met onze core-switches. In elk rack zitten ongeveer 20 servers. Voor de meeste racks was dit ruim voldoende, maar bij bijvoorbeeld grote pieken verkeer richting onze cache-clusters begon er congestie (“filevorming”) op te treden.

De nieuwe glasvezel bekabeling
De nieuwe glasvezel bekabeling

We besloten het hele netwerk een flinke upgrade te geven. Samen met onze netwerkpartner Quanza Engineering zijn we gaan kijken naar oplossingen. Na enig vergelijken hebben we nieuwe apparatuur van fabrikant Juniper aangeschaft. Daarnaast besloten we alle “oude” 1 Gbps koperkabels te vervangen met 10 Gbps glasvezelkabels.

De nieuwe Juniper apparatuur draait in een zogenaamde “Virtual-Chassis” modus, waarbij twee switches één virtuele switch simuleren. Het voordeel hiervan is dat je LACP (link-aggregation) kunt gebruiken naar twee verschillende switches (dus met behoud van redundantie). Dus nu hebben we zelfs 20 Gbps bandbreedte naar elk rack! Spanning-tree, het protocol wat loops in ons netwerk voorkomt was hierdoor ook meteen overbodig. We draaien het nog wel als back-up, maar het zou niet meer nodig moeten zijn.

Nieuwe fileservers en de overstap naar FreeBSD

Een tweede project was het vervangen van alle fileservers. We maken al enige jaren gebruik van het ZFS opslagsysteem in de variant Nexenta. Over ZFS zijn we heel tevreden, maar over Nexenta waren we dat niet om diverse redenen.

We besloten wel ZFS te blijven gebruiken, omdat we daar ervaring mee hebben. De mogelijkheden waren een IllumOS / OpenSolaris variant zoals Nexenta te blijven gebruiken (bijvoorbeeld SmartOS of OmniOS), of overstappen naar FreeBSD. ZFS on Linux was niet echt een optie omdat het nog vrij nieuw is, en belangrijker: het ontbreken van een volwaardig alternatief voor Dtrace. Dtrace is een tracing framework wat we gebruiken om talloze metrics over onze fileservers op te halen en naar onze monitoring servers te sturen.

Na het afwegen van de voor- en nadelen van alle systemen hebben we voor FreeBSD gekozen. Onder andere het verwachte nieuwe memory management systeem voor ZFS in de nieuwe kernel (10.1), en de ondersteuning voor (een groot deel van) Dtrace gaven de doorslag.

We besloten een testopstelling met FreeBSD te gaan bouwen. De configuratie vond plaats in Puppet (ons configuratiebeheersysteem), zodat we niet twee keer hetzelfde hoeven te doen. Na het bouwen hebben we eerst enige tijd intern getest met de nieuwe opstelling. Na er nog enkele kleine foutjes uit te hebben gehaald konden we overgaan tot een live-test.

We kozen hiervoor de hosting van de weblogs uit. Deze hebben namelijk geen invloed op de werking van websites van klanten, en maken vrij intensief gebruik van NFS, waardoor ze een goede kandidaat vormden om mee te testen.

Een aantal nieuwe fileservers in het rack
Een aantal nieuwe fileservers in het rack

De eerste dag draaide alles prima, maar daarna trad er opeens packet-loss op naar de fileserver. In eerste instantie vermoedden we een probleem met de nieuwe LACP netwerkstack, en pasten we de configuratie aan naar naar active-passive (failover). Toen de server echter opnieuw problemen vertoonde kwamen we na veel zoeken achter een probleem met TSO (TCP segment offloading). Het ging om een bug in FreeBSD. De snelle work-around was het uitzetten van TSO op de netwerkcontrollers. Na de work-around bleef de fileserver gelukkig zonder enig probleem de logs verwerken. De bug is definitief opgelost de vorige week uitgebrachte versie van FreeBSD (10.1) en dus kunnen we TSO binnenkort weer aanzetten.

Ook de hardware krijgt een update; we hebben nieuwe fileservers besteld, met honderden harde schijven en SSDs. De nieuwe fileservers worden met 20 Gbps aangesloten op de core-switches (ze hebben nu 4x 1 Gbps), waardoor we meer bandbreedte en lagere latency hebben. Ten tijde van het schrijven van dit artikel is ongeveer de helft van de nieuwe fileservers in productie genomen. De rest volgt begin 2015!