Fri programvara

You are currently browsing the archive for the Fri programvara category.

En del av er kanske tror att en blogg är till för att skriva på? Så är inte fallet, en blogg är en ursäkt för att få bygga kluster och lastbalansera. För att kunna göra det på ett roligt sätt behövs en hel massa burk. Jag tröttnade på att hålla på och virtualisera hemma i garaget och har därför flyttat ut min blogg i ”molnet” :). Jag har skaffat mig fyra vps:er (en blandning av xen och kvm) från två olika leverantörer (Edis och Hosting Inside). Maskinerna finns rent fysiskt i Schweiz, Tyskland och i USA. Därtill har jag köpt två lastbalanserarinstanser hos Rackspace som tjänst. Poängen med upplägget är att inte göra sig beroende av en leverantör och därigenom inte heller få några single points of failure. Leverantörerna valde jag främst på pris.

Huvudkomponenterna i mitt upplägg är:

OpenVPN

OpenVPN använder jag för att få ett internt, krypterat nätverk för kommunikation mellan mina noder. Jag har satt upp en av maskinerna som vpnserver och router för mitt interna nät. Den här delen är inte fullt redundant ännu, men kommer att bli det genom tekniken som används i den här how to’n: http://www.linuxjournal.com/article/9915

Principen är i alla fall klar, jag har med hjälp av OpenVPN fått ett internt nätverk som jag kan använda för intern kommunikation, i nästa steg kommer alla komponeter bli helt redundanta här också.

Edit: Cube-routed kan hämtas här: https://github.com/aguynamedben/cube-routed

Xtradb-cluser

Med hjälp av xtradb-cluster som Perconas implementation av Galera har jag fullt redundanta databasservrar. Jag använder två av servrana som webbservrar med Apache och PHP där jag kör wordpress. Lokalt på dessa kör var sin xtradb-instans. Xtradb-cluser ordnar med replikering av innodb-tabeller för mysql och för apache ser det ut som om den helt enkelt ansluter till en helt vanlig MySQL på localhost. I själva verket replikeras all data på radnivå i tabellerna mellan de båda servrarna över min OpenVPN-länk. På en tredje maskin kör garbd, Galera Arbitrator Daemon som ser till att skydda mot splitbrainproblematik och databaserna skulle tappa kontakten med varandra.

 

WordPress

WordPress är en helt vanlig bloggmotor som kör i Apache, jag har inte gjort något mera fancy här än att sätta upp en rsync som kopierar filer mellan servrarna så att jag håller alla filer och bilder i synk mellan maskinerna. I framtiden kommer jag här förmodligen att gå över till GlusterFS för att hantera filerna, men det har jag inte hunnit med ännu.

 

Puppet

Jag använder puppet för management av maskinerna och har lagt upp manifest för att snabbt och enkelt kunan deploya nya maskiner när jag byter leverantör eller vill kunna skala ut infrastrukturen.

 

Xymon

Jag använder Xymon för övervakning av miljön, allting som behövs på klienterna här deployas genom puppet.

 

Idag blev det lite framgång med min tidzonsväljare till MediaWiki och nu kan man faktiskt se lite resultat:

timezoneselector

Än så länge är det bara i18n och genereringen av hmtl som är klar, kvarstår gör genereringen av config efter att installern kört klart. Men som sagt lite synlig framgång iaf.

I väntan på att det ska hända nått med mitt Debianpaket har jag börjat kolla på en gammal MediaWiki-bug som jag patchat en gång redan. Tyvärr skrev jag min patch precis i skiftet mellan det gamla och det nya installationsskriptet och patchen som jag givetvis skrev mot den gamla installern kom aldrig med. Tänkte börja kolla på den igen och se om jag kan porta den till den nya installern.

Jag tro att jag hittat den relevanta sektionen av den nya installern och jag har börjat fila på lite kod.

Buggraporten finns här: https://bugzilla.wikimedia.org/show_bug.cgi?id=19991

Idag har jag laddat upp mitt paket till mentors.debian.net. Jag har även skapat en så kallad RFS (Request For Sponsorship) som är en förfrågan om att få någon att sponsra mig och mitt paket. RFS:en hittar ni på http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=699150 där det redan är diskussion på gång om paketets eventuella (brist på) meriter :).

Det har varit en kul dag och jag har lärt mig mycket om debian-paketering och jag har också splittat mitt github-repo i två, ett för debianpaketeringen och ett för källkoden.

Vi får se vad som händer med paketet nu, om inte Debian vill ha paketet så är planen att sätta upp ett eget repo för paketet och börja paketera nått annat övergivet paket i Debian, för det här projektet lär oavsett vad som händer inte räcka i 100 dagar :).

I dag har jag börjat mitt jobb med att få in mitt projekt begin in i Debian. Jag har gått med i de mejllistor man ska vara med i som en Debian Maintainer, jag har fått hjälp i kanalen #debian-mentors på irc.debian.org och jag har inteminst packat mitt projekt för Debian så att jag vet vad jag behöver göra samt lagt upp en såkallad ITP (Intent To Package) i Debians bugtracker: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=699113

Nu får vi se vad Debian tycker om mitt projekt, om de inte vill ha det har jag i alla fall chansen att lära mig en hel del om hur paketering och Debian fungerar. Inte så dåligt det heller.

En lustig grej som jag upptäckt i mitt paketerande är att jag får en varning av lintian om hardening-no-fortify-functions. En närmare granskning visar att det är följande funktioner som har problemet:

micke@build:~/begin-0.1.1$ hardening-check --verbose debian/begin/usr/bin/begin
debian/begin/usr/bin/begin:
 Position Independent Executable: no, normal executable!
 Stack protected: yes
 Fortify Source functions: no, only unprotected functions found!
        unprotected: memset
        unprotected: memmove
        unprotected: memcpy
 Read-only relocations: yes
 Immediate binding: no, not found!

Mina funktioner är alltså skyddade och jag har satt rätt flaggor. Problemet verkar komma från bugg #673112 så det verkar som om jag har gjort rätt i alla fall.

 

 

 

« Older entries § Newer entries »

Switch to our mobile site

Page optimized by WP Minify WordPress Plugin