Stránka 1 z 1

Představuji QTBoinc

Napsal: stř 03 říj, 2012 19:47
od InHuMan
Už dlouho se potýkám s problémem jak spravovat BOINC na více počítačích a jelikož asi pořádné řešení neexistuje. Rozhodl jsem se, že si napíšu vlastní. 45hh
Zatím není ve stavu, kdy bych se ho opovažoval vydat, ale stejně mě zajímají vaše názory 33aaa
Pro vzdálenou správu jsou pro mne důležité tyto aspekty:
  • Možnost ovládat počítače vzdáleně (přes internet)
  • Možnost sledovat a ovládat více strojů najednou
  • Jednoduché ovládání (GUI)
  • "Multiplatformnost" (Linux/Windows) (Napsáno v QT)
  • Bezpečná komunikace - Veškerá síťová komunikace se šifruje pomocí SSL, pro identifikaci se používají certifikáty.

graf.png
graf.png (40.16 KiB) Zobrazeno 3619 x
Takže jak to vlastně funguje? Program má 3 části: Node (Uzel), Server a Client
Node (Uzel): běží na stroji kde beží BOINC, připojuje se k Servru.
Client: vlastní GUI pro ovládání, připojuje se k Servru.
Server: Spojuje Node a Client. Může k němu být připojeno víc klientů a uzlů.

Může se to zdát trochu složitý, ale lepší způsob jak se dostat skrz NAT mě nenapadl. :) Kdybychom tu už měli IPv6, život by byl jednodušší. Stačí tedy aby Server běžel na počítači s veřejnou IP adresou nebo s namapovaným portem

Za funkcemi klasického BOINC Managera, zatím zaostává, zatím jsem implementoval jen to co je na screenshotech: ovládání projektů (zákaz práce, pozastavení, apod.), výpis jednotek a zpráv.
Screenshoty:
1.png
1.png (44.47 KiB) Zobrazeno 3619 x
2.png
2.png (61.71 KiB) Zobrazeno 3619 x
3.png
3.png (51.76 KiB) Zobrazeno 3619 x
5.png
5.png (71.44 KiB) Zobrazeno 3619 x

Re: Představuji QTBoinc

Napsal: čtv 04 říj, 2012 09:35
od vkliber
Pěkně 33iii .

Pár myšlenek které mě hned teď napadají (v žádném případě se nejedná o kritiku, pouze myšlenky k zamyšlení)

- ovládat vzdáleně několik BOINC klientů v rámci jedné sítě lze i nyní z BOINC Managera (více zde)
- ovládat vzdáleně několik BOINC klientů v několika různých sítích lze i nyní z BOINC Managera (více zde poslední odstavec) ... nutnost nakonfigurovat router
- ovládat více BOINC klientů z jednoho GUI najednou lze i nyní (více zde)

Určitě bych byl rád jedním z prvních testerů, tvoje řešení se mi zamlouvá. Největší problém zřejmě budeš mít s implementací různých verzí BOINC a tím nemyslím jenom změny v 7 oproti 6, ale např. tuším od verze 6.12 je jiná syntaxe boinccmd (nevím jestli používáš na nodech boinccmd, nebo čteš přímo client_state.xml, nebo používáš přímo interní port 31416). V každém případě velice zajímavý počin a rád budu testovat.

Jiná varianta jak pohodlně ovládat své klienty přes celý internet by byla vytvořit speciální projekt (obdoba WUProb) kdy by na všech klientech běžela nci aplikace tohoto projektu (v tvém řešení to je ta Node aplikace) a pak by byla možnost ovládat všechny klienty ze všech klientů nebo z webu z účtu tohoto projektu (obdoba BAM!). Oproti BAM! by byla ta výhoda, že by nedocházelo ke zpoždění (čekání na timeout jak je to u BAM!), protože projekty už dnes umí vynutit komunikaci s klientem.

