Code Monkey home page Code Monkey logo

gridcontrol's People

Contributors

arkotek avatar johnrees avatar mtimofiiv avatar soyuka avatar unitech avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gridcontrol's Issues

Organization NPM

  • chopper les namespace @grid / @pm2 sur NPM - pm2 c'est bon j'ai crée un user mais comment le transformer en organization?

Systeme d'echange de fichier securisé performant

Actuel: Master envoi le tarball de l'application sur toutes les machines connectées via TCP. La bandwidth peut prendre cher

Envoi du fichier: https://github.com/keymetrics/gridcontrol/blob/master/src/gridcontrol.js#L409
Fichier recu en un coup: https://github.com/keymetrics/gridcontrol/blob/master/src/gridcontrol.js#L308
Ecriture du fichier: https://github.com/keymetrics/gridcontrol/blob/master/src/files/file_manager.js#L86

---> Pas clean, pas perf, pas secure

Solutions

  • Envoi via HTTPs?
  • Via socket TLS?
  • P2P? (rapide? leger a implem dans gridcontrol?)
  • Propagation "virale" ?

POC - ci runner

Clone de travis/gitlab avec gridcontrol:

  • définition de la configuration de tests (genre .gitlab-ci.yml ou .travis.yml en + basique)
  • chaque job éxecute une liste de scripts sur un noeud de la grille (éxecuté comme shell)
  • les fichiers partagés entre les builds (cache/dépôt git sur le même commit) sont share via hyperdrive
  • dépendances entre les "builds" et tests en //
  • retour des tests (logs / exit code)

grid ssh false

when use user@ip1, throw process_mux_new_session: tcgetattr: Input/output error

Make hyperdrive lighter?

shant@onyx: ~/gridcontrol/gridcontrol
>>> tree node_modules | wc -l
17799

shant@onyx: ~/gridcontrol/gridcontrol
>>> tree node_modules/hyperdrive | wc -l
13394

node_modules de gridcontrol en entier = 17.799 fichiers
module hyperdrive = 13.394 fichiers soit ~70%

Temps installation gridcontrol 0.4.3:

  • Intel(R) Atom(TM) CPU C2750 @ 2.40GHz + 1GB network: ~1m30s
  • Intel(R) Core(TM) i7-6560U CPU @ 2.20GHz + wifi: ~22s (cache?)
  • Intel(R) Xeon(R) CPU E5-1410 v2 @ 2.80GHz + 1GB network: ~40s

Note: need to install libtoolize for sodium compilation

Issue relatée: holepunchto/hypercore#23 (mdr)

Data security between Nodes

