Gjennomføring Clouds Ubuntu Way: En introduksjon til juju

Ubuntu 11.10 er et viktig skritt fremover i cloud computing for Ubuntu-prosjektet. Med denne utgivelsen, har vi innført noen nye funksjoner som vil hjelpe våre brukere sette opp og administrere cloud-tjenester. En av de viktigste funksjonene i denne utgaven er juju. Formelt kjent som Ensemble, JuJu pakker intelligensen til å installere, konfigurere og administrere tjenester. La oss ta en titt på hva juju er, og hva den kan gjøre for deg.

Virtualisering og mer nylig Infrastruktur cloud computing har vært store buzz ord i det feltet de siste årene. Cloud troende se en verden hvor skyen forandrer alt, og det er noe sannhet i det. Grunnen til at mange IT-folk ser mye verdi i skyen er fordi det lag en automatisering lag (med en API) på toppen av et datasenter. Dette alene gir rask tilgang til ulike dataressurser. Med et API-kall, et klikk på knappen eller utfører en kommando, kan servere skapes eller ødelegges, kan lagring våren opp til eksistens og ulike virtuelle nettverk er opprettet for å betjene den virtuelle datasenter nettopp opprettet. Hastigheten og lav barriere av cloud computing hjelpe bedrifter oppføring og selv barn i en garasje eksperimentere med nye programvareteknologi. Automatisering sikrer repeterbare godt kontrollert distribusjon at IT-profesjonelle som, og siden nesten alt er automatisert det er kostnadseffektivt i tillegg. Faktisk slike cloud-løsninger er en stor " første skritt "!

Etter å ha løst den Infrastruktur on-demand problem, samt å ha en bunnsolid serverplattform som gir rettidig oppdateringer av godt integrerte komponenter som Ubuntu Server. DevOps er mer og mer omsorgsfull om høyere nivåer av stabelen. Å ha rask og automatisert tilgang til servere og lagring er et nødvendig første skritt, men en IT-tekniker utrulling i stor skala webprogram bryr seg mer om " Raskt distribusjon av en MySQL server med flere lese slaver, " " Prøvde og sanne tuning av mysql konfigurasjon for optimal effektivitet, " " En arbeidsgruppe backup og overvåkingsstrategi for databasen og webserveren flåte " og så videre. En mulig løsning på det er PaaS sky miljøer, som prøver å løse problemet ved å tilby kjøremiljøer som inneholder standardkonfigurasjoner for vanlige komponenter og rammeverk (databaser, applikasjonsservere ... og så videre).

Ubuntu Serveren Laget hadde imidlertid en vidtrekkende visjon om å skape en programvare som ville gjøre det mulig for brukere å veldig raskt å sette sammen sin egen programvare-tjenester (databaser, caching, app servers..etc). En måte å se på det, er brukerne ville være raskt å lage sine egne PaaS miljøer som passer deres behov, fra off-the-sokkel komponenter! Ønsker at innstilt skalerbar MySQL server, grab som " tjenesten " og distribuere det, fancy applikasjonsservere, caching, overvåking eller backup-tjenester? Du bare distribuere slike tjenester og koble dem opp sammen

Enter juju

Juju går ". Hinsides emballasje ". Mens tradisjonelt programvare emballasje fokuserer på pakking programvare, selve binære bits, JuJu pakker intelligensen til å installere, konfigurere, tilkobling og administrere tjenestene du distribuerer. Juju formler er der forfattere embed og kodifisere sin kompetanse for å dele den med resten av samfunnet

Juju handler om gjenbruk og sammensetning &mdash.; du kan gjenbruke andres juju formler uten modifikasjoner, og du kan (og mest sannsynlig vil) par flere tjenester sammen komponere en større distribusjon som fungerer som en enhet.

Juju formler kan uttrykke utplassering best- praksis, og gjennom deling og samarbeid, gjør at juju de beste praksis for å spre seg gjennom et fellesskap svært effektivt. Slå howto'er inn formler og se programmet distribueres raskere og mer effektivt.

Kjerne til juju visjon er et offentlig register av gjenbrukbare juju formler for populære program distribusjon scenarier. Disse formlene er produsert samarbeid, som en tradisjonell Linux-distribusjon, og følger samme mønster av styresett som Ubuntu. Uansett hva du trenger for å distribuere, start ved å se etter en formel du kan forbedre på, eller starte din egen!

Med juju kan du distribuere tjenester på tvers av flere sky eller fysiske servere og administrere disse tjenestene via en håndfull av kommandoer, bygget på sterke fundament av Ubuntu Server.

Sjekk det ut nå

