Web 2.0 in the real world

alt
 

Hot topics

De download fabriek

Guus Disselkoen  30 December 2012 23:38:34
Image:De download fabriek
Zo, ik heb mijn eigen TV zender.

In mijn vorige blog heb ik beschreven hoe ik een aantal producten geïnstalleerd heb om het downloaden van films, TV series en muziek vrijwel automatisch te laten verlopen. En ik moet zeggen, ik ben zeer content met de manier waarop het verloopt, maar…

Ja, er is een “maar” anders was er geen reden om deze blog te schrijven.
Ik heb, voor het gemak en omdat me het de meest logische keuze leek, alles geïnstalleerd op mijn Media Center PC. Deze PC is echter niet zo krachtig. Weliswaar heeft deze 2 CPU’s maar slechts 2GB aan intern geheugen en dat is volgens mij ook het maximale wat ondersteund wordt. Ook liep ik tegen het probleem aan van beschikbare disk space, met het downloaden van een seizoen van een serie plus nog wat films ging dat erg hard. Nu is disk space gelukkig niet het grootste probleem. Ik heb meerdere NAS-en en had zelfs al een extra disk aangemaakt van 1TB op een NAS en deze, via ISCSI, toegevoegd aan de PC.

Het installeren van alle producten op de Media Center PC was min of meer een experiment om te kijken of het inderdaad de mogelijkheden gaf om het downloaden makkelijker te maken. En dat is zo.
Nu het concept zich bewezen heeft wordt het tijd om na te gaan denken over een permanente oplossing die het kijken van TV series en films niet in de weg zit. Ik had een paar eisen waar aan voldaan moet worden:
  • De gedownloade bestanden moeten vanaf iedere PC of laptop te gebruiken zijn.
  • Het downloaden mag het bekijken van de films en TV series niet in de weg zitten
  • Voorkeur voor Linux i.p.v. Windows
De keuze was al snel gemaakt, het wordt een nieuwe linux server waarop de software geïnstalleerd wordt en de gedownloade bestanden worden op een disk op een NAS opgeslagen. Deze disk is vanaf iedere PC te benaderen en te gebruiken. Ik heb een NAS die ook gebruikt wordt voor de VMware omgeving waarop nog ruim 2TB beschikbaar is. Deze NAS beschikt over 2 netwerkkaarten met ieder een snelheid van 1GB\s en ondersteund ISCSI.

Het inrichten van een extra server is voor mij niet zo’n probleem. Zo’n beetje alle machines zijn gevirtualiseerd en op de ESX omgeving is nog capaciteit beschikbaar voor extra servers.
Mijn ESX omgeving bestaat uit 2 clusters, een 64bits en een 32 bits cluster. Aangezien de producten alleen beschikbaar zijn als 32 bits, en ik niet de noodzaak heb om een 64 bits OS te gebruiken, heb ik er voor gekozen een 32 bits server in te richten. Deze kan dan op ieder cluster gebruikt worden.
Nu de keuze gemaakt is, en de beslissing genomen, wordt het tijd om het plan ten uitvoer te gaan brengen. Ik ben zelf nogal fan van CentOS, een op Red Hat Enterprise Linux gebaseerde variant die gratis is en die gebruikt wordt voor al mijn Linux servers.

Na het installeren van het OS begonnen met het installeren van de software van de diverse producten en de benodigde additionele software die de diverse producten nodig hebben. Toen liep ik al snel tegen problemen aan. SABnzbd vereist een minimale versie van Python. En die versie had ik niet. Python upgraden koste heel veel moeite, Ik gebruikte CentOS 5.8 en die ondersteunt niet de vereiste versie van Python. Met wat kunst en vliegwerk is het gelukt de juiste versie van Python te installeren en kon ik verder. Maar niet voor lang. Al snel liep ik tegen het volgende probleem op. Spotweb heeft een aantal PERL onderdelen en libraries nodig om goed te kunnen werken. Ook hier liep ik weer tegen het probleem op van niet ondersteunde software op CentOS 5.8 en afhankelijkheden met andere geïnstalleerde software. Het eindigde toen ik YUM niet meer kon gebruiken om software te installeren en sommige applicaties niet meer werkten. Tijd om een nieuw plan te trekken.

