DPE SK Blog

Blog pre slovenských vývojárov od DPE (Developer and Platform Evangelist), Microsoft Slovakia

Novinky

Aktualizácie emailom

June 2015 - Príspevky

Ako vytvoriť Docker server pre aplikácie v kontajneroch v Azure (krok za krokom)

 V predošlom blogposte "krok za krokom" som popísal postup, ako v Azure vytvoriť Linux server s MySQL . V tomto návode síce naďalej zostanem vo svete Linuxu, ale posuniem sa do populárneho trendu kontajnerizácie pomocou technológie Docker . Kontajnery sú vyhradené prostredia pre beh aplikácií/služieb, ktoré sú v rámci jedného hostiteľa (servera) izolované, ale zdieľajú OS kernel a tam, kde je to vhodné, aj programy a knižnice (bins,libs). Pri vhodných aplikáciach je výsledkom použitia kontajnerov rýchlejšie nasadenie, nižšie nároky, ľahšia migrácia, rýchlejší štart.

Docker dnes podporuje hostiteľské servery na Linuxe, ale spolu s Microsoftom pracuje Docker open source komunita aj na podpore pripravovaného Nano servera založeného na Windows. V nasledujúcom návode nájdete kroky ako v Azure oživiť Docker hostiteľa na Linuxe, ako v ňom vytvoriť kontajner s aplikáciou a ako takýto kontajner vystaviť pre použitie cez internet.

1. Prihláste sa na "preview" portál správy Azure služieb https://portal.azure.com  Microsoft Account-om (LiveID), ktorý ste použili pri aktivácii Azure benefitu v MSDN alebo BizSpark-u, alebo ho používate v Azure Trial, prípadne v zakúpenej Azure subskripcii.

2. Na hlavnej obrazovke správy vašej Azure subskripcie vyberte vľavo hore menu „New“.

3. Z zobrazeného submenu vyberte Marketplace a do položky na vyhľadávanie v ponuke marketplace napíšte "Docker on Ubuntu Server".

4. Kliknite na vzorový image od Canonical + MS Open Tech.

5. Na informačnej a licenčnej stránke potvrďte Create.

6. Zadajte názov servera  (hostname), prihlasovacie meno administrátora servera (username), pre jednoduchosť nastavenia prihlasovania môžete nechať typ autentifikácie Password a do položky pre heslo (Password) zadajte heslo administrátora servera. Pre odskúšanie Docker hostiteľa môžete ponechať Pricing Tier (čiže veľkosť servera) na A1 (t.j. 1 vCPU, 1,75GB RAM). Zmeňte predvolené dátové centrum (položka Location) tak, aby bolo najbližie k väčšine používateľov aplikácií, ktoré v Docker kontajneroch rozbeháte. Nakoniec potvrďte Create.

 

Poznámka: Pre kontajnery, ktoré CPU zaťažia viac, zvoľte sizing v položke Pricing Tier zo sady D.


7. Spustí sa proces vytvorenia virtuálneho servera na Linuxe s predinštalovaným rozšírením Docker. Počkajte niekoľko minút.

Poznámka: Ak ste nechali pri tvorbe servera "zaškrtnutú" položku "Pin to Startboard", vytvorí sa na hlavnej stránke Azure portálu dlaždica smerujúca na nový server. 

8. Po ukončení provisioningu Docker servera sa zobrazí detailný panel, v ktorom môžete vytvorený server podľa potreby ďalej konfigurovať.

9. Potvrďte v hornom menu Settings, potom Endpoints a opíšte si verejný port pre SSH.

10. Pre správu Docker-a a jeho kontajnerov sa vzdialene pripojte na vytvorený server. Z Windows klienta som použil PUTTY http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html , pričom do položky "Host name (or IP address)" som zadal Cloud Service DNS Name, ktoré sa automaticky pridelilo serveru tak, že sa k názvu servera zadaného v bode 6 pridala doména "cloudapp.net" (,v mojom príklade je Cloud Service DNS Name mojdocker-ubuntu.cloudapp.net) a do položky Port som zadal verejný port pre SSH opísaný v bode 9.

11. Prihláste sa pod administrátorským prihlasovacím účtom s heslom, ktoré ste zadali pri vytváraní servera v bode 6.

