<html><head><meta http-equiv="Content-Security-Policy" content="script-src 'self'; img-src * cid: data:;"><meta http-equiv="Content-Security-Policy" content="script-src 'self'; img-src * cid: data:;"><meta http-equiv="Content-Security-Policy" content="script-src 'self'; img-src * cid: data:;"></head><body style="background-color: rgb(255, 255, 255); background-image: initial; line-height: initial;"><div id="response_container_BBPPID" style="outline:none;font-size:initial;font-family:"Calibri","Slate Pro",sans-serif,"sans-serif"" dir="auto" contenteditable="false"> <div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">I'm CCing the user list to get some feed back as to if the community would like me to write a howto for the site. It would take me a day or two to do it so before I put in the effort I would like to know if there is the intrest level to justify the work</div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"><br></div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"> Well I had some luck doing it.</div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">To be clear right now I am not currently working with spacewalk so this will be off the top of my head.</div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"><br></div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">First of all yes it can be partially done. There are a few services which can only be done on one host at a time but the web interface can be clustered behind a sticky or a non sticky load balancer.</div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">By sticky I mean that the load balancer dynamically creates persistent dnat rules to route clients to the same server in the backend.</div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">The key to load balancing Web interface API and cobbler is to use either a clustered file system or NAS to share some directories between the hosts. The list of directories that need to be clustered I actually originally found in the RHN Satellite 5 documentation on access.redhat.com. It turns out that that part is very easy to do and is actually talked about in the documentation in active passive clustering the only thing missing is the load balancer I personally used keep a lived for that because we wised it before a lot of other things as well. Also in my case I used a gluster Nas cluster since my site was mission critical and we used it for several other things like RHEV as well.</div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"><br></div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">Now for the tricky parts.</div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">Taskomatic (the scheduler based on quartz) and the rhnsearchd ( an index cache builder) can only be run on one host at a time. The reason for this is because rhnsearchd is a dated design that writes the cache to files on disk which are then read by the Java API as needed there are a lot of stock tools out there which can do this better but it's deep embedded into the spacewalk code so it would be hard to replace.</div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">Taskomatic is based on quartz which is a Java library for rolling your own scheduler it's very easy to code to but sadly it's capabilities are kind of limited and every time I've seen it used in a project it has been buggy frankly if my java coding skills were better I would probably writ a proposed patch to replace it with on scheduler by sos berlin.</div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"><br></div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"><br></div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">The next part that is really tricky is osa-dispacher</div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">The trick here is clustering jabber which is doable, that said I never got around to it but I did do the first stage which is moving the sessions from the Berkley dB files to the PostgreSQL database which also interestingly is how you stablize it because the bug that causes the database to break <span style="font-size: initial; text-align: initial; font-family: Calibri, "Slate Pro", sans-serif, sans-serif;">is tied to the Berkley dB backend essentially so switching it to a PostgreSQL backend fixes is and allows for clustering. The next step is jabber itself I never got to this but jabber does support  clustering in the sense that a message can be posted to by a client of one server then transmuted to one or more clients on an other server.</span></div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"><span style="font-size: initial; text-align: initial; font-family: Calibri, "Slate Pro", sans-serif, sans-serif;"><br></span></div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"><span style="font-size: initial; text-align: initial; font-family: Calibri, "Slate Pro", sans-serif, sans-serif;">Now for connecting clients you could use halinux paranah or keepalived. Myself I used keepalived with scripts for the master slave notify to start and stop taskomatic and rhnsearchd and an added monitoring script f</span><span style="font-size: initial; text-align: initial; font-family: Calibri, "Slate Pro", sans-serif, sans-serif;">or the other services which would try to restart fails services but if one of them failed to restart after the 3rd check it would fail over. The trick here is </span></div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"><span style="font-size: initial; text-align: initial; font-family: Calibri, "Slate Pro", sans-serif, sans-serif;">that the monitoring script should only check taskomatic and rhnsearchd while the box is in the master state. Additionally if using keepalived remember to set both to "state=slave" and set nopreempt to prevent it from continually trying go back to a failed master. You also need a check for the https load balancer as well </span></div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"><span style="font-size: initial; text-align: initial; font-family: Calibri, "Slate Pro", sans-serif, sans-serif;"><br></span></div><div name="BB10" id="BB10_response_div_BBPPID" dir="auto" style="width: 100%; padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);"><span style="font-size: initial; text-align: initial; font-family: Calibri, "Slate Pro", sans-serif, sans-serif;"> Sent from my BlackBerry - the most secure mobile device</span></div></div><div id="_original_msg_header_BBPPID" dir="auto">                                                                                                                                             <table id="_pHCWrapper_BBPPID" width="100%" style="background-color: white; border-spacing: 0px; display: table; outline: none;" contenteditable="false"><tbody><tr><td colspan="2" style="padding: initial; font-size: initial; text-align: initial; background-color: rgb(255, 255, 255);">                           <div style="border-right: none; border-bottom: none; border-left: none; border-image: initial; border-top: 1pt solid rgb(181, 196, 223); padding: 3pt 0in 0in; font-family: Tahoma, "BB Alpha Sans", "Slate Pro"; font-size: 10pt;">  <div id="from"><b>From:</b> Chris.Bone@concur.com</div><div id="sent"><b>Sent:</b> November 27, 2017 5:45 PM</div><div id="to"><b>To:</b> prmarino1@gmail.com</div><div id="subject"><b>Subject:</b> Redundant spacewalk servers</div></div></td></tr></tbody></table> <br> </div><!--start of _originalContent --><div name="BB10" dir="auto" style="background-image: initial; line-height: initial; outline: none;" contenteditable="false"><div id="ssc18934"><style>#ssc18934 p.MsoNormal,#ssc18934 li.MsoNormal,#ssc18934 div.MsoNormal{margin: 0in;margin-bottom: 1.0E-4pt;font-size: 12pt;font-family: Calibri;}#ssc18934 a:link,#ssc18934 span.MsoHyperlink{color: rgb(5, 99, 193);text-decoration: underline;}#ssc18934 a:visited,#ssc18934 span.MsoHyperlinkFollowed{color: rgb(149, 79, 114);text-decoration: underline;}#ssc18934 span.msoIns{text-decoration: underline;color: teal;}#ssc18934 .MsoChpDefault{font-family: Calibri;}#ssc18934 div.WordSection1{}</style><div><div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11pt">Hello Paul,</span></p>
<p class="MsoNormal"><span style="font-size:11pt">I found a post from 2012 where you said you were going to try setting up redundant live/live spacewalk servers using a shared postgresql database.</span></p>
<p class="MsoNormal"><span style="font-size:11pt">How did it go?!</span></p>
<p class="MsoNormal"><span style="font-size:11pt">I am in the process of moving to a live/standby configuration, but would be much happier with live/live with a standby database. I can’t see why it would not work, but also can’t see a good way to show that
 there is no corruption going on.</span></p>
<p class="MsoNormal"><span style="font-size:11pt"> </span></p>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black">-- </span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black">Regards,</span></p>
</div>
<p class="MsoNormal"><span style="font-size:10.5pt;color:black">Chris Bone</span></p>
</div><br><hr><font face="Arial" color="Gray" size="1"><br>
This e-mail message is authorized for use by the intended recipient only and may contain information that is privileged and confidential. If you received this message in error, please call us immediately at <a href="tel:(425)5905000">(425) 590-5000</a> and ask to speak to the message sender.
 Please do not copy, disseminate, or retain this message unless you are the intended recipient. In addition, to ensure the security of your data, please do not send any unencrypted credit card or personally identifiable information to this email address. Thank
 you.<br>
</font></div>
</div><!--end of _originalContent --></div></body></html>