dun / conman

ConMan: The Console Manager
GNU General Public License v3.0
103 stars 21 forks source link

Multiple conmand daemons connecting to the same consoles #22

Open kcgthb opened 8 years ago

kcgthb commented 8 years ago

Hi,

I'd like to have a redundant setup where multiple conmand daemons running on different machines would log the same consoles. Say, server1 monitors consoles a and b, server2 monitors the same a and b consoles, and both servers log the consoles' output on their respective local filesystem.

It looks like currently, whatever server starts first gets a hold on the consoles, and the 2nd one doesn't get any output. So if server1 starts first, the consoles' output is correctly stored in server1:[global log]/%N.log, while server2 gets only timestamps.

Would it be possible to log the console outputs in monitor-only mode, so that several conmand daemons could log the output at the same time?

Thanks.

dun commented 8 years ago

Terminal servers oftentimes allow only one client at a time to connect to a given console. This behavior is specific to your particular setup.

conmand daemons do not currently share any configuration or state information. Support for a redundant configuration as you describe would be a major undertaking.

My initial thoughts for such a design would entail having conmand1 on server1 and conmand2 on server2 communicating with each other. Through some mechanism, one of them (e.g., conmand1) would be elected to have exclusive access to the console. It would relay I/O to the other (conmand2) and/or some external datastore. If conmand1 was to fail, conmand2 would detect this and take over exclusive access to the console. This design also requires the conman client to be able to determine which conmand is currently authoritative for a given console, etc.

I agree it would be a useful feature, but I think it would be a lot of work to implement.

kcgthb commented 8 years ago

Hi Chris, Thanks for considering this.

About simultaneous connection from multiple conmand servers to the same console, wouldn't this be similar to when multiple conman clients connect to the same console? They would use monitor (R/O) mode instead of interactive (R/W) mode, which would be sufficient for logging, wouldn't it?

dun commented 8 years ago

When multiple conman clients connect to the same console, they are all connecting to the same conmand; that single conmand has exclusive access to the console and arbitrates / multiplexes I/O as needed.

When conmand connects to a given console, it is constrained by the protocol, hardware, firmware, etc. Many console servers only allow a particular console to be accessed by one client at a time. If that client is conmand, then that single conmand can multiplex the I/O to multiple conman clients.