12. Dotiahnite aktualizácie vzorového image príkazom:

   sudo apt-get update

13. Preverte, že vzorový image neobsahuje žiadne aplikačné balíčky pre Docker kontajnery príkazom:

   sudo docker images

14. Ako príklad nasadenia aplikácie do Docker kontajnera použijem populárny webserver nginx. Nginx balíček pre Docker je (ako množstvo ďalšieho softvéru) katalogizovaný v Docker Hub-e. Spustite nasledujúci príkaz, ktorým stiahnete nginx cez Docker hub, nainštalujete ho do nového kontajnera s názvom machinenginx a pridelíte mu v hostiteľskom prostredí vášho Docker servera náhodný port (prepínač -P):

    docker run --name machinenginx -P -d nginx

   Poznámka: Prepínač -d zabezpečí, že sa kontajner pre nginx nielen naštartuje, ale bude naďalej bežať na pozadí.

15. Bežiacim kontajnerom v rámci hostiteľského Docker servera sa prideľujú porty na komunikáciu s okolitým svetom. Potvrďte nasledujúci príkaz, ktorý vypíše, aké porty sú pridelené bežiacim kontajerom, a teda aký port bol pridelený kontajneru webového servera nginx v rámci Docker hostiteľa:
   
    docker ps

   Poznámka: Výstup príkazu ukazuje, že nginx čaká na porte 80 a kontajner čaká na porte 32769, a teda požiadavky ktoré prídu kontajneru machinenginx na port 32769 sú presmerované na port 80 pre proces nginx.

16. Ak by sme do Docker hostiteľa nainštalovali browser, v ktorom by sme chceli otvoriť web cez http na porte 32769, zobrazila by sa úvodná stránka webservera nginx. Našim cieľom je ale ukázať kontajner s nginx-om svetu, nielen procesom na Docker hostiteľovi.
Keďže Azure stavia na bezpečnosti, musíte explicitne určiť, že chcete, aby sa port 32769 zviditeľnil do internetu. Musíte teda pre Docker hostiteľa otvoriť tzv. endpoint, v ktorom nastavíte pre vnútorný port 32769 jeho verejný párový port. Keďže chcete vystaviť aplikáciu webservera, dáva logiku nastaviť verejný port s hodnotou 80. Prejdite na Azure portále opäť na detail servera mojdocker-ubuntu a cez horné menu Settings otvorte stránku Endpoints.

17. Potvrďte Add v hornom menu.

18. Zadajte názov endpointu, protokol ponechajte TCP, verejný port (Public port) nastavte na klasický http port 80, vnútorný port (Private port) nastavte na port kontajnera, čiže v našom príklade na 32769. Nakoniec potrvrďte tlačidlo OK.

19. Po chvíli sa endpoint vytvorí a tak skúste skontrolovať výsledok vytvorenia Docker hostiteľa s jedným kontajnerom obsahujúcim webserver nginx. Stačí otvoriť browser a zadať do neho URL mojdocker-ubuntu.cloudapp.net.

20. Hotovo!

 

Miro

P.S. Ak ste členmi BizSpark programu pre začínajúce vývojárske "startupy" (firmy alebo živnostníkov) , alebo máte kúpené Visual Studio s MSDN, môžete si bezplatne aktivovať Azure benefit v týchto programoch (Microsoft Azure pre členov BizSpark , Microsoft  Azure pre MSDN predplatiteľov). Pri registrácii Azure benefitu v MSDN alebo BizSparku nie je požadované overenie platobnou kartou. Ak nie ste členmi týchto programov, môžete si Microsoft Azure bezplatne vyskúšať na dobu 30 dní cez Microsoft Azure Trial.

 

Nová e-kniha zdarma : Webové aplikácie na Azure pre vývojárov

Komu je e-kniha určená?
Webovým vývojárom, pre ktorých je hostovanie a tvorba webových aplikácií pre Azure niečím novým.
Ak už vyvíjate pre Azure Web Apps, nájdete v knihe dosť informácií o nových rozšíreniach a nástrojoch pre hostovanie webov v Azure.