Nu zou de meest voor de hand liggende keuze zijn geweest CentOS 6.x te installeren die de benodigde productenen versies van PERL en Python wel ondersteund. Maar in mijn zoektocht naar oplossing voor mijn problemen kwam ik er achter dat er heel wat meer informatie beschikbaar is voor Ubuntu dan voor CentOS. Zo zijn er zelfs complete handleidingen om SABnzbd, Spotweb, SickBeard en CouchPotato te installeren op Ubuntu server en desktop. Dat gaf de doorslag, en heb ik besloten een Ubuntu server op te zetten en daar alles op te installeren.

De installatie van Ubuntu server zal ik niet beschrijven, al moet ik zeggen dat dat niet geheel zonder slag of stoot ging, en ook de configuratie gaf nog wat problemen, maar uiteindelijk is het allemaal goed gekomen.

De installatie van de software is redelijk eenvoudig. De meeste producten zijn te download via Github of SourceForge. De procedure is simpel, je gaat naar de directory waar je de software wilt installeren en met een simpel wget command haal je de software binnen en daarna is het een kwestie van configureren. Een uitzondering hier op was SABnzbd. Deze is ook te installeren via de software tool van Ubuntu en die heb ik dan ook gebruikt. Alleen wordt er dan een oudere versie geïnstalleerd. Maar daar over later meer.

Na het installeren van de Ubuntu server kwam de volgende uitdaging: Het toevoegen van de disk op de NAS zodat deze gebruikt kan worden om de gedownloade bestanden op te slaan. Om de disk te kunnen gebruiken binnen Ubuntu moest ik eerst nog software installeren om ISCSI te kunnen gebruiken. Gelukkig is dit goed beschreven, ook welke stappen er uitgevoerd moeten worden. De disk was al snel beschikbaar en gebruiksklaar. Helaas is deze na een reboot niet meer beschikbaar en moet er eerst handmatig enkele acties uitgevoerd worden. Dat moet ik nog oplossen, maar voor nu werkt het. Ook moest er een mount aangemaakt worden naar de disk (op een andere NAS) waar alle mp3 bestanden staan. Deze wil ik blijven gebruiken omdat de MP3 server deze disk ook gebruikt. Niets handiger dan dat de bestanden direct op de juiste plek terecht komen en niet handmatig verplaatst hoeven te worden.

De volgorde van installeren van de diverse producten maakt niet zo veel uit, alleen tijdens het configureren is het van belang dat SABnzbd en Spotweb geïnstalleerd en geconfigureerd zijn en dat de download directories aangemaakt zijn. Deze heb je namelijk nodig tijdens het configureren van de verschillende producten.
Het werkt eigenlijk vrij simpel. SABnzbd wordt gebruikt voor het downloaden van de films, TV series en muziek. De nzb’s die daarvoor nodig zijn worden “aangeleverd” door SickBeard, CouchPotato, Headphones of Spotweb. Na het downloaden van de bestanden worden deze in de geconfigureerde folders opgeslagen waarna deze verder verwerkt worden door SickBeard, CouchPotato of Headphones. Dat verwerken kan zijn het renamen van bestanden en folders, het ophalen van ondertitels of het bijwerken van de status binnen het betreffende programma. In SickBeard wordt op die manier bijgehouden welke afleveringen van een serie al gedownload zijn.

Automatisch starten

Uiteraard is het wel zo handig dat na het starten van de Ubuntu server ook alle download programma’s automatisch gestart worden. Gelukkig wordt er met ieder programma een start en stop script meegeleverd voor Linux. Alleen nog een kwestie van de documentatie lezen en de uit te voeren stappen uitvoeren.

SABnzbd