Možná trochu OT, ale určitě to k tomu patří :
- myslím že více zajímavý nástroj by byl tzv. BOINC Master Client, který jsem už tady na fóru někde popisovat, jednalo by se o jeden hlavní BOINC v síti (Master), který by měl pod sebou několik BOINC (Slave) clientů (libovolných Windows/Linux/...) a tito Slave klienti by byli připojeni k Master klientu, který by znal jejich konfigurace a byl by připojen ke všem projektům daného účtu a stahoval by práci pro všechny své podřízené klienty a tuto práci by jim plynule přiděloval. Tedy jakási forma třívrstvé architektury, kdy koncoví klienti by ani nemuseli mít přímý přístup na internet. NA ten by byl připojen jen Master client. To by ale samozřejmě znamenalo použít zdrojáky oficiálního BOINC klienta a celé to překopat aby vznikli 2 různé distibuce : Master a Slave Client.

Jejda ... nějak jsem se po ránu rozepsal 45cc .

Re: Představuji QTBoinc

Napsal: čtv 04 říj, 2012 16:51
od InHuMan
Děkuji za odezvu... :)
vkliber píše: - ovládat vzdáleně několik BOINC klientů v rámci jedné sítě lze i nyní z BOINC Managera (více zde)
- ovládat vzdáleně několik BOINC klientů v několika různých sítích lze i nyní z BOINC Managera (více zde poslední odstavec) ... nutnost nakonfigurovat router
- ovládat více BOINC klientů z jednoho GUI najednou lze i nyní (více zde)
O tom vím, ale žádné řešení nebylo pod Linux :( a klasický Boinc manager neumí ovládat víc PC najednou. (Chci třeba 5 počítačům říct aby nepočítali projekt A a začali s projektem B) Nemluvě o tom jaký je problém se dostat skrz NAT, (Pro každý pc se musí mapovat port a pak si je hlavně člověk musí pamatovat 45hh)
vkliber píše: Určitě bych byl rád jedním z prvních testerů, tvoje řešení se mi zamlouvá. Největší problém zřejmě budeš mít s implementací různých verzí BOINC a tím nemyslím jenom změny v 7 oproti 6, ale např. tuším od verze 6.12 je jiná syntaxe boinccmd (nevím jestli používáš na nodech boinccmd, nebo čteš přímo client_state.xml, nebo používáš přímo interní port 31416). V každém případě velice zajímavý počin a rád budu testovat.
Používám ten interní port, a protokol jsem získal reverzním inženýrstvím (čistější by bylo použít knihovnu od BOINC, ale nemam nervy na to jí začleňovat do svého programu... 45hh ). Zatím to vyvíjím pro verzi 7, ale mělo by to fungovat i na starších. Nepředpokládám, že se ten protokol bude zásadně měnit. (většinou dělají změny takové, aby byly zpětně kompatibilní) V nejhorším případě ale není problém zjistit co je jinak a opravit to. 45cc Mělo by pak stačit updatovat jen Klienta (GUI), protože server a Node ty zprávy jen přeposílají (tedy kromě zadání hesla, to si řeší Node sám).
Ještě to není ve stavu, kdy to můžu vydat. (např. konfigurace IP je natvrdo ve zdrojácích... :D) Ale až to bude, zajímala by tě verze pro Win nebo Linux?
vkliber píše: Jiná varianta jak pohodlně ovládat své klienty přes celý internet by byla vytvořit speciální projekt (obdoba WUProb) kdy by na všech klientech běžela nci aplikace tohoto projektu (v tvém řešení to je ta Node aplikace) a pak by byla možnost ovládat všechny klienty ze všech klientů nebo z webu z účtu tohoto projektu (obdoba BAM!). Oproti BAM! by byla ta výhoda, že by nedocházelo ke zpoždění (čekání na timeout jak je to u BAM!), protože projekty už dnes umí vynutit komunikaci s klientem.
Tak todle je vskutku originální řešení... 33iii
Ale asi chtělo nějaký webový frontend a s tím bohužel nemám žádné zkušenosti, tak to bude muset realizovat někdo jiný... 45hh Mimochodem jak funguje ta vynucená komunikace? To jako BOINC klient udržuje aktivní spojení na servery projektů, aby ho mohly kontaktovat?
vkliber píše: Možná trochu OT, ale určitě to k tomu patří :
- myslím že více zajímavý nástroj by byl tzv. BOINC Master Client, který jsem už tady na fóru někde popisovat, jednalo by se o jeden hlavní BOINC v síti (Master), který by měl pod sebou několik BOINC (Slave) clientů (libovolných Windows/Linux/...) a tito Slave klienti by byli připojeni k Master klientu, který by znal jejich konfigurace a byl by připojen ke všem projektům daného účtu a stahoval by práci pro všechny své podřízené klienty a tuto práci by jim plynule přiděloval. Tedy jakási forma třívrstvé architektury, kdy koncoví klienti by ani nemuseli mít přímý přístup na internet. NA ten by byl připojen jen Master client. To by ale samozřejmě znamenalo použít zdrojáky oficiálního BOINC klienta a celé to překopat aby vznikli 2 různé distibuce : Master a Slave Client.
No určitě by to udělat šlo... 45hh. Teoreticky by stačilo modifikovat jen tu serverovou část tak, aby se pro klienty tvářila jako další server s projektem. A server by se choval jako proxy. Pro projekty by se tvářil jako několik počítačů a stahoval vy práci a přeposílal ji... :) Kdyby k tomu protokolu byla pořádná dokumentace, tak by to ani nemuselo být těžký napsat 45cc
Otázka, jestli ta práce za to stojí a není lepší používat standardní klienty a ovládat je všechny najednou přes síť... :)