Obsah e-knihy (písanej v angličtine):
- Azure Web Apps - úvod do Azure Resource Groups a App Service Plans s doporučeniami na ukladanie nastavení aplikácií, "connection strings", naviazaním na nasadenia cez Visual Studio Online, pohľad na Role Based Access Control (RBAC)
- Azure WebJobs - tvorba a nasadenie procesných úloh, použitie WebJobs SDK a WebJobs Dashboard
- Škálovanie Azure Web Apps - konfigurovanie autoscale pre dynamické škálovanie podľa metrík a časového plánu, použitie služby Azure Traffic Manager pre globálne škálovanie
- Monitorovanie a diagnostika - zabudované "logovanie" do Azure platformy, konfigurácia diagnostiky, vzdialené ladenie, monitorovanie do úrovne konkrétneho zdroja, použitie Application Insights na komplexný pohľad na monitoring a diagnostiku

E-knihu nájdete na adrese http://blogs.msdn.com/b/microsoft_press/archive/2015/06/09/free-ebook-microsoft-azure-essentials-azure-web-apps-for-developers.aspx

Miro

 

P.S. Ak ste členmi BizSpark programu pre začínajúce vývojárske "startupy" (firmy alebo živnostníkov) , alebo máte kúpené Visual Studio s MSDN, môžete si bezplatne aktivovať Azure benefit v týchto programoch (Microsoft Azure pre členov BizSpark , Microsoft  Azure pre MSDN predplatiteľov). Pri registrácii Azure benefitu v MSDN alebo BizSparku nie je požadované overenie platobnou kartou. Ak nie ste členmi týchto programov, môžete si Microsoft Azure bezplatne vyskúšať na dobu 30 dní cez Microsoft Azure Trial.

 

Ako oživiť mySQL databázu na Linuxe v Azure (krok za krokom)

V jednom z predošlých blogpostov som sa venoval vytvoreniu Windows aplikačného servera v Azure, v tomto článku poteším Linuxových kolegov podrobným návodom na oživenie a sprístupnenie mySQL servera na Ubuntu v datacentre Azure. Dal som si za úlohu popísať hlavne Azure vrstvu, pretože s detailnou konfiguráciou Linuxu a mySQL, ktorá je identická (v Azure alebo mimo neho), si ich priaznivci hravo poradia a nájdu k nim na internete množstvo zdrojov.

Čo bude výsledkom tohto postupu?
- vytvorenie virtuálneho servera s Ubuntu Server 14.04 LTS v Azure
- nainštalovanie mySQL
- sprístupnenie napojenia na mySQL pre externé aplikácie mimo lokálnej Azure siete


1. Prihláste sa na portál správy Azure služieb https://manage.windowsazure.com  Microsoft Account-om (LiveID), ktorý ste použili pri aktivácii Azure benefitu v MSDN alebo BizSpark-u, alebo ho používate v Azure Trial, prípadne v zakúpenej Azure subskripcii.

2. Na hlavnej obrazovke správy vašej Azure subskripcie vyberte vľavo dolu menu „New“.

  

3. Z ponukového stromu vyberte vytvorenie Virtual Machine z galérie predpripravených konfigurácii.

4. Cieľom je vytvoriť virtuálny server s Ubuntu, preto potvrďte v ľavom menu galérie "UBUNTU" a vzápätí vyberte „imidž“ z galérie (napr. Long Term Support Ubuntu 14.04.) a potvrďte šípku na ďaľšiu špecifikáciu nastavení servera.

5. Do položky „Virtual Machine Name“ zapíšte názov servera (t.j. jeho hostname), a ak vytvárate samostatný server, ktorý nebude pracovať v „balancovanej“ farme, zvoľte „tier“ úroveň „Basic“. V ponuke „Size“ vyberte veľkosť virtuálu (,od ktorého sa odvíja aj cenová sadzba ). Pri databázovom servri s menšou databázou by mohol stačiť A2  - 2 jadrá, 3,5GB RAM. Do položky „New user name“ zapíšte meno administrátorského účtu (, ktoré sa pri štartovaní servera pridá do SUDO zoznamu). Pre prihlasovanie do servera budete môcť použiť SSH kľúč (certifikát X.509) alebo heslo. Pre jednoduchosť nepoužijem certifikát (čiže nevyberiem "checkbox" "Upload Compatible SSH Key"), ale "zaškrtnem" položku "Provide a password" a do zobrazených polí zapíšem heslo. Pre pokračovanie konfigurácie pokračujte opäť šípkou vpravo dolu.

 

