<html><body>
<p><tt>arch-bounces@ovirt.org wrote on 12/06/2011 05:18:56 AM:<br>
<br>
&gt; From: &quot;Geoff O'Callaghan&quot; &lt;geoffocallaghan@gmail.com&gt;</tt><br>
<tt>&gt; To: arch@ovirt.org, node-devel &lt;node-devel@ovirt.org&gt;, </tt><br>
<tt>&gt; Date: 12/06/2011 05:19 AM</tt><br>
<tt>&gt; Subject: Re: oVirt Node designs for stateless operation and 3rd party plugins</tt><br>
<tt>&gt; Sent by: arch-bounces@ovirt.org</tt><br>
<tt>&gt; <br>
&gt; On Thu, 2011-12-01 at 09:32 -0500, Perry Myers wrote: <br>
&gt; &gt; the Node development team has been trying to write up rough requirements<br>
&gt; &gt; around the stateless and plugins concepts. &nbsp;And also some working high<br>
&gt; &gt; level design.<br>
&gt; &gt; <br>
&gt; &gt; They can be reviewed on these two wiki pages:<br>
&gt; &gt; <br>
&gt; &gt; <a href="http://ovirt.org/wiki/Node_plugins">http://ovirt.org/wiki/Node_plugins</a><br>
&gt; &gt; <a href="http://ovirt.org/wiki/Node_Stateless">http://ovirt.org/wiki/Node_Stateless</a><br>
&gt; &gt; <br>
&gt; &gt; Since the plugin model and the stateless model affect more than just the<br>
&gt; &gt; oVirt Node itself, we definitely would like to get input from other<br>
&gt; &gt; teams on the oVirt project.<br>
&gt; &gt; <br>
&gt; &gt; Please add comments here or directly to the wiki.<br>
&gt; &gt; <br>
&gt; <br>
&gt; Hi There<br>
&gt; <br>
&gt; I work for a *large* organisation, I have issues with the goal of a<br>
&gt; stateless design.<br>
&gt; <br>
&gt; * Being able to install without a local disk<br>
&gt; <br>
&gt; I don't see this as a compelling reason for doing anything. &nbsp; In fact,<br>
&gt; in many cases for other nameless hypervisors we use local disk as a<br>
&gt; source for logging / dumps etc.<br>
&gt; </tt><br>
<br>
<tt>The ability to operate without disk does not imply the inability to take advantage of local disk when available and appropriate. &nbsp;</tt><br>
<tt><br>
&gt; I think the goal for stateless should be instead be configuration<br>
&gt; neutral. &nbsp;ie. &nbsp;if the node is destroyed the configuration can be<br>
&gt; re-deployed without issue.</tt><br>
<tt>&gt; <br>
&gt; The other issue is that the node should continue to be re-bootable even<br>
&gt; if the configuration server is unavailable, which is a reason for having<br>
&gt; the configuration on a local disk or a san attached LUN. &nbsp; This should<br>
&gt; apply to the entire operational environment - if the engine is<br>
&gt; unavailable during a restart I should continue working the way I was<br>
&gt; configured to do so - that implies state is retained. &nbsp;It needs to be<br>
&gt; easily refreshable :-)</tt><br>
<br>
<tt>One, I would think 'the' configuration server would be a bit more robust than implied here. &nbsp;I think certain examples to date have been fairly poor, but a respectable architecture would work out well.</tt><br>
<br>
<tt>I think there is some opportunity for risk if a 'central' authority can repair configuration automagically (including restarting VMs on another node) *and* the downed node can also independently operate as last expected. &nbsp;There is a risk for split-brain scenario. &nbsp;Maybe there is a large degree of confidence in fencing and storage locking mitigating this sufficiently. </tt><br>
<tt><br>
&gt; <br>
&gt; The configuration bundle should be refreshable from a configuration<br>
&gt; server (part of the engine) and that could either be just configuration<br>
&gt; or agents or even s/w images - all would be preferred and it's pretty<br>
&gt; simple conceptually to have an active/backup image on local disk concept<br>
&gt; to allow easy rollbacks etc. &nbsp;Yes all this , except for the logging /<br>
&gt; swap could be in a usb key.<br>
&gt; <br>
&gt; The bundle should all be pushed via a SSL encrypted RESTful api using<br>
&gt; known non-priv credentials, preferably with rotating passwords or some<br>
&gt; cert based approach. &nbsp; The server should also know who previously<br>
&gt; managed it to reduce hostile attempts to change ownership of the node.<br>
&gt; <br>
&gt; * DHCP and PXE booting<br>
&gt; <br>
&gt; Many corporate security policies prohibit the use of DHCP or PXE booting<br>
&gt; servers for production environments. &nbsp; I don't see it as a big issue to<br>
&gt; boot an install image and be a good woodpecker and hit enter a few times<br>
&gt; and configure a management IP address. &nbsp; It should be possible to script<br>
&gt; the complete configuration / addition of the node after that step. &nbsp; I<br>
&gt; see the initial install as a trivial part of the complete node<br>
&gt; lifecycle.</tt><br>
<br>
<tt>I find it a big issue when configuring a few thousand servers. &nbsp;Of course, taking a bigger picture here, we can make unattended stateless image booting a secure prospect even over PXE. &nbsp;Either way from the inside, tolerating an ISO boot generally covers the same concerns as a PXE boot anyway.</tt><br>
<tt><br>
&gt; &nbsp; <br>
&gt; * DNS SRV records<br>
&gt; <br>
&gt; Sorry, &nbsp;I hate the idea. &nbsp;Large corporates have so many different teams<br>
&gt; doing little things that adding this in as a requirement simply adds<br>
&gt; delays to the deployments and opportunities for misconfiguration.</tt><br>
<br>
<tt>A capability does not imply requirement. &nbsp;Active Directory makes use of this as can Kerberos, so it's not exactly without precedent. &nbsp;I'd expect /proc/cmdline to be the typical path however. &nbsp;You could add SLP, mDNS, or roll-your-own multicast discovery to the list though.</tt><br>
<tt><br>
&gt; <br>
&gt; Having the node image and config on local disk (or usb) avoids this<br>
&gt; requirement as the node knows who manages it. &nbsp; A complete rebuild could<br>
&gt; occur and the configuration reloaded once added back into the engine.</tt><br>
<br>
<tt>Once you sanely provide for the automated 'rebuild' case, you've solved the problem for arbitrary boots anyway.</tt><br>
<tt><br>
&gt; <br>
&gt; * Previously configured state<br>
&gt; <br>
&gt; Yes, &nbsp;the node should remember the previous operational state if it<br>
&gt; can't talk to the engine. &nbsp; This is not a bad thing. &nbsp; </tt><br>
<br>
<tt>Depends on what the 'weak' point is. &nbsp;If the chances are your inability to talk to the configuration infrastructure favor a split-brain scenario, restoring last state could be a bad thing.</tt><br>
<tt><br>
&gt; <br>
&gt; * &nbsp;Configuration server<br>
&gt; <br>
&gt; This should be part of the engine. &nbsp; It should know the complete<br>
&gt; configuration of a node, right down to hypervisor 'firmware' image. &nbsp;The<br>
&gt; process should be 2-way. &nbsp;An admin should be able to 'pull' the<br>
&gt; image/config from an operational and accessible node and new<br>
&gt; configurations/images should be pushable to it.<br>
&gt; <br>
&gt; I really don't think this needs to be a separate server to the engine.<br>
&gt; <br>
&gt; * &nbsp;New bundle deployments / Upgrades<br>
&gt; <br>
&gt; The engine should keep track of what images are on a node. &nbsp; If a new<br>
&gt; config / image is to be deployed then for example, the node would be<br>
&gt; tagged with the new image. &nbsp;If the node was online, an alternate image<br>
&gt; would be pushed, vm's migrated to an alternate node and the node<br>
&gt; restarted implementing the new image when requested.<br>
&gt; <br>
&gt; If the node was offline at the time the new image was configured in the<br>
&gt; engine or if the node was built say with an old image then when it<br>
&gt; connects to the engine the image would be refreshed and the node<br>
&gt; recycled.</tt><br>
<br>
<tt>The nice thing about stateless, it's a lot more straightforward to work through these workflows.</tt><br>
<tt><br>
&gt; <br>
&gt; * Swap<br>
&gt; <br>
&gt; Local disk swap is likely to be required. &nbsp;Overcommit is common and SSD<br>
&gt; local disk is something that is quite useful :-)</tt><br>
<br>
<tt>Flexibility is good, support swap and non-swap cases. &nbsp;In fact, stateless is a good match for this, you can use the local disk for things like distributed filesystems, logging and swap, the OS image isn't bound to disk and neither is the configuration.</tt><br>
<tt><br>
&gt; <br>
&gt; So in summary, &nbsp;I prefer to think that the target should be<br>
&gt; configuration neutrality or even just plain old distributed<br>
&gt; configuration from a central source rather than completely stateless.<br>
&gt; The goal should be toleration of complete destruction of a node image<br>
&gt; and configuration and a simple process to re-add it and automatically<br>
&gt; re-apply the configuration/sw image.</tt><br>
<br>
<tt>I think a bullet-proof configuration infrastructure that makes stateless just as good as stateful handles the failure cases a lot more smoothly. &nbsp;Emphasis on bulletproof.</tt><br>
<tt><br>
&gt; <br>
&gt; Just some thoughts for discussion / abuse ;-)<br>
&gt; <br>
&gt; Tks<br>
&gt; Geoff<br>
&gt; <br>
&gt; &gt; Cheers,<br>
&gt; &gt; <br>
&gt; &gt; Perry<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; Arch mailing list<br>
&gt; &gt; Arch@ovirt.org<br>
&gt; &gt; <a href="http://lists.ovirt.org/mailman/listinfo/arch">http://lists.ovirt.org/mailman/listinfo/arch</a><br>
&gt; <br>
&gt; <br>
&gt; _______________________________________________<br>
&gt; Arch mailing list<br>
&gt; Arch@ovirt.org<br>
&gt; <a href="http://lists.ovirt.org/mailman/listinfo/arch">http://lists.ovirt.org/mailman/listinfo/arch</a><br>
&gt; <br>
</tt></body></html>