Adam Litke píše v Po 15. 10. 2012 v 08:07 -0500:
> On Mon, Oct 15, 2012 at 04:40:00AM -0400, Dan Yasny wrote:
> > 
> > 
> > ----- Original Message -----
> > > From: "Adam Litke" <a...@us.ibm.com>
> > > To: "Zhou Zheng Sheng" <zhshz...@linux.vnet.ibm.com>
> > > Cc: "VDSM Project Development" <vdsm-devel@lists.fedorahosted.org>
> > > Sent: Friday, 12 October, 2012 3:10:57 PM
> > > Subject: Re: [vdsm] [RFC]about the implement of text-based console
> > > 
> > > On Fri, Oct 12, 2012 at 04:55:20PM +0800, Zhou Zheng Sheng wrote:
> > > > 
> > > > on 09/04/2012 22:19, Ryan Harper wrote:
> > > > >* Dan Kenigsberg <dan...@redhat.com> [2012-09-04 05:53]:
> > > > >>On Tue, Sep 04, 2012 at 03:05:37PM +0800, Xu He Jie wrote:
> > > > >>>On 09/03/2012 10:33 PM, Dan Kenigsberg wrote:
> > > > >>>>On Thu, Aug 30, 2012 at 04:26:31PM -0500, Adam Litke wrote:
> > > > >>>>>On Thu, Aug 30, 2012 at 11:32:02AM +0800, Xu He Jie wrote:
> > > > >>>>>>Hi,
> > > > >>>>>>
> > > > >>>>>>   I submited a patch for text-based console
> > > > >>>>>>http://gerrit.ovirt.org/#/c/7165/
> > > > >>>>>>
> > > > >>>>>>the issue I want to discussing as below:
> > > > >>>>>>1. fix port VS dynamic port
> > > > >>>>>>
> > > > >>>>>>Use fix port for all VM's console. connect console with 'ssh
> > > > >>>>>>vmUUID@ip -p port'.
> > > > >>>>>>Distinguishing VM by vmUUID.
> > > > >>>>>>
> > > > >>>>>>
> > > > >>>>>>   The current implement was vdsm will allocated port for
> > > > >>>>>>   console
> > > > >>>>>>dynamically and spawn sub-process when VM creating.
> > > > >>>>>>In sub-process the main thread responsible for accept new
> > > > >>>>>>connection
> > > > >>>>>>and dispatch output of console to each connection.
> > > > >>>>>>When new connection is coming, main processing create new
> > > > >>>>>>thread for
> > > > >>>>>>each new connection. Dynamic port will allocated
> > > > >>>>>>port for each VM and use range port. It isn't good for
> > > > >>>>>>firewall rules.
> > > > >>>>>>
> > > > >>>>>>
> > > > >>>>>>   so I got a suggestion that use fix port. and connect
> > > > >>>>>>   console with
> > > > >>>>>>'ssh vmuuid@hostip -p fixport'. this is simple for user.
> > > > >>>>>>We need one process for accept new connection from fix port
> > > > >>>>>>and when
> > > > >>>>>>new connection is coming, spawn sub-process for each vm.
> > > > >>>>>>But because the console only can open by one process, main
> > > > >>>>>>process
> > > > >>>>>>need responsible for dispatching console's output of all vms
> > > > >>>>>>and all
> > > > >>>>>>connection.
> > > > >>>>>>So the code will be a little complex then dynamic port.
> > > > >>>>>>
> > > > >>>>>>   So this is dynamic port VS fix port and simple code VS
> > > > >>>>>>   complex code.
> > > > >>>>>>From a usability point of view, I think the fixed port
> > > > >>>>>>suggestion is nicer.
> > > > >>>>>This means that a system administrator needs only to open one
> > > > >>>>>port to enable
> > > > >>>>>remote console access.  If your initial implementation limits
> > > > >>>>>console access to
> > > > >>>>>one connection per VM would that simplify the code?
> > > > >>>>Yes, using a fixed port for all consoles of all VMs seems like
> > > > >>>>a cooler
> > > > >>>>idea. Besides the firewall issue, there's user experience:
> > > > >>>>instead of
> > > > >>>>calling getVmStats to tell the vm port, and then use ssh, only
> > > > >>>>one ssh
> > > > >>>>call is needed. (Taking this one step further - it would make
> > > > >>>>sense to
> > > > >>>>add another layer on top, directing console clients to the
> > > > >>>>specific host
> > > > >>>>currently running the Vm.)
> > > > >>>>
> > > > >>>>I did not take a close look at your implementation, and did not
> > > > >>>>research
> > > > >>>>this myself, but have you considered using sshd for this? I
> > > > >>>>suppose you
> > > > >>>>can configure sshd to collect the list of known "users" from
> > > > >>>>`getAllVmStats`, and force it to run a command that redirects
> > > > >>>>VM's
> > > > >>>>console to the ssh client. It has a potential of being a more
> > > > >>>>robust
> > > > >>>>implementation.
> > > > >>>I have considered using sshd and ssh tunnel. They
> > > > >>>can't implement fixed port and share console.
> > > > >>Would you elaborate on that? Usually sshd listens to a fixed port
> > > > >>22,
> > > > >>and allows multiple users to have independet shells. What do you
> > > > >>mean by
> > > > >>"share console"?
> > > > >>
> > > > >>>Current implement
> > > > >>>we can do anything that what we want.
> > > > >>Yes, it is completely under our control, but there are down
> > > > >>sides, too:
> > > > >>we have to maintain another process, and another entry point,
> > > > >>instead of
> > > > >>configuring a universally-used, well maintained and debugged
> > > > >>application.
> > > > >Think of the security implications of having another remote shell
> > > > >access point to a host.  I'd much rather trust sshd if we can make
> > > > >it
> > > > >work.
> > > > >
> > > > >
> > > > >>Dan.
> > > > 
> > > > At first glance, the standard sshd on the host is stronger and more
> > > > robust than a custom ssh server, but the risk using the host sshd
> > > > is
> > > > high. If we implement this feature via host ssd, when a hacker
> > > > attacks the sshd successfully, he will get access to the host
> > > > shell.
> > > > After all, the custom ssh server is not for accessing host shell,
> > > > but just for forwarding the data from the guest console (a host
> > > > /dev/pts/X device). If we just use a custom ssh server, the code in
> > > > this server only does 1. auth, 2. data forwarding, when the hacker
> > > > attacks, he just gets access to that virtual machine. Notice that
> > > > there is no code written about login to the host in the custom ssh
> > > > server, and the custom ssh server can be protected under selinux,
> > > > only allowing it to access /dev/pts/X.
> > > > 
> > > > In fact using a custom VNC server in qemu is as risky as a custom
> > > > ssh server in vdsm. If we accepts the former one, then I can
> > > > accepts
> > > > the latter one. The consideration is how robust of the custom ssh
> > > > server, and the difficulty to maintain it. In He Jie's current
> > > > patch, the ssh auth and transport library is an open-source
> > > > third-party project, unless the project is well maintained and well
> > > > proven, using it can be risky.
> > > > 
> > > > So my opinion is using neither the host sshd, nor a custom ssh
> > > > server. Maybe we can apply the suggestion from Dan Yasny, running a
> > > > standard sshd in a very small VM in every host, and forward data
> > > > from this VM to other guest consoles. The ssh part is in the VM,
> > > > then our work is just forwarding data from the VM via virto serial
> > > > channels, to the guest via the pty.
> > > 
> > > I really dislike the idea of a service VM for something as
> > > fundamental as a VM
> > > console.  The logistics of maintaining such a VM are a nightmare:
> > > provisioning,
> > > deployment, software upgrades, HA, etc.
> > 
> > Why? It really sounds like an easy path to me - provisioning of a virtual
> > appliance is supposed to be simple, upgrades not necessary - same as with
> > ovirt-node, just a bit of config files preserved and the rest simply 
> > replaced,
> > and HA is taken care of by the platform
> 
> How do you get the VM image to the hypervisor in the first place?  Is this an
> extra step at install time that the admin must follow?  You say that the VM is
> simple and will not need to be upgraded but I don't completely believe you.
> Inevitably, we will need to upgrade that VM (to fix a bug someone finds, or 
> sync
> it up with the latest vdsm/engine code, or fix a security flaw).  How will we
> conduct that upgrade?  How do we handle a host going in and out of Maintenance
> mode?
> 