Poznámka: Najpoužívanejšie sizingy sú v sadách A (1,6 GHz vCore a štandardné disky do 500 IOPS) , D (2,1 GHz vCore, "swap/temporary" disk SSD, ostatné disky štandardné do 500 IOPS) a DS (čo je vlastne sada D ale so všetkými diskami SSD v tzv. Premium Storage). Veľkosť „size“ budete môcť zmeniť po naštartovaní servera cez portál na správu. Ak pri vytvorení server zvolíte sadu A, budete sa s veľkou pravdepodobnosťou môcť pohybovať iba v veľkostiach sady A. Ak pri vytvorení zvolíte sadu D, budete si môcť vyberať pri zmenách veľkosti z sady D aj A. Ak pri vytvorení zvolíte sadu DS, budete mať ponuku sizingu vždy iba v rámci DS série. Takéto rozčlenenie je dané štruktúrou dátového centra.

6. V položke „Region/Affinity group/Virtual Network“ vyberte konkrétne dátové centrum Azure, pre EÚ „West Europe“ alebo „North Europe“ a pokračujte šípkou vpravo dolu.

 

Poznámka: Váš server dostane "menný" obal, tzv. „Cloud Service“, ktorý ma jedinečné DNS meno pre internet (Cloud Service DNS Name). V jednej „Cloud Service“ môžete mať viac serverov a virtuálnu sieť. Napriek tomu, že máte pridelené DNS meno, bez explicitného povolenia sieťových portov na konkrétnych serveroch sú vaše servery pre internet neviditeľné a sú chránené firewallom. Položka „Storage Account“ je účet (adresa) úložiska Azure, kam sa uložia „vhd“ disky vytváraného servera.

7. V poslednom konfiguračnom okne akceptujte doporučené rozšírenie VM Agent a ak budete chcieť na správu použiť Chef, zaškrtnite jeho pridanie do konfigurácie.


8. Spustí sa proces vytvorenia virtuálneho servera podľa vašich požiadaviek. Počkajte niekoľko minút.

9. Pripravený server zmení stav na „Running".

10. Pre nainštalovanie mySQL do Linux servera sa vzdialene pripojte do jeho prostredia. Z Windows klienta som použil PUTTY , pričom do položky "Host name (or IP address)" som vpísal Cloud Service DNS Name, ktoré ste zadali v bode 6. alebo ho nájdete po vytvorení virtuálu v zozname Virtual Machines v stĺpci DNS name.


11. Prihláste sa pod prihlasovacím účtom s heslom, ktoré ste zadali pri vytváraní servera v bode 5.

12. Dotiahnite aktualizácie vzorového image UBUNTU príkazom:

   sudo apt-get update

13. Nainštalujte mySQL server príkazom:

   sudo apt-get install mysql-server

   , pričom počas inštalácie zadajte Y pre súhlas s alokovaním priestoru na disku servera a zadajte heslo "root" používateľa mySQL servera.

14. Ak budú na servri aj aplikácie, ktoré sa budú v rámci neho správať ako klienti databázy, nainštalujte aj klientské knižnice príkazom:

   sudo apt-get install mysql-client

15. Preverte, či mySQL server beží, príkazom:

   sudo service mysql status

16. Prejdite do shellu mySQL, pričom na výzvu zadajte heslo "root" používateľa mySQL zadané v bode 13:

   mysql --user root --password

17. V režime "mysql>" zobrazte zoznam databáz, ktoré sú v správe mySQL servera hneď po jeho inštalácii:

   show databases;

18. Predošlé kroky si môžu mySQL administrátori doplniť o ďalšie príkazy, aby si databázový server nastavili podľa vlastných potrieb. Ukončite "mysql>" režim príkazom exit.

19. Linux server s mySQL beží, môžete ho ihneď použiť z iných serverov, ktoré sú v tej istej uzavretej Azure sieti (viď blogpost o vytvorení Azure VNET ). Port, na ktorom mySQL čaká je štandardne 3306 localhost IP adresy 127.0.0.1. Môžete sa o tom presvedčiť príkazom:

sudo netstat -anltp|grep :3306