Na de installatie van SABnzbd kwam ik er achter dat dit al een wat oudere versie betrof dus updaten maar. Nu is het updaten van SABnzbd vrij eenvoudig, ik heb dit ook al een keer uitgevoerd op de Media Center PC. Je download de laatste versie en vervangt die bestaande directory waarin het programma geïnstalleerd is met de nieuwe versie. Alleen ging dat in dit geval niet helemaal goed. SABnzbd draait en werkt zoals het moet werken, maar het start en stop script werkt niet meer, waardoor SABnzbd niet als service draait en ook niet op die manier gestart en gestopt kan worden. Op dit moment heb ik daar nog geen oplossing voor gevonden en tot die tijd zal het handmatig moeten gebeuren. Daar valt mee te leven.
Spotweb
De volgende uitdaging is Spotweb. Spotweb maakt gebruik van een http server en heeft, in tegenstelling tot de overige producten, geen eigen ingebouwde http server. Op zich wel prettig want daardoor heb je iets meer controle over de http root en poort die gebruikt moet worden.
Ik had Spotweb al geïnstalleerd op mijn bestaande http server. Dezelfde server die als front-end gebruikt wordt voor alle web sites en web based programma’s, dus dit zou geen probleem mogen zijn. Zou, want de versie van Apache op Ubuntu is afwijkend van de versie in de IBM http server die ik gebruik en die ik ken als m’n broekzak.

In de huidige versie van Apache is de configuratie behoorlijk anders dan in de versies die ik ken. Er is niet meer 1 httpd.conf bestand waarin alles geconfigureerd wordt, het is nu verdeeld over verschillende componeneten. Modules die gebruit worden moeten met een commando “enabled” worden en hetzelfde geldt voor virtuele hosts. Iedere virtuele host heeft zijn eigen configuratie bestand en moet via een commando geactiveerd worden. En dan is er nog de default web site.
Met wat test en experimenteer werk is het gelukt Spotweb werkend te krijgen en ook alle functionaliteit beschikbaar te krijgen.

In de installatie op de IBM http server werkte de integratie met SABnzbd niet en was er een probleem met het converteren van BMP bestanden. Dat laatste heb ik op kunnen lossen door de conversie uit de php code te verwijderen en dus over te slaan, dan maar geen plaatje. Het eerste probleem heb ik niet op kunnen lossen, maar via een work-around was er mee te leven. De problemen werden veroorzaakt door het ontbreken van PERL modules, die niet geïnstalleerd konden worden wegens afhankelijkheden met andere modules.

Newznab

Programma’s als SickBeard en CouchPotato hebben een Newznab provider nodig voor het vinden van nzb bestanden die vervolgens door SABnzbd gebruikt worden om een film of TV serie te downloaden. Er zijn een aantal gratis en betaalde Newznab providers beschikbaar. Nadeel van gratis providers is dat deze soms spontaan ophouden te bestaan en dan zit je zonder. Een alternatief is Spotweb configureren als Newznab provider. Een Newznab provider is niets anders dan een site met een API die gebruikt wordt door de diverse programma’s om te zoeken naar bestanden en een nzb te genereren met de benodigde informatie om de bestanden te kunnen downloaden.
Spotweb als Newznab provider heeft bovendien nog een voordeel. Spotweb maakt gebruik van de news server waarvoor je een account hebt en bevat de bestanden die je ook daadwerkelijk kunt downloaden. Maar aan de andere kant is dit ook weer beperkt door wat Spotweb ophaalt. Er is meer dan datgene dat Spotweb toont. Een alternatief is je eigen Newznab server opzetten.
In mijn geval beperk ik mij tot een aantal gratis Newznab providers zoals NZBx, NZBClub, NZBIndez en Spotweb.

Zo en dan is het klaar, de download fabriek staat en draait. Of toch niet?
Ja, het werkt allemaal, series selecteren om te downloaden, nzb wordt naar SABnzbd gestuurd, bestanden worden gedownload, gecontroleerd, indien nodig gerepareerd, uitgepakt en de status bijgewerkt. En als klap op de vuurpijl worden de ondertitels gedownload en in de juiste directory geplaatst. Helaas, het is traag, erg traag. Het downloaden gaat met een snelheid die weinig constant is en behaald ook vrijwel nooit de maximale snelheid.
Dat is een tegenvaller, ik had het zo leuk bedacht en was er eigenlijk van overtuigd dat ik de perfecte oplossing gevonden had. De vraag is nu, waarom is het downloaden nu zo traag? Een test met een download via de browser gaf aan dat het niets met de server te maken heeft. Via de browser wordt wel de maximale snelheid gehaald. En toen begon mij iets te dagen. De bestanden worden gedownload naar een externe disk die via het netwerk benaderd wordt, en het downloaden verloopt via dezelfde netwerk verbinding. Sterker nog, de data gaat meerdere keren over dezelfde verbinding. De server is virtueel, gebruikt een datastore op de NAS en slaat het op op een disk op dezelfde NAS in een andere datastore.