Nok snakk, la oss hva juju kan gjøre i dag. La oss distribuere et multi-tier LAMP søknad til skyen, koble alle bitene sammen og se hvordan det fares. I denne artikkelen (den første av en serie) Jeg vil ikke prøve å fordype deg i for mange detaljer, vil vi gjøre det enkelt og bare nevne hva du trenger å vite, men du kan stille detaljerte spørsmål om vår mailingliste. Hvis du ønsker å faktisk kjøre eksemplene her, må du installere juju (jeg anbefaler den nyeste versjonen fra PPA), og du må gi den til din Amazon AWS nøkkelen. Jeg vil ikke gjenta docs, du finner all begynt info i dokumentasjonen juju.

Det første en juju miljø trenger er bootstrapping
en bootstrap node. Dette node er et verktøy node som brukes til å administrere miljøet. Juju er raskt framover, og i fremtiden denne noden rolle kanskje ikke trenger en egen dedikert node, men for nå er det er nødvendig. Når du har din environment.yaml fil sett (som per delen Komme i gang) kan du gå videre og bootstrap:

juju bootstrap

La oss også laste de nødvendige formler. I fremtiden juju vil være i stand til å søke og laste ned formler på egen hånd. Men for nå, er dette trinnet nødvendig

 bzr gren lp. Principia /mysqlbzr gren lp: principia /mediawikibzr gren lp: principia /memcachedbzr gren lp: principia /haproxy 
Distribuere en Initial Set of Service

Juju opererer på nivå med en " tjenesten ". Du distribuere tjenester til skyen, og du klarer dem. Lavnivå " trinnene " nødvendig for å skape en mysql-tjenesten er definert i mysql formel. La oss se et eksempel på distribusjon av tjenester.


 juju distribuere --repository =. mysql wiki-dbjuju distribuere --repository =. Mediawiki demo-wikijuju distribuere --repository =. memcached wiki-cachejuju distribuere --repository =. haproxy wiki-balancer 

Den første linjen distribuerer en mysql service, fra formelen kalt mysql. Den resulterende tjenestenavn er " wiki-db, " Dette er et vilkårlig navn du tilordner til din tjeneste. Formelen repository er gjeldende katalog. Det samme skjer i de neste tre linjer hvor Mediawiki, memcached, og haproxy tjenester er utplassert og tildelt tjenestenavn.

Distribuere hver av disse tjenestene resultater i å spinne opp en ny Ubuntu server sky eksempel (siden vi velger å distribuere til Amazon EC2 cloud i dette tilfellet). Ubuntu server eksempel er en vanlig vanilje eksempel, ikke noe spesielt er innebygd i det bildet. Forekomsten plukker opp instruksjoner gått til det fra brukerdata, og begynner å utføre formel instruksjoner til å bli den tiltenkte tjenesten (for eksempel mysql)

Skala It Up

For en mer praktisk utplassering, la oss øke antall medie wiki servere til to, la oss også gjøre det samme for memcached.

 juju add-enhet wiki-cachejuju add-enhet demo-wiki 

​​Det er nøyaktig hvor enkelt det er å oppskalering en tjeneste (selv i produksjon!), siden juju allerede vet alt det trenger å vite om demo-wiki-tjeneste, trenger du bare å spørre det å legge til eller fjerne forekomster av det.

Koble Pieces

Til nå har vi utplassert ulike systemer. Hver node har et sett med pakker installert, og er " klar " men det er ikke klar over sine omgivelser, er det ikke koblet til resten av tjenestene. Det er vanligvis en eureka øyeblikk for en første gang juju bruker når hun kobler sammen alle bitene, og ser hvordan tjenester begynner å konfigurere seg selv for å passe inn i miljøet. La oss se hvor lett det er gjort

 juju add-forhold wiki-db. Db demo-wiki: dbjuju add-forhold wiki-cache demo-wikijuju add-forhold wiki-balancer: reverseproxy demo-wiki: nettside 

La oss prøve å forstå nøyaktig hva som skjer her, og hvorfor dette er veldig interessant! Den første linjen koble vår (mysql) tjeneste database, til de to noder av Mediawiki tjenesten. Når du er tilkoblet, har mysql vil realisere Mediawiki tjeneste ingen DB laget, og dermed en DB vil bli opprettet for det, og brukernavn /passord /URL for tilkobling til at DB vil bli sendt til Mediawiki tjenesten over JuJu gitt kommunikasjonskanaler. Mediawiki omskriver deretter sin konfigurasjon for å gjøre bruk av den nyopprettede databasen.

Den andre linjen kobler Mediawiki til caching service. Igjen lignende ting begynner å skje, hvor memcached konfigurerer seg selv for å være en backend caching tjeneste for Mediawiki, og Mediawiki konfigurerer seg selv i å gjøre bruk av memcached tjenesten.

