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.