Intelligens rendszerfelügyelet Automatikus infrastruktúra menedzsment és alkalmazástelepítés Szatmári Zoltán Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék 1
DEMO Egyszerű alkalmazás telepítése Telepítés kézzel o Release unit o Másolás utáni egyéb beállítások: pl. registry Telepítő script o Telepítés automatizálása o Általános és gép/felhasználó-specifikus beállítások szétválasztása Felügyelet?? o Hova, mikor, ki, miért telepítette o Most pontosan mi is van fent? o Milyen infrastruktúrával tudok számolni? 2
Tartalom Automatikus konfigurációkezelés o Környezetfüggő konfiguráció o Dinamikus konfigurációk 3
Motiváció Nagyméretű infrastruktúra menedzsmentje o Központosított megoldás Hasonló konfigurációs igények, ismétlődő feladatok o Sablon alapú technológia Automatikus alkalmazástelepítés o Felügyelő és beavatkozó komponensek Dinamikus infrastruktúra menedzsment o Automatikus igény szerinti alkalmazás telepítés 4
Konfigurációmenedzsment eszköz Lehetővé teszi o Konfigurációs beállítások deklaratív megadását o Igény esetén a konfiguráció elvégzését Legtöbbször tartalmaz valamilyen CMDB megoldást Technológiák o CFEngine o Puppet o Chef o stb. 5
Chef főzzünk egy infrastruktúrát Infrastruktúra automatizációs megoldás Deklaratív konfigurációleírás támogatása o Azt mondjuk, mit szeretnénk, nem azt, hogyan o Cookbooks, recipes Központi infrastruktúra adatbázis o Attribútumok, futási listák (run list) 6
Chef architektúra Konfigurációmenedzsment szerver Ágens: chef-client Kliens Kliens: Böngésző vagy Knife eszköz Menedzselt csomópontok 7
DEMO Webes alkalmazás telepítése Szükséges erőforrások o Webszerver (Apache), PHP, stb. o Webes alkalmazás o Konfigurációs beállítások 1 gép esetén kézzel, 10 vagy 100 esetén már automatizáltan 8
Deklaratív konfigurációmegadás Recept (recipe) o Erőforrások deklaratív megadása o Ruby nyelv Szakácskönyv (cookbook) o Receptek o Attribútumok o Sablonok o Stb. 9
Deklaratív konfigurációmegadás Szerep (role) o Receptek felsorolása Csomópont (node) o Szerepek o Receptek o Attribútumok 10
Receptek package "apache2" package "apache2-mpm-prefork" a2enmod "ldap" do file "ldap.load" notifies :reload, "service[apache2]" end service "apache2" do supports :status => true, :restart => true, :reload => true action :enable end 11
Csomag Felhasználó Csoport Cronjob SVN repository Mount IPConfig Fontosabb erőforrások 12
Fájlok Fontosabb erőforrások o Cookbookban definiált o Távoli URL-en elérhető Könyvtárak o Cookbookban definiált 13
Fontosabb erőforrások Sablonok o Paraméterezhető fájlok o Különböző típusú paraméterek Egész érték String érték Objektum # ports.conf by chef <% @ports.each do l -%> Listen <%= l %> <% end -%> 14
Fontosabb erőforrások template "/etc/apache2/ports.conf" do source "apache2/ports.conf.erb" mode 644 owner "root" group "root" variables( :ports => node[:apache2][:ports] ) notifies :reload, "service[apache2]" end 15
Változók Mitől lesz ez testre szabható? Változók definiálása o Cookbook szinten o Role szinten o Node szinten 16
DEMO Webes rendszer testreszabott beállítása Attribútum beállítása o Role-tól függően o Node-tól függően Pl.: o HTTP port beállítása o Alkalmazás paraméterének beállítása 17
Chef search Mitől lesz környezetfüggő a konfiguráció? Konfiguráció adatbázisban információk vannak a hosztokról o IP cím o Hoszt neve o Lefuttatott receptek o OS típus, verzió o Stb. 18
Chef search CMDB információk felhasználása o Receptekben o Sablonokban Pl.: hosts = search(:node, "recipes:irfapp").map { n webhost_data(n) } 19
DEMO Webes terheléselosztó beállítása Egyszerű HTTP proxy (HAProxy) o Telepítés o Konfigurálás Működő webszerverek felsorolása 20
Modern, skálázható alkalmazások Cloud környezet Igény szerinti rendszerkonfiguráció o Pl.: Terhelés függő webszerver mennyiség o VM gyorsan igényelhető és eldobható Alkalmazásnak is támogatnia kell o Állapotmentes komponensek o Laza csatolás o Minden komponens kívülről konfigurálható Lásd félév második felében: Virtualizáció és Cloud 21
Állapotgép alapú megközelítés Visszafele is működik? o El tudom távolítani a telepített erőforrásokat? o Le tudom állítani a szolgáltatásokat? Mi történik, ha valami futás közben változik? o Hiba lép fel? o Túlterhelés következik be? 22
Motiváció Adottságok Dinamikusan változó terhelés o időszakos o tervezett Szükséges támogatás Jól skálázható (scalable) o alkalmazások o infrastruktúra Cloud Konfigurációk telepítése/ karbantartása Gép által vezérelt megvalósítás Hibás viselkedés automatikus észlelése Monitorozás 23
Megközelítések Állapotgép alapú megközelítés o Eszköz példa GLU (az előadáson ezzel foglalkozunk) https://github.com/linkedin/glu o Megvalósítás alapja A szolgáltatások konfigurációjának állapotgépként való leírása o Mikor jó Statikus és dinamikus konfigurációra is Statikusnál jelentős lehet az overhead Célkonfiguráció deklarálása és állapot fenntartása o Eszköz példa Puppet http://www.puppetlabs.com/ o Megvalósítás alapja Erőforrásháló alapján o Mikor jó Viszonylag statikus konfiguráció 24
A kofigurációs rendszer főbb feladatai Konfigurációs modell Beavatkozás Gépvezérelt konfigurálás Monitorozás 25
Állapotgép alapú megoldás GLU Konfigurációs állapotgép = egy véges állapotgép (Finite State Machine) Kezdőállapot (Kályha) Konfigurációs átmenet Konfigurációs állapot 26
Véges állapotgép 1 token van a rendszerben Nem keletkeznek és nem is tűnnek el tokenek A token jelöli ki az aktuális állapotot (Digitből ismerősnek kell lennie) Kezdőállapot (Kályha) 27
Miért jó ez az egész? Automatikusan tudunk telepíteni 10, 100, 1000 gépet Ha ügyesen írjuk meg a szkripteket, akkor szinte autonóm rendszert kapunk Hol használják? o GLU linked-in (szakmai Facebook) o Chef Amazoon EC2 Stb. 28
További információ Chef: systems integration framework GLU: Deployment Automation Platform 29