Til slutt den tredje linjen fører til Mediawiki til å publisere sine detaljer til haproxy service. Følgelig haproxy starter rekon selv å tjene forespørsler til (for tiden to) noder i Mediawiki-tjenesten. All magien under panseret håndteres av juju formler som kan snakke et felles språk som resulterer i composable tjenester som deg ops person kan begynne å koble sammen for å skape større systemer.

Hva har vi nå? Anmeldelser

La oss kjøre juju status for å se hva vi har nå. Her er svaret:


 maskiner: 0: {dns-navn: ec2-67-202-29-40.compute-1.amazonaws.com, eksempel-id: i-90d616f0 } 1: {dns-navn: ec2-75-101-233-145.compute-1.amazonaws.com, eksempel-id: i-22dd1d42} 2: {dns-navn: ec2-50-17-119-109 .compute-1.amazonaws.com, eksempel-id: i-dcdd1dbc} 3: {dns-navn: ec2-50-17-143-48.compute-1.amazonaws.com, eksempel-id: i-8edd1dee} 4: {dns-navn: ec2-67-202-57-106.compute-1.amazonaws.com, eksempel-id: i-5ade1e3a} 5: {dns-navn: ec2-107-20-73-192. compute-1.amazonaws.com, eksempel-id: i-fade1e9a} 6: {dns-navn: ec2-50-19-21-19.compute-1.amazonaws.com, eksempel-id: i-a2de1ec2} tjenester : demo-wiki: formel: lokale: Mediawiki-68 relations: {cache: wiki-cache, db: wiki-db, nettside: wiki-balancer} enheter: demo-wiki /0: maskin: 2 relations: cache: {state : up} db: {tilstand: up} webside: {tilstand: up} tilstand: begynte demo-wiki /1: maskin: 6 relations: cache: {tilstand: up} db: {tilstand: up} webside: {tilstand: opp} tilstand: begynte wiki-balancer: formel: local: haproxy-14 relations: {reverseproxy: demo-wiki} enheter: wiki-balancer /0: maskin: 4 relasjoner: reverseproxy: {tilstand: up} tilstand: begynte wiki- cache: formel: local: memcached-11 relations: {cache: demo-wiki} enheter: wiki-cache /0: machine: 3 relations: cache: {tilstand: up} tilstand: begynte wiki-cache /1: machine: 5 relasjoner: cache: {tilstand: up} tilstand: begynte wiki-db: formel: local: mysql-98 relations: {db: demo-wiki} enheter: wiki-db /0: maskinen: 1 relasjoner: db: {tilstand: opp} tilstand: started2011-09-07 16: 25: 34 574 INFO 'status' kommando ferdig hell 


Her er en grafisk representasjon av miljøet, bidrar til å visualisere tjenester og hvordan de forholder seg. Denne grafikken ble generert ved hjelp


 juju status --format svg Output image.svg 
Hvorfor vi Ring juju ". DevOps Destillert "

Juju er handler om å destillere infrastruktur beste praksis i " kode, " og dele denne koden med jevnaldrende. Som gjør det mulig for mange fordeler som å ha en repeterbare, pålitelige, kontrollerbare, og automatisert infrastruktur-som-kode prosedyrer, samt å være i stand til å stå på skuldrene til kjemper, gjenbruk devops erfaring opprettet tidligere. Juju utmerker seg ved å destillere devops erfaring inn intelligente formler som er kjapt gjenbrukbare og kan kombineres for å skape større systemer. Eventuelle tilpasninger som trengs for disse formlene for å passe inn i ditt eget miljø er gjort rent via passerer konfigurasjonsparametere, ikke hacking på formlene direkte (selv om det fortsatt er et tilgjengelig alternativ).

Når du velger å bygge en infrastruktur modellert som JuJu tjenester, er du gjenbruk infrastrukturen opplevelsen av Juju samfunnet. Hva er enda mer interessant kanskje, er at juju ikke tvinge deg til å lære enda en domenespesifikke språk til å modellere infrastrukturen. Snarere gir juju deg med kommandolinjeverktøy som er oppsigelige fra alle programmerings eller skriptspråk. Veldig snart juju vil også gi start integrasjon slik at samfunnet til å søke etter og utnytte formler skrevet av andre medlemmer. Du kan tenke på det som PPAs for infrastrukturtjenester!

Jeg håper du har hatt denne første artikkelen som en introduksjon til juju. I neste opplæringen vil jeg være dykking i flere detaljer i nøyaktig hvordan og hvorfor av juju. Mens denne artikkelen skraper bare overflaten av hva som er mulig, jeg håper det hjalp skjerpe appetitten for å lære mer om juju. Du kan finne mer informasjon om juju nettstedet, og du kan bli med juju samfunn på #juju på Freenode IRC. Anmeldelser