Pour le moment les données (message + tarball de l'application) sont transferées entre les nodes sur seulement un socket TCP, de facon non securisée:

createServer
.write

La branche: secure-socket

Implemente un transfert de message securisée avec l'algorithme de crypto/identification diffieHellman

Le protocole, fonctionne comme ca:

Client -------------------- Serveur
key:exchange ------------->
<----------------------------- key:final
identity --------------------->
<-----------------------------identity

  • manque echange password pour auth

Il pourra etre mis en place une fois que le transfert de tarball (source apps) se fera independamment de ce systeme de message

Todo/Issues

Todo

  • private multissh
  • check PR on nvm for aarch64 support (odroid c2) nvm-sh/nvm#1104 and update install.sh nvm script
  • Homogeneize grid provision and grid keycopy (both need a hostfile or user@ip combination)
  • grid hostfile: should be able to seperate user and ip with a : or @
  • allow to pass a password when doing grid provision
  • load balancer: implement broadcast strategy
  • keep stats of tasks invocation
  • implement test with new PM2
  • blessed contrib dashboard (for RIG also)
  • POC with python/java app

Issues

doc

Fast: Always UP services (no spawn for each actions)

Tu veux dire quoi par là ?

Quand tu donnes l'exemple tu répète tout le début (commandes listes etc.) du coup ptet que tu peux scinder ca.

Error: Could not locate the bindings file. Tried:

Damn, avec les nouveaux modules qui font de la compilation, l'installation via PM2 ne fonctionne plus

$ pm2 install gridcontrol
gridcontrol-297 (err): Error: Could not locate the bindings file. Tried:
gridcontrol-297 (err):  → /home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/node_modules/rabin/build/rabin.node
gridcontrol-297 (err):  → /home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/node_modules/rabin/build/Debug/rabin.node
gridcontrol-297 (err):  → /home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/node_modules/rabin/build/Release/rabin.node
gridcontrol-297 (err):  → /home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/node_modules/rabin/out/Debug/rabin.node
gridcontrol-297 (err):  → /home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/node_modules/rabin/Debug/rabin.node
gridcontrol-297 (err):  → /home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/node_modules/rabin/out/Release/rabin.node
gridcontrol-297 (err):  → /home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/node_modules/rabin/Release/rabin.node
gridcontrol-297 (err):  → /home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/node_modules/rabin/build/default/rabin.node
gridcontrol-297 (err):  → /home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/node_modules/rabin/compiled/4.4.4/linux/x64/rabin.node
gridcontrol-297 (err):     at bindings (/home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/node_modules/rabin/node_modules/bindings/bindings.js:88:9)
gridcontrol-297 (err):     at Object.<anonymous> (/home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/node_modules/rabin/index.js:3:32)
gridcontrol-297 (err):     at Module._compile (module.js:409:26)
gridcontrol-297 (err):     at Object.Module._extensions..js (module.js:416:10)
gridcontrol-297 (err):     at Module.load (module.js:343:32)
gridcontrol-297 (err):     at Function.Module._load (module.js:300:12)
gridcontrol-297 (err):     at Function._load (/home/shant/keymetrics/pm2/node_modules/pmx/lib/transaction.js:62:21)
gridcontrol-297 (err):     at Module.require (module.js:353:17)
gridcontrol-297 (err):     at require (internal/module.js:12:17)
gridcontrol-297 (err):     at Object.<anonymous> (/home/shant/.pm2/node_modules/gridcontrol/node_modules/hyperdrive/archive.js:6:53)

debug flag prefix

Add prefix to every debug namespace gc:filesmanager, gc:api.

  • Easier to grep : DEBUG="gc:*"
  • No conflicts with other packages

Amelioration grid-cli

  • Build dashboard with blessed-contrib
  • pm2.connect bug (exit, but needs to launch.(timeout?))
  • displayHost retry
  • termcaps input si pas de grid_name passé en parametre (grid init)
  • implem dns-discovery (host ne sont plus discovered après grid upgrade)
  • auto retry quand grid-api get ECONNREFUSED
  • grid-api "development_mode" option pour exec en local sans passage par GC
  • grid-api "execute_main_script" option pour demarer le script a la racine via fichier json
  • ajouter fichier a ignorer (.gridignore)

grid restart

Grid restart does not throw an error when no Gridfile in cwd

中文乱码

(10.162.195.128)[1:47:15 PM] 0|abcd    | [????????]?????????????????????? 33463127                                                          │                                  │
│  (10.162.195.128)[1:47:15 PM] 0|abcd    | {"name":"crontabs","hostname":"dev","pid":28091,"level":30,"result":{"name":"??????????????","gro  │                                  │
│  (10.162.195.128)[1:47:16 PM] 0|abcd    | [????????]?????????????????????? 33463129                                                          │                                  │
│  (10.162.195.128)[1:47:16 PM] 0|abcd    | {"name":"crontabs","hostname":"dev","pid":28091,"level":30,"result":{"name":"??????????????","gro  │                                  │
│  (10.162.195.128)[1:47:17 PM] 0|abcd    | [????????]?????????????????????? 33463131                                                          │                                  │
│  (10.162.195.128)[1:47:17 PM] 0|abcd    | {"name":"crontabs","hostname":"dev","pid":28091,"level":30,"result":{"name":"??????????????","gro  │                                  │
│  (10.162.195.128)[1:47:18 PM] 0|abcd    | [????????]?????????????????????? 33463133                                                          │                                  │
│  (10.162.195.128)[1:47:18 PM] 0|abcd    | {"name":"crontabs","hostname":"dev","pid":28091,"level":30,"result":{"name":"??????????????","gro  │                                  │
│  (10.162.195.128)[1:47:19 PM] 0|abcd    | [????????]?????????????????????? 33463135                                                          │                                  │
│  (10.162.195.128)[1:47:19 PM] 0|abcd    | {"name":"crontabs","hostname":"dev","pid":28091,"level":30,"result":{"name":"??????????????","gro

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.