IMO you could generate such VM from host system similarly to how
libvirt-sandbox works. 

Also CCing Dan who is author of libvirt-sandbox

David

> > 
> > On the other hand, maintaining this on multiple hypervisors means they 
> > should
> > all be up to date, compliant and configured. Not to mention the security
> > implications of maintaining an extra access point on lots of machines vs a
> > single virtual appliance VM. Bandwidth can be an issue, but I doubt serial
> > console traffic can be that heavy especially since it's there for admin 
> > access
> > and not routine work
> 
> Don't we already want hypervisors to be up to date, compliant, and configured?
> Allowing serial console access will add complexity in one way or another.  In 
> my
> opinion it would be simpler to support a streaming service than a service VM.
> 
> Are there any other uses for a service VM that could justify its complexity?
> 
> > Am I missing a point here? 
> > 
> > > 
> > > Maybe we can start simple and provide console access locally only.  What
> > > sort of functionality would the vdsm api need to provide to enable only
> > > local access to the console?  Presumably, it would set up a connection and
> > > provide the user with a port/pty to use to connect locally.  For now it
> > > would be "BYOSSH - bring your own SSH" as clients would need to access the
> > > hosts with something like:
> > > 
> > > ssh -t <host> "<connect command>"
> > > 
> > > The above command could be wrapped in a vdsm-tool command.
> > > 
> > > In the future, we can take a look at extending this feature via some sort 
> > > of
> > > remote streaming API.  Keep in mind that in order for this feature to be
> > > truly useful to ovirt-engine consumers, the console connection must 
> > > survive
> > > a VM migration.  To me, this means that vdsm will need to implement a
> > > generic streaming API like libvirt has.
> > > 
> > > -- Adam Litke <a...@us.ibm.com> IBM Linux Technology Center
> > > 
> > > _______________________________________________ vdsm-devel mailing list
> > > vdsm-devel@lists.fedorahosted.org
> > > https://lists.fedorahosted.org/mailman/listinfo/vdsm-devel
> > > 
> > 
> > -- 
> > 
> > 
> > 
> > Regards, 
> > 
> > Dan Yasny Red Hat Israel +972 9769 2280
> > 
> 

-- 

David Jaša, RHCE

SPICE QE based in Brno
GPG Key:     22C33E24 
Fingerprint: 513A 060B D1B4 2A72 7F0D 0278 B125 CD00 22C3 3E24



_______________________________________________
vdsm-devel mailing list
vdsm-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/mailman/listinfo/vdsm-devel

Reply via email to