====== DoclerWeb Streaming Cluster architektúra ====== ==== Összefoglaló ==== A streaming szolgáltatás a Wowza stream szerverre épül. \\ A Wowza konfigurációs fájlok és a rögzített médiaanyagok HDFS fájlrendszerre kerülnek. \\ A HDFS rendelkezésre-állásának maximalizálása érdekében HA namenode-okkal vannak konfigurálva, a namenode-ok az edit loghoz Quorum Journal Managert használnak. A rendszerben 3 journalnode-ot használhatnak a namenode-ok. \\ A namenode-ok státuszát a Zookeeper állítja be a namenode-ok elérhetősége és a hálózat állapota alapján. A streameket kiszolgáló szerverek (edge) terheléseloszátást LVS végzi. \\ A streameket fogadó szerverek (origin) terheléselosztását egy LVS mögötti load-balancer szolgáltatás végzi, ami a szerverek terheltségét a CPU használat, hálózati kihasználtság, memóriahasználat és a rendszer loadja alapján állapítja meg és a legkisebb terheltségű szerverre továbbítja a streamet publikálni kívánó klienst. \\ Az edge szervereket szintén a load-balancer továbbítja a streamet fogadó origin szerverre. \\ A Wowza szerverek vezérlése és a statisztikai adatok lekérése 2 control szerveren keresztül történik. A control szerverek a ZeroMQ PUB és PULL socket típusait használják a kommunikációhoz. A Wowza szerverekhez készített control modul a konfigurációs fájlban megadott szerverekhez csatlakozik és mindegyik szervertől fogad parancsokat. A webes admin felület a control szervereken keresztül kommunikál a Wowza szerverekkel. Az origin és egde szerverek netbootosak. A DHCP adatok és a PXE konfiguráció is LDAP-ban van tárolva. A Belső DNS, a *.dwsc zóna dinamikusan módosul a DHCP alapján. ==== Időkorlátos URL ==== Az Nginx SecureLink moduljához hasonló megoldás. (http://wiki.nginx.org/HttpSecureLinkModule) Az md5 helyett sha256-ot használunk és a trid is hozzá lenne fűzve a stringhez, amiből a hash készül. \\ A minta PHP kóbban használt secretet másként használnánk fel. Minimum 128 bájt lenne és a stream létrehozásakor (adminban) generálódik, az első 32 bájt a konkatenáció elejére, a maradék a trid elé, a trid pedig a végére kerül. \\ A hash generáláshoz használt szöveghez hozzáfűzünk egy változó adatot is, amit a token lejárati idejének és a stream létrehozásának (adminban) különbségéből kapott szám szövegre konvertálásából kapunk. Így az elérhető adatok bármilyen kombinációjú egyszerű összefűzése esetén az idők végeztéig lehet brute force-olni, továbbá az összefüzés brute force-olása is jelentősen nehezebbé válik. ==== Ábra ==== {{ :dwsc:arch:dwsc_lvs.png?direct&300 |}} ==== Szerverek/szolgáltatások ==== * 2 db mgmt szerver - a szolgáltatások HA kialakításúak * LDAP * BIND * DHCP * PXE * DWSC control szerver (mindkét szerveren használható egy időben) * LVS szerver * RSyslog szerver * webadmin (nginx, php-fpm) * 2 db storage * Glusterfs * 2 db Wowza origin * Wowza * DWSC control module * 2 db Wowza edge * Wowza * DWSC control module