<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri","sans-serif";}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hi,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I think that the VM approach better suites us (Radware) and probably most of the other commercial load balancers.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Radware is providing a VM prepackaged with Alteon (our load balancer) functionality (I believe this is also the case with F5 and Citrix).<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">This means that we (Radware) will deploy service VMs and will not use on option to deploy service processes.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> -Sam.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Eugene Nikanorov [mailto:enikanorov@mirantis.com]
<br>
<b>Sent:</b> Thursday, February 07, 2013 6:29 PM<br>
<b>To:</b> OpenStack Development Mailing List<br>
<b>Subject:</b> [openstack-dev] [Quantum][LBaaS] Private Haproxy devices & service agent<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Hi folks,<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Currently we're in a process of implementing the suggestion of creating haproxy on the hosts rather than VMs.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">All is going pretty smooth except that we have found out that such method will put a restriction on overall deployment scheme.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Initially we though that we would have 1 service agent (or more than one listening the same MQ just to balance load on a process accessing the actual devices) <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">which could reach any balancing device using information provided by device database.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Now, when we're bringing device up on the host with agent, it appears that we can't have more than one agent running, (and effectively can use only one host to bring up haproxies)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">here is why:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">The plugin is unaware of the host agents are running on and does not distinguish them. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">So each of the agents will receive all the requests even the ones that are not addressed to it. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">This happens because there's no simple way to send a request to a specific service agent if all of them are listening the same queue (am I correct?).<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">In l3/dhcp agents it is solved by proactive polling of the plugin through quantum-client or rpc. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">I think it would create significant complexity for load balancer agent since lbaas object model is quite complex itself, plus we initially designed that plugin will call agent, not vice versa.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">We're also working on an alternative approach as we discussed on monday - to bring up VM in tenant's network. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">It appears to be a bit simpler in terms of code, than haproxy-on-host approach. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">So now we tend to go with VM approach for several reasons:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">1) it lets nova to schedule VM depending on host load. <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">2) several components (device management, agent, driver) support this approach<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">3) it goes inline with our initial design<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Please share your thoughts on this as we're going to finalize our decision tomorrow.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Also, I'm available on #openstack-dev or #quantum-lbaas if anyone is willing to discuss this.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Eugene.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>