Re: Představuji QTBoinc

Napsal: čtv 04 říj, 2012 17:24
od Kyong
No, ještě jedno řešení, která používám u některých pc já, je udělat si vlastní VPN server a všechny pc, kde je BOINC, tak by se připojovali ještě k VPN, která by sloužila čistě pro BOINC. Tím pádem není problém z každého pc s každým pc, kde je BOINC manager, komunikovat, nemusí se řešit porty a nemusí se řešit ani změna IP, což je problém dnes už hlavně jenom u mobilního připojení, kde používám AndroBOINC i když ten zatím toho ještě moc neumí. Takže v podstatě celé tohle řešení, co jsi napsal, tak mi funguje díky VPN. 45hh

Re: Představuji QTBoinc

Napsal: čtv 04 říj, 2012 20:26
od vkliber
InHuMan píše:Ale až to bude, zajímala by tě verze pro Win nebo Linux?
Server a Client určitě pro Win, Node pro Win i Linux 45cc .
InHuMan píše:Mimochodem jak funguje ta vynucená komunikace? To jako BOINC klient udržuje aktivní spojení na servery projektů, aby ho mohly kontaktovat?
Přiznám se jak toto funguje netuším, ale několikrát jsem byl svědkem kdy mi server zrušil jednotky projektu (tuším že to bylo doprovázeno i nějakou hláškou : Vynuceno serverem) a to i přesto, že BM neměl důvod kontaktovat server. A něco podobného dělá i projekt PrimeGrid při začátku turnaje, kdy se zcela mimo pořadí spustí komunikace clienta se serverem.

Možná že plácám nesmysly a komunikace je inicializována skutečně klientem nikoli serverem :smt102 .

Re: Představuji QTBoinc

Napsal: čtv 04 říj, 2012 20:44
od nenym
vkliber píše:Možná že plácám nesmysly a komunikace je inicializována skutečně klientem nikoli serverem :smt102 .
Rozhodně nejsi mimo, komunikaci s klientem si vynucují nejméně tyto další servery: eOn, dDm, Volpex. Jak toho lze dosáhnout netuším, anžto žádnou takovou option jsem v popisu config file serveru nenašel.