Webmailille uusi rauta-alusta

Yliopiston webmail on pitkään ollut Horde-projektin IMP. Pari vuotta sitten ohjelmisto päivitettiin uuteen versioon ja samalla laitteistoalusta uusittiin.

Uusi alusta muodostui kolmesta Xen-virtuaalikoneesta, joille hajautettiin käyttäjät IP-osoitteen perusteella. Ratkaisun piti olla riittävän tehokas, mutta vähän väliä virtuaalikoneille jouduttiin lisäämään muistia, jotta päästiin kasvattamaan Apachen MaxClients-arvoa. Silti käytetyin kolmesta koneesta oli aina välillä tukossa, eikä hajautuskaan toiminut parhaalla mahdollisella tavalla.

Päädyttiin sitten vapauttamaan Xen-alustaklusterin resurssit muuhun käyttöön, ja ostettiin kaksi tehomyllyä Webmailia pyörittämään. Idea on, että yksi kone hoitaa koko kuorman ja toinen on ns. cold standby, varakone, jonne koko kuorma voidaan siirtää millä tahansa hetkellä.

Koneet ovat tosiaan melko isoja: niissä on kaksi 6-ytimistä prosessoria ja 32 gigaa muistia. Juuri muisti on ollut Webmail-palvelinten kriittisin resurssi.

Käyttöönotto viime tiistaina sujui lähes ongelmitta ja sessiot synkattiin lennossa. Mutta hetken päästä uusikin palvelin oli jumissa. Missä vika? Kuormitustestauksessakaan ei käynyt ilmi, että kun todellinen käyttäjäkuorma iskee päälle, PHP-sessioiden kirjoittamista tehdään niin valtava määrä, että kiintolevyn nopeus ei vain riitä. Aiemmin levy oli tullut kertaluokkaa nopeammasta levyjärjestelmästä, nyt oli tilalla paikallista levyä ja kaikki kuorma yhdellä koneella.

Onneksi keskusmuistia oli niin reilusti, että siitä saatiin lohkaistua sessiodataa varten ramdisk-pala, minkä jälkeen levy-I/O-ongelma ratkesi kuin taikaiskusta.

Kiinnostavaa uudessa alustassa on lähinnä se, miten failover-tilanne hoidetaan: kone mainostaa reitittimelle itseään BGP-reititysprotokollaa käyttäen. Jos webmailin www-palveluosoitteen IP menee alas, katoaa reitti ko. IP:lle. Tällöin reititin ottaa käyttöön staattisen reitin, joka vie HTTP-pyynnöt varakoneelle. Softan nimi on Quagga. Elegantti ratkaisu kaikessa yksinkertaisuudessaan. Vain PHP-sessioiden synkkauksesta koneiden välillä täytyy huolehtia erikseen.

Categories1