20. Ak budete chcieť volať mySQL server z aplikácií mimo Azure VNET, musíte mu otvoriť komunikačný port pod jeho internetovým DNS menom (popísaným v poznámke bodu 6), ktorý nebude samozrejme naviazaný na "localhost" IP adresu. Najjednoduchším spôsobom je "forwarding" lokálneho portu  127.0.0.1:3306 na port, ktorý bude použiteľný aj mimo "localhost-u". Nasledujúci príkaz na poslúži na to, aby požiadavky prichádzajúce zvonku servera na port 3307 boli presmerované na lokálny port 3306, na ktorom načúva mySQL server. (V príkaze použite pre jednoduchosť administračný prihlasovací účet a heslo na úrovni Linuxu so špecifikovaním mena servera, ktoré ste zadali pri vytváraní servera v bode 5):

 sudo ssh -fNg -L 3307:127.0.0.1:3306 azureuser@mojlinuxdb

 Na výzvu o povolenie pripojenia napíšte a potvrďte yes a vzápätí zadajte heslo administrátorského účtu.

21. Virtuálnemu serveru ste nastavili port 3307, z ktorého bude schopný smerovať požiadavky do mySQL servera, ale keďže Azure stavia na bezpečnosti, musíte explicitne určiť, že chcete, aby sa port 3307 zviditeľnil do internetu. Musíte teda pre virtuálny server otvoriť tzv. endpoint na porte 3307. Prejdite na Azure portál do stromu Virtual Machines a kliknite na linku s názvom vytvoreného servera.


22. Prejdite do záložky "Endpoints" a z dolného menu vyberte "Add".

23. Na prvej stránke tvorby endpoint-u nechajte vybraný "Standalone endpoint", pretože ho nebudete rozkladať na viac serverov.

24. V zozname "Name" predpripravených endpoint-ov vyberte MySQL a verejný (public) aj interný (private) porty nastavte na 3307, pretože ten sme si predpripravili ako "forwarding" port do mySQL. Potvrďte vytvorenie endpoint-u.


Poznámka: Konfigurácia endpoint-ov je založená na NAT adresácii, ktorá prekladá verejnú IP adresu internetového DNS mena a verejný port na vnútornú IP adresu servera v Azure sieti a na vnútorný port. Preto je na vás, či ponecháte "public" a "private" port rovnaký, alebo číslo "private" portu skryjete nastavením iného čísla ako má "public" port.

25. Hotovo, máte pripravený mySQL server na Ubuntu, ktorý môžete napojiť aj na aplikácie mimo Azure VNET, pretože v "connection string-och" bude dostupný ako "mojlinuxdb.cloudapp.net:3307".


Miro

P.S. Ak ste členmi BizSpark programu pre začínajúce vývojárske "startupy" (firmy alebo živnostníkov) , alebo máte kúpené Visual Studio s MSDN, môžete si bezplatne aktivovať Azure benefit v týchto programoch (Microsoft Azure pre členov BizSpark , Microsoft  Azure pre MSDN predplatiteľov). Pri registrácii Azure benefitu v MSDN alebo BizSparku nie je požadované overenie platobnou kartou. Ak nie ste členmi týchto programov, môžete si Microsoft Azure bezplatne vyskúšať na dobu 30 dní cez Microsoft Azure Trial.

 

Zjednotenie Windows a Windows Phone Store - príprava na migráciu a nové pravidlá publikovania

S príchodom Windows 10 prichádza k spojeniu aplikačných obchodov Windows a Windows Phone Store. Toto zjednotenie prináša zmeny aj na strane developerského centra, ktoré sa taktiež zjednocuje. Ak ste vývojárom a vydavateľom store aplikácií, v tomto blogu: http://blogs.windows.com/buildingapps/2015/05/01/get-ready-for-the-unified-dev-center-dashboard-preview-and-upcoming-store-changes/ si môžete prečítať, ako sa pripraviť na migráciu vašich existujúcich aplikácií do nového storu, ktorá začína 8. júna. Migrácia bude síce automatická, no v blogu môžete nájsť popis aktivít, ktoré sa vývojárom pred migráciou odporúčajú vykonať. Nové pravidlá pre publikovanie aplikácií nájdete tu: https://msdn.microsoft.com/en-us/library/windows/apps/dn764944.aspx

 

Marek.

Viac príspevkov