Jak na elasticitu?

Jan Kasprzak kas na fi.muni.cz
Úterý Prosinec 19 23:43:47 CET 2017


	Dobrý večer,

Varování: následující příspěvek může obsahovat stopy oříšků, přemíru buzzwords,
a možná i sprostá slova jako třeba "cloud".

Jak byste řešili registraci služeb "co kde zrovna běží"? Když mám třeba
HTTP servery, tak můžu pomocí IPVS a ldirectord rozdělovat požadavky
na jednotlivé pracovní servery. Když pracovní server vznikne a po čase
zase neexistuje, nic zvláštního se nestane. Teda pokud zajistím aktuálnost
konfigurace ldirectord.

Ale pak je třída požadavků, kdy třeba nějaký rozdělovač řekne nějakému
pracantovi "zační pracovat na tomhle", a pracantovi to třeba trvá pár hodin,
a po čase se někdo úplně jiný může chtít začít ptát, jak tahle úloha dopadla.
Čili to není o tom "náhodně" rozdělovat jednotlivá TCP (HTTP) spojení na
množinu aktuálně živých pracovních serverů, ale je třeba si i pamatovat,
kterému konkrétnímu pracantovi jsem tuhle úlohu zadat, a příště už se obrátit
na toho konkrétního pracanta. Pokud mezitím zmizel, tak spustit úlohu znovu
jinde.

Na to navazuje tamta "elasticita": když bych třeba zjistil, že pracanti
jsou už fakt vytížení, mohl bych chtít vytvořit dalšího pracanta, který by
se pak měl u rozdělovače úloh zaregistrovat a říct "teď posílej úlohy i sem".
A až odezní zátěž, a až si zadavatelé vyzvednou výsledky úloh, mohl by po čase
nadbytečný pracant zmizet beze stopy.

Jak tohle řešíte? Nějakou podporu pro elasticitu má OpenNebula ve formě
OneFlow, ale to spíš řeší kdy spustit další instanci a kdy ji zase zrušit,
ale neřeší to třeba případ, že teď už vím, že mám víc instancí než aktuální
zátěž vyžaduje, tak budu pár hodin nové úlohy směrovat jen na vybranou
podmnožinu, a jednu dvě instance nechám "dožít", až se zadavatelé dostatečně
seznámí s výsledky úloh, a po nějaké době těchto pár dlouho dopředu
vybraných instancí zruším.

A taky se nějak nová instance musí zaregistrovat u rozdělovače práce,
mělo by to být uděláno tak, aby se u rozdělovače nemohl zaregistrovat
jen tak někdo (autentizace), a instance musí být schopna nějak posoudit,
jaká je její aktuální zátěž - jestli umí přijmout další úlohu, jestli je
dlouhodobě přetížená, atd.

Jak se tento týden takové rozdělování požadavků spolu s řízením vzniku a zániku
instancí řeší? Řešení neobsahující Javu (Apache Zookeeper?) je vítáno.

Díky,

-Y.

-- 
| Jan "Yenya" Kasprzak <kas at {fi.muni.cz - work | yenya.net - private}> |
| http://www.fi.muni.cz/~kas/                         GPG: 4096R/A45477D5 |
> That's why this kind of vulnerability is a concern: deploying stuff is  <
> often about collecting an obscene number of .jar files and pushing them <
> up to the application server.                          --pboddie at LWN <


Další informace o konferenci Linux