Tijd voor een experiment.

Ik heb de configuratie van SABnzb aangepast zodat de bestanden niet meer op de externe disk opgeslagen worden, maar lokaal. Vervolgens een aantal afleveringen van een serie gedownload om te zien of het nu inderdaad sneller gaat. En zoals ik verwachtte ging het downloaden een stuk sneller en had ik ook een constante download snelheid en maximale snelheid. Probleem opgelost!
Of toch niet?

De server die ik opgezet heb heeft slechts een beperkte disk grootte. Ik was er vanuit gegaan dat er alleen een OS en wat software op geïnstalleerd zou worden en wat extra ruimte voor te downloaden software. Ik had dan ook gekozen voor een disk van 20B, normaal gesproken meer dan genoeg voor een Linux server, In feite is 10GB al voldoende.
Nu is het gelukkig tegenwoordig niet meer zo’n probleem om de disk van een virtuele linux server te vergroten en de documentatie daarover was al snel gevonden. Maar je raad het al, het bleek toch niet zo eenvoudig, alsof Murphy meegeholpen heeft de boel op te zetten en in te richten.
De beschrijving ging uit van een “Thin provisioned disk”. Voor wie nite bekend is met VMware; er zijn 2 typen disks die je kunt gebruiken voor een virtuele machine. Thin en Thick provisioned. Thick wil zeggen dat je de grootte van de disk tijdens het aanmaken van de virtuele machine opgeeft en dat er dan ook een disk met die grootte aangemaakt wordt. Bij een Thin provisioned disk geef je de grootte op die de disk maximaal mag zijn en wordt een disk aangemaakt die “meegroeit”. Naarmate er behoefte is van meer schijfruimte wordt de disk vergroot tot de maximale grootte bereikt is. Overigens is het niet zo dat de disk kleiner wordt naarmate er minder dat op staat, maar dat terzijde.
Nu maak ik eigenlijk altijd een disk aan met de optie Thin, je raad het waarschijnlijk al, dit keer dus niet. Zal wel een blond moment gehad hebben. Nu heb ik (waarschijnlijk) meerdere opties. De meest simpele is onder VMware een nieuwe disk aanmaken en deze toevoegen aan de Linux server. Binnen Linux wordt deze dan onder een mountpoint beschikbaar en is voor het OS volledig transparant. Maar er zit ook een nadeel aan. Op de server is no zo’n 15 GB beschikbaar, genoeg voor het downloaden van een paar films of series, maar kan problemen geven wanneer een download niet compleet is. De bestanden kunnen niet verder verwerkt worden en moeten handmatig verwijderd worden en kan de disk vol lopen waardoor het niet meer mogelijk is nieuwe bestanden te downloaden. Niet wenselijk dus.

Wanneer ik een extra disk toevoeg en die ga gebruiken voor de gedownloade bestanden dan moet deze A: voldoende groot zijn en B: blijft er 15GB ongebruikt op de disk van de server. Bovendien weet ik niet of ik het probleem van de trage downloads opnieuw in het leven roep omdat het een separate disk op de NAS betreft.
Tijd voor een “Plan B”. Weer een nieuwe server opzetten had ik niet echt in gedachte, het zou een optie kunnen zijn, maar zag toch tegen het werk op. Een andere optie is de machine clonen, in de hoop dat ik dan wel aan kan geven wat voor type disk ik wil gebruiken. En warempel, die keuze heb ik! Ik kan een clone maken met een Thin provisioned disk waarna ik vervolgens de disk kan vergroten en het filesystem aan kan passen.

Nu alles geïnstalleerd en geconfigureerd is en werkt rest er nog 1 ding. Het aanpassen van de vrtuele hosts op de http server, deze verwijzen nog naar de Media Center PC en moeten verwijzen naar de nieuwe server. Kwestie van het configurate document aanpassen en een find\replace uitvoeren, mce01 wordt mdc en de poort nummers aanpassen van een enkel product. Als laatste actie de web site die ik gemaakt heb aanpassen en Spotweb toevogen zodat ook deze vanuit de website aangeroepen kan worden. De download fabriek is compleet!

Translate

Feeds

Companies

    Atos Origin
    Achmea
    Inter Access
    ilionx
    transavia.com
    IBM

Google searches

Referrers