-
Notifications
You must be signed in to change notification settings - Fork 4
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remote controllers #105
Comments
It seems you want to implement a network / SSH / cloud launcher but have conflated the idea with having your controller run in a separate process.
|
My first choice would be to implement an SSH cloud launcher without running the controller in a separate process. If that's possible, it would be super exciting. But I have trouble seeing how. Workers from the cloud have to dial into the user's local machine, which would mean each worker has to initiate the SSH connection. That would require exposing the local machine's IP address and setting its up like a server, which does not seem secure even with TLS. Even if it is secure, it's an uphill battle with AWS. When you SSH into an EC2 instance, you spin up the instance synchronously and then SSH from the client into the instance. That seems at odds with the host/daemon model we want, and AWS makes it hard/impossible do to this another way. But if we were to spin up a single sentinel EC2 in advance inside a VPC where ports were exposed inside the barrier, then you could submit Batch jobs or other EC2s that would connect back to the sentinel. The connection from host to sentinel could be initiated by the host. Make sense? |
Maybe it's the diagram that's confusing me, but it still seems what you need is an SSH launcher. Assume you're just within the VPC box, or what you deem to be the equivalent - or alternatively within your local corporate network. You want to spin up workers on other machines - you SSH in and run your Rscript command creating your TLS connection back to your localhost. Instead of doing that manually on the command line, I imagine you'd have a crew launcher that does that. Moving back out to a hypothetical AWS case, there are mitigants that mean you could SSH in and TLS back out to your machine. But let's assume you can't get comfortable, and need to enforce a cordon as you describe. You would SSH into a machine within this VPC and simply run the crew launcher from there. If you want to abstract away even this step, then it seems to be a question of manipulating SSH commands rather than creating some kind of NNG solution which doesn't sound secure. Again, this all seems orthogonal to having your controllers run non-blocking in a background process. |
One of my colleagues prototyped this at wlandau/crew.cluster#17. It's a start, but it's completely synchronous: the host sends an API call to start an EC2, then initiates an SSH connection to that EC2 after it starts. This process could take several minutes, depending on the size of the AMI and the instance, and in the meantime other launches etc. are blocked. It would be better if I could set up one end of an SSH connection and return control to the host while the EC2 instance is starting, then allow that instance to asynchronously connect through the tunnel when it is ready. But I am not sure this is possible.
Any asynchronous ones you know of?
That's what I was going for with the diagram, except that sending just the launcher seems a bit harder to understand because that would put the
I guess there might be a way to have the controller and launcher on the host if all the network programming happens automatically through the SSH tunnel. The most similar model I know of is |
Maybe I should learn more about how to do that before I prototype remote controllers. |
This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
Similar to
mirai
's dispatcher, what ifcrew
could run its controller in a separate local R process? This could have significant advantages:mirai
).Thoughts about the design:
push()
andpop()
) over an NNG req/rep abstract/inproc socket to a process where the actual controller is running.mirai
: sleep/wait on a condition variable until there is something to do or it is time to exit.mirai
level. Is it legal/safe to send resolvedmirai
objects to another process and then initiate the download there?The text was updated successfully, but these errors were encountered: