<div dir="ltr">Hi folks,<div><br></div><div>From lbaas design session I have an impression that we need to have a kind of merge of existing API and new proposed API.</div><div>E.g. the blueprint implementation should not be brand new API and DB backend. </div>
<div>So I'd say from implementation perspective we may want to minimize amount of changes for the patch that will bring existing model to a new design.</div><div>Such things as relationships M:N instead of 1:N are usually complicate things a lot, so I'd probably consider to implement them in following patches.</div>
<div>Changing 1:N to 1:1 (pools - healthmons) falls into another category: we need to deprecate this rather than remove at once.</div><div>Same applies for status/status_description: we need to deprecate those.</div><div>
<br></div><div>Thanks,</div><div>Eugene.</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, May 28, 2014 at 7:36 AM, Doug Wiegley <span dir="ltr"><<a href="mailto:dougw@a10networks.com" target="_blank">dougw@a10networks.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word;color:rgb(0,0,0);font-size:14px;font-family:Calibri,sans-serif">
<div>
<div>Hi Stephen,</div><div class="">
<div><br>
</div>
<div>> Doug: What do you think of the idea of having both IPv4 and IPv6 attributes on a 'load balancer' object? One doesn't need to have a single appliance serving both types of addresses for the listener, but there's certainly a chance (albeit small) to hit
an async scenario if they're not.</div>
</div></div>
<div><br>
</div>
<div>I made the same suggestion in the bp review , so I have no issue with it. :-) </div>
<div><br>
</div>
<div>I can think of at least one backend that pairs ip:port in their listener object, so the driver for that can implement the v4/v6 model natively with no issue (but not a true N:N). For the ones that don’t, at least the race condition outlined earlier is
limited to two objects, which is ok if the use case is common enough to warrant it. I’d still prefer that issue be handled as far up the chain as possible, but I’d be ok.</div>
<div><br>
</div>
<div>Doug</div>
<div><br>
</div>
<div><br>
</div>
<span>
<div style="font-family:Calibri;font-size:11pt;text-align:left;color:black;BORDER-BOTTOM:medium none;BORDER-LEFT:medium none;PADDING-BOTTOM:0in;PADDING-LEFT:0in;PADDING-RIGHT:0in;BORDER-TOP:#b5c4df 1pt solid;BORDER-RIGHT:medium none;PADDING-TOP:3pt">
<span style="font-weight:bold">From: </span>Stephen Balukoff <<a href="mailto:sbalukoff@bluebox.net" target="_blank">sbalukoff@bluebox.net</a>><br>
<span style="font-weight:bold">Reply-To: </span>"OpenStack Development Mailing List (not for usage questions)" <<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>><br>
<span style="font-weight:bold">Date: </span>Tuesday, May 27, 2014 at 8:42 PM<br>
<span style="font-weight:bold">To: </span>"OpenStack Development Mailing List (not for usage questions)" <<a href="mailto:openstack-dev@lists.openstack.org" target="_blank">openstack-dev@lists.openstack.org</a>><br>
<span style="font-weight:bold">Subject: </span>Re: [openstack-dev] [Neutron][LBaaS] Unanswered questions in object model refactor blueprint<br>
</div><div><div class="h5">
<div><br>
</div>
<div>
<div>
<div dir="ltr">Hi y'all!
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote">On Tue, May 27, 2014 at 12:32 PM, Brandon Logan <span dir="ltr">
<<a href="mailto:brandon.logan@rackspace.com" target="_blank">brandon.logan@rackspace.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Referencing this blueprint:<br>
<a href="https://review.openstack.org/#/c/89903/5/specs/juno/lbaas-api-and-objmodel-improvement.rst" target="_blank">https://review.openstack.org/#/c/89903/5/specs/juno/lbaas-api-and-objmodel-improvement.rst</a><br>
<br>
Anyone who has suggestions to possible issues or can answer some of<br>
these questions please respond.<br>
<br>
<br>
1. LoadBalancer to Listener relationship M:N vs 1:N<br>
The main reason we went with the M:N was so IPv6 could use the same<br>
listener as IPv4. However this can be accomplished by the user just<br>
creating a second listener and pool with the same configuration. This<br>
will end up being a bad user experience when the listener and pool<br>
configuration starts getting complex (adding in TLS, health monitors,<br>
SNI, etc). A good reason to not do the M:N is because the logic on might<br>
get complex when dealing with status. I'd like to get people's opinions<br>
on this on whether we should do M:N or just 1:N. Another option, is to<br>
just implement 1:N right now and later implement the M:N in another<br>
blueprint if it is decided that the user experience suffers greatly.<br>
<br>
My opinion: I like the idea of leaving it to another blueprint to<br>
implement. However, we would need to watch out for any major<br>
architecture changes in the time itis not implemented that could make<br>
this more difficult than what it needs to be.<br>
</blockquote>
<div><br>
</div>
<div>Is there such a thing as a 'possibly planned but not implemented design' to serve as a placeholder when considering other in-parallel blueprints and designs which could potentially conflict with the ability to implement an anticipated design like this?
(I'm guessing "no." I really wish we had a better design tracking tool than blueprint.)</div>
<div><br>
</div>
<div>Anyway, I don't have a problem with implementing 1:N right now. But, I do want to point out: The one and only common case I've seen where listener re-use actually makes a lot of sense (IPv4 and IPv6 for same listener) could be alleviated by adding separate
ipv4 and ipv6 attributes to the loadbalancer object. I believe this was shot down when people were still calling it a VIP for philosophical reasons. Are people more open to this idea now that we're calling the object a 'load balancer'? ;)<br>
<br>
Does anyone have any other use cases where listener re-use makes sense?</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
2. Pool to Health Monitor relationship 1:N vs 1:1<br>
Currently, I believe this is 1:N however it was suggested to deprecate<br>
this in favor of 1:1 by Susanne and Kyle agreed. Are there any<br>
objections to channging to 1:1?<br>
<br>
My opinion: I'm for 1:1 as long as there aren't any major reasons why<br>
there needs to be 1:N.<br>
<br>
</blockquote>
<div><br>
</div>
<div>Yep, totally on-board with 1:1 for pool and health monitor.</div>
<div> </div>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
3. Does the Pool object need a status field now that it is a pure<br>
logical object?<br>
<br>
My opinion: I don't think it needs the status field. I think the<br>
LoadBalancer object may be the only thing that needs a status, other<br>
than the pool members for health monitoring. I might be corrected on<br>
this though.<br>
</blockquote>
<div><br>
</div>
<div>So, I think it does make sense when using L7 rules. And it's specifically like this:</div>
<div><br>
</div>
<div>A pool is 'UP' if at least one non-backup member is 'UP' and 'DOWN' otherwise. This can be an important monitoring point if, for example, operations wants to be informed if the 'api pool' is down while the 'web frontend' pool is still up, in some meaningful
way (ie. other than having to sort through a potential barrage of member down notifications to see wether any members of a given pool are still up.) Also, given that member status might be more than just 'UP' and 'DOWN' (eg. "PROVISIONING" or "DRAINING" might
also be valid status types for certain kinds of back-ends.) It's harder for an operator to know whether a given pool is 'UP' or 'DOWN' without some kind of indication.</div>
<div><br>
</div>
<div>Also note that the larger the pool, the less meaningful individual members' statuses are: If you've got 1000 servers in a pool, it's probably OK if 3-4 of them are 'down' at any given time.</div>
<div><br>
</div>
<div>Having said this, if someone asks for the status of a pool, I'd be OK if the response was simply an array of statuses of each member in the pool, plus one 'summary' status (ie. as described above) and it's left to the user to do with that data whatever
makes sense for their application. This would allow one to see, for example, that a pool with no members is by definition 'DOWN'.</div>
<div><br>
</div>
<div>Are we going to allow a pool to be set administratively down? (ex. for maintenance on one pool of servers powering a listener, while other pools remain online and available.) In this case, having a response that says the pool is 'ADMIN_DOWN' probably also
makes sense.</div>
<div> </div>
<div>Doug: What do you think of the idea of having both IPv4 and IPv6 attributes on a 'load balancer' object? One doesn't need to have a single appliance serving both types of addresses for the listener, but there's certainly a chance (albeit small) to hit
an async scenario if they're not.</div>
<div><br>
</div>
<div>Vijay: I think the plan here was to come up with an use an entirely different DB schema than the legacy Neutron LBaaS, and then retro-fit backward compatibility with the old user API once the new LBaaS service is functional. I don't think anyone here
is suggesting we try to make the old schema work for the new API.</div>
<div><br>
</div>
<div>Stephen</div>
</div>
<div><br>
</div>
-- <br>
<span></span>Stephen Balukoff <br>
Blue Box Group, LLC <br>
<a href="tel:%28800%29613-4305%20x807" value="+18006134305" target="_blank">(800)613-4305 x807</a></div>
</div>
</div>
</div>
</div></div></span>
</div>
<br>_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" target="_blank">http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev</a><br>
<br></blockquote></div><br></div>