<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>ǝɹǝɥ ʇxǝʇ lnɟʇɥƃısuı
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

try {
var pageTracker = _gat._getTracker("UA-8156370-3");
pageTracker._trackPageview();
} catch(err) {}</description><title>The Cluster Guy</title><generator>Tumblr (3.0; @theclusterguy)</generator><link>http://theclusterguy.clusterlabs.org/</link><item><title>New Pacemaker Release Series</title><description>&lt;p&gt;A number of new branches have been created in the last few days which are integral to how we plan to add new features in a controlled manner.&lt;/p&gt;

&lt;p&gt;Current set of branches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1.0 - The existing stable series&lt;/li&gt;
&lt;li&gt;1.1 - The current feature series&lt;/li&gt;
&lt;li&gt;1.2 - The next stable series (expected Q4 2010)&lt;/li&gt;
&lt;li&gt;devel - Where new features are added&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The idea is that &lt;em&gt;1.0&lt;/em&gt; will continue receive only bugfixes (the amount hopefully continuing to reduce over time) and all new features go first into &lt;em&gt;devel&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1.1&lt;/em&gt; will be the merge point, primarily receiving bug fixes for the new features we pulled in from &lt;em&gt;devel&lt;/em&gt; (at least two weeks before a &lt;em&gt;1.1&lt;/em&gt; release).&lt;/p&gt;

&lt;p&gt;The intention is to pursue bi-monthly releases of &lt;em&gt;1.1&lt;/em&gt; over the next 6-12 months until we can offer a set of compelling new features, a sane way to use them, and rock-solid stability.&lt;/p&gt;

&lt;p&gt;At that time, we will freeze development and release it as 1.2.0&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_kz4mgizPlt1qzagr8.jpg" alt="Here is the repository layout in graphical form "/&gt;&lt;/p&gt;

&lt;h3&gt;But Can I use it in Production?&lt;/h3&gt;

&lt;p&gt;Cluster admins are naturally a cautious bunch, so in order to make &lt;em&gt;1.1&lt;/em&gt; more palatable, we have also created two new schemas.&lt;/p&gt;

&lt;p&gt;Schemas can be thought of as a contract between the developers and admins.
They are a declaration of what we support.&lt;/p&gt;

&lt;p&gt;The set is the new set of validation types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pacemaker-1.0&lt;/li&gt;
&lt;li&gt;pacemaker-1.1 &lt;/li&gt;
&lt;li&gt;pacemaker-1.2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;pacemaker-1.0&lt;/em&gt; is (and will remain) &lt;strong&gt;identical&lt;/strong&gt; to what people are using now&lt;/p&gt;

&lt;p&gt;When new features are added, their configuration syntax will first appear in &lt;em&gt;pacemaker-1.1&lt;/em&gt;.
If, based on your feedback, a feature’s syntax needs to be modified we will change it here and solicit further feedback.&lt;/p&gt;

&lt;p&gt;Once a feature has been locked down and become stable, its configuration pieces will be added to &lt;em&gt;pacemaker-1.2&lt;/em&gt;.
Once a feature appears in &lt;em&gt;pacemaker-1.2&lt;/em&gt;, we will not change its syntax in any &lt;em&gt;1.1&lt;/em&gt; or &lt;em&gt;1.2&lt;/em&gt; release.&lt;/p&gt;

&lt;h4&gt;What does this mean?&lt;/h4&gt;

&lt;p&gt;It means that when used with the &lt;em&gt;pacemaker-1.0&lt;/em&gt; or &lt;em&gt;pacemaker-1.2&lt;/em&gt; schemas, &lt;em&gt;1.1&lt;/em&gt; can be safely used in production in the same manner as &lt;em&gt;1.0&lt;/em&gt; is today.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the existing syntax is all you need, consider &lt;em&gt;1.1&lt;/em&gt; with the &lt;em&gt;pacemaker-1.0&lt;/em&gt; schema.&lt;/li&gt;
&lt;li&gt;If you want to try a new stable feature, use &lt;em&gt;1.1&lt;/em&gt; with the &lt;em&gt;pacemaker-1.2&lt;/em&gt; schema.&lt;/li&gt;
&lt;li&gt;If you want to try a new experimental feature, use &lt;em&gt;1.1&lt;/em&gt; with the &lt;em&gt;pacemaker-1.1&lt;/em&gt; schema.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Is 1.0 Still Supported?&lt;/h3&gt;

&lt;p&gt;Yes. 1.0 i still supported and will recieve all relevant bug fixes until at least 2012.
See our &lt;a href="http://www.clusterlabs.org/wiki/Releases"&gt;releases&lt;/a&gt; page.&lt;/p&gt;

&lt;h3&gt;How can I Install it?&lt;/h3&gt;

&lt;p&gt;Users of RPM-based distributions will be able to install in the usual manner. However, to avoid forcing everyone to upgrade, packages will be located under:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;a href="http://www.clusterlabs.org/rpm-next"&gt;http://www.clusterlabs.org/rpm-next&lt;/a&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;At this time the intention is to only produce packages for the most recent openSUSE (11.2), Fedora (12), and EPEL (5) based distributions. 
If you would like to try 1.1 but your distribution/version is not listed, please contact the project and we’ll see what we can do.&lt;/p&gt;

&lt;p&gt;Packages should be available in the next week “or so”.&lt;/p&gt;

&lt;h3&gt;Identified Areas of Development&lt;/h3&gt;

&lt;h4&gt;Existing&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;New stonith daemon (configuration is unchanged), including:

&lt;ul&gt;
&lt;li&gt;support for RHCS Stonith Agents&lt;/li&gt;
&lt;li&gt;cluster-wide notifications (that allow the cluster to make more intelligent decisions)&lt;/li&gt;
&lt;li&gt;ability to perform multiple fencing operations in parallel (faster recovery)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Service placement influenced by the physical resources (RAM, CPU, etc) required by the service (and offered by the host)&lt;/li&gt;
&lt;li&gt;A new tool for simulating failures and the cluster’s reaction to them&lt;/li&gt;
&lt;li&gt;Tell the cluster to serialize an otherwise unrelated a set of resource actions (eg. Xen migrations) &lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;Planned&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Failover domains, an easy way to specify ordered preferences for a set of hosts&lt;/li&gt;
&lt;li&gt;ACLs, the ability to restrict read/write access to the configuration based on users and groups&lt;/li&gt;
&lt;li&gt;Improvements to the System Health feature&lt;/li&gt;
&lt;li&gt;Freeze/thaw, an easy way to ensure a consistent backup of data in use by distributed systems.&lt;/li&gt;
&lt;li&gt;The ability to monitor services on non-cluster nodes (such as VMs)&lt;/li&gt;
&lt;/ol&gt;</description><link>http://theclusterguy.clusterlabs.org/post/441442543</link><guid>http://theclusterguy.clusterlabs.org/post/441442543</guid><pubDate>Thu, 11 Mar 2010 17:55:12 +0100</pubDate><category>announce</category></item><item><title>Pacemaker removed from OBS</title><description>&lt;p&gt;Today I removed Pacemaker from server:ha-clustering on the openSUSE build service.&lt;/p&gt;

&lt;p&gt;I lost patience with the service some time ago and the project has been providing pre-built packages from &lt;a href="http://www.clusterlabs.org/rpm"&gt;cluster labs&lt;/a&gt; ever since (see our &lt;a href="http://www.clusterlabs.org/wiki/Install"&gt;install page&lt;/a&gt; for more details).&lt;/p&gt;

&lt;p&gt;It seems no-one else has had the time or patience to keep the build service updated since my departure so, after noticing their age and the fact that they no longer even build on the majority of targets, I made the decision to remove them.&lt;/p&gt;

&lt;p&gt;Hopefully this will help avoid confusing those wanting the latest Pacemaker software.&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/370384760</link><guid>http://theclusterguy.clusterlabs.org/post/370384760</guid><pubDate>Thu, 04 Feb 2010 11:42:00 +0100</pubDate><category>announce</category></item><item><title>Pacemaker 1.0.7 Released</title><description>&lt;p&gt;The latest installment of the &lt;a href="http://www.clusterlabs.org/wiki/Pacemaker"&gt;Pacemaker&lt;/a&gt; 1.0 stable series is now ready for general consumption.&lt;/p&gt;

&lt;p&gt;In this release, we’ve made a number improvements to clone handling - particularly the way ordering constraints are processed - as well as some really nice improvements to the shell.&lt;/p&gt;

&lt;p&gt;The next 1.0 release is anticipated to be in mid-March.
We will be switching to a bi-monthly release schedule to begin focusing on development for the next stable series (more details soon).
If you have feature requests, now is the time to voice them and/or provide patches :-)&lt;/p&gt;

&lt;p&gt;Pre-built packages for Pacemaker and it’s immediate dependancies are currently building and will be available for openSUSE, SLES, Fedora, RHEL, CentOS from the &lt;a href="http://www.clusterlabs.org/rpm/"&gt;ClusterLabs Build Area&lt;/a&gt; shortly.&lt;/p&gt;

&lt;p&gt;Debian users should check for updates &lt;a href="http://clusterlabs.org/wiki/Install#Debian"&gt;Martin’s repo&lt;/a&gt; over the coming days and Ubuntu fans can visit &lt;a href="https://edge.launchpad.net/~ubuntu-ha-maintainers/+archive/ppa"&gt;LaunchPad&lt;/a&gt; for 8.04 and 9.10 packages.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://hg.clusterlabs.org/pacemaker/stable-1.0/archive/Pacemaker-1.0.7.tar.bz2"&gt;source tarball&lt;/a&gt; is also available directly from Mercurial.&lt;/p&gt;

&lt;p&gt;General installation instructions are available at from the &lt;a href="http://clusterlabs.org/wiki/Install"&gt;ClusterLabs wiki&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Release Statistics&lt;/h3&gt;

&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Changesets&lt;/b&gt;&lt;/td&gt;
        &lt;td&gt; 193 &lt;/td&gt;
    &lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Diff&lt;/b&gt;&lt;/td&gt;
        &lt;td&gt; 220 files changed, 15933 insertions(+), 8782 deletions(-)&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Changes of note since Pacemaker-1.0.6&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;High: PE: Bug 2213 - Ensure groups process location constraints so that clone-node-max works for cloned groups&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2153 - non-clones should not restart when clones stop/start on other nodes&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2209 - Clone ordering should be able to prevent startup of dependant clones&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2216 - Correctly identify the state of anonymous clones when deciding when to probe&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2225 - Operations that require fencing should wait for ‘stonith_complete’ not ‘all_stopped’.&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2225 - Prevent clone peers from stopping while another is instance is (potentially) being fenced&lt;/li&gt;
&lt;li&gt;High: PE: Correctly anti-colocate with a group&lt;/li&gt;
&lt;li&gt;High: PE: Correctly unpack ordering constraints for resource sets to avoid graph loops&lt;/li&gt;
&lt;li&gt;High: Tools: crm: load help from crm_cli.txt&lt;/li&gt;
&lt;li&gt;High: Tools: crm: resource sets (bnc#550923)&lt;/li&gt;
&lt;li&gt;High: Tools: crm: support for comments (LF 2221)&lt;/li&gt;
&lt;li&gt;High: Tools: crm: support for description attribute in resources/operations (bnc#548690)&lt;/li&gt;
&lt;li&gt;High: Tools: hb2openais: add EVMS2 CSM processing (and other changes) (bnc#548093)&lt;/li&gt;
&lt;li&gt;High: Tools: hb2openais: do not allow empty rules, clones, or groups (LF 2215)&lt;/li&gt;
&lt;li&gt;High: Tools: hb2openais: refuse to convert pure EVMS volumes&lt;/li&gt;
&lt;li&gt;High: cib: Ensure the loop for login message terminates&lt;/li&gt;
&lt;li&gt;High: cib: Finally fix reliability of receiving large messages over remote plaintext connections&lt;/li&gt;
&lt;li&gt;High: cib: Fix remote notifications&lt;/li&gt;
&lt;li&gt;High: cib: For remote connections, default to CRM_DAEMON_USER since thats the only one that the cib can validate the password for using PAM&lt;/li&gt;
&lt;li&gt;High: cib: Remote plaintext - Retry sending parts of the message that did not fit the first time&lt;/li&gt;
&lt;li&gt;High: crmd: Ensure batch-limit is correctly enforced&lt;/li&gt;
&lt;li&gt;High: crmd: Ensure we have the latest status after a transition abort&lt;/li&gt;
&lt;li&gt;High (bnc#547579,547582): Tools: crm: status section editing support&lt;/li&gt;
&lt;li&gt;High: shell: Add allow-migrate as allowed meta-attribute (bnc#539968)&lt;/li&gt;
&lt;li&gt;Medium: Build: Do not automatically add -L/lib, it could cause 64-bit arches to break&lt;/li&gt;
&lt;li&gt;Medium: PE: Bug lf#2206 - rsc_order constraints always use score at the top level&lt;/li&gt;
&lt;li&gt;Medium: PE: Only complain about target-role=master for non m/s resources&lt;/li&gt;
&lt;li&gt;Medium: PE: Prevent non-multistate resources from being promoted through target-role&lt;/li&gt;
&lt;li&gt;Medium: PE: Provide a default action for resource-set ordering&lt;/li&gt;
&lt;li&gt;Medium: PE: Silently fix requires=fencing for stonith resources so that it can be set in op_defaults&lt;/li&gt;
&lt;li&gt;Medium: Tools: Bug lf#2286 - Allow the shell to accept template parameters on the command line&lt;/li&gt;
&lt;li&gt;Medium: Tools: Bug lf#2307 - Provide a way to determin the nodeid of past cluster members&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: add update method to template apply (LF 2289)&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: direct RA interface for ocf class resource agents (LF 2270)&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: direct RA interface for stonith class resource agents (LF 2270)&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: do not add score which does not exist&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: do not consider warnings as errors (LF 2274)&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: do not remove sets which contain id-ref attribute (LF 2304)&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: drop empty attributes elements&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: exclude locations when testing for pathological constraints (LF 2300)&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: fix exit code on single shot commands&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: fix node delete (LF 2305)&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: implement -F (—force) option&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: rename status to cibstatus (LF 2236)&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: revisit configure commit&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: stay in crm if user specified level only (LF 2286)&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: verify changes on exit from the configure level&lt;/li&gt;
&lt;li&gt;Medium: ais: Some clients such as gfs_controld want a cluster name, allow one to be specified in corosync.conf&lt;/li&gt;
&lt;li&gt;Medium: cib: Clean up logic for receiving remote messages&lt;/li&gt;
&lt;li&gt;Medium: cib: Create valid notification control messages&lt;/li&gt;
&lt;li&gt;Medium: cib: Indicate where the remote connection came from&lt;/li&gt;
&lt;li&gt;Medium: cib: Send password prompt to stderr so that stdout can be redirected&lt;/li&gt;
&lt;li&gt;Medium: cts: Fix rsh handling when stdout is not required&lt;/li&gt;
&lt;li&gt;Medium: doc: Fill in the section on removing a node from an AIS-based cluster&lt;/li&gt;
&lt;li&gt;Medium: doc: Update the docs to reflect the 0.6/1.0 rolling upgrade problem&lt;/li&gt;
&lt;li&gt;Medium: doc: Use Publican for docbook based documentation&lt;/li&gt;
&lt;li&gt;Medium: fencing: stonithd: add metadata for stonithd instance attributes (and support in the shell)&lt;/li&gt;
&lt;li&gt;Medium: fencing: stonithd: ignore case when comparing host names (LF 2292)&lt;/li&gt;
&lt;li&gt;Medium: tools: Make crm_mon functional with remote connections&lt;/li&gt;
&lt;li&gt;Medium: xml: Add stopped as a supported role for operations&lt;/li&gt;
&lt;li&gt;Medium: xml: Bug bnc#552713 - Treat node unames as text fields not IDs&lt;/li&gt;
&lt;li&gt;Medium: xml: Bug lf#2215 - Create an always-true expression for empty rules when upgrading from 0.6&lt;/li&gt;
&lt;/ul&gt;</description><link>http://theclusterguy.clusterlabs.org/post/340780359</link><guid>http://theclusterguy.clusterlabs.org/post/340780359</guid><pubDate>Mon, 18 Jan 2010 12:38:47 +0100</pubDate><category>announce</category></item><item><title>Ubuntu looking for Pacemaker testers</title><description>&lt;p&gt;Ubuntu is looking to switch its supported cluster stack to Corosync+Pacemaker and has put out a “&lt;a href="http://blog.init.hr/?p=69"&gt;Call for testers&lt;/a&gt;”.&lt;br/&gt;
Check out the link if this is something you’re interested in.&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/336017772</link><guid>http://theclusterguy.clusterlabs.org/post/336017772</guid><pubDate>Fri, 15 Jan 2010 18:22:52 +0100</pubDate></item><item><title>Pre-Announce: End of Pacemaker 0.6 support is near</title><description>&lt;p&gt;Unless there are violent objections, I plan to officially stop supporting 0.6 at the end of February.&lt;/p&gt;

&lt;p&gt;Since I’ve not seeing any bugs reported for some time, it seems that anyone still using 0.6 is happy with it for their workload.&lt;/p&gt;

&lt;p&gt;Also, 1.0 has been out for over a year now and contains significant improvements over 0.6 including&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A unified shell that hides the XML scaffolding&lt;/li&gt;
&lt;li&gt;Migration thresholds that are easy to configure and understand&lt;/li&gt;
&lt;li&gt;Failures can be ignored after a specified period of time&lt;/li&gt;
&lt;li&gt;Ability to specify defaults for resource an operation parameters&lt;/li&gt;
&lt;li&gt;Man pages for all CLI tools&lt;/li&gt;
&lt;li&gt;Up-to-date online documentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;a href="http://www.clusterlabs.org/doc/en-US/Pacemaker/1.0/html/Pacemaker_Explained/index.html"&gt;online documentation&lt;/a&gt; has more details on whats new/different in &lt;a href="http://www.clusterlabs.org/doc/en-US/Pacemaker/1.0/html/Pacemaker_Explained/ap-changes.html"&gt;Appendix C&lt;/a&gt; and detailed instructions for upgrading in &lt;a href="http://www.clusterlabs.org/doc/en-US/Pacemaker/1.0/html/Pacemaker_Explained/ap-upgrade.html"&gt;Appendix E&lt;/a&gt;.&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/330462486</link><guid>http://theclusterguy.clusterlabs.org/post/330462486</guid><pubDate>Tue, 12 Jan 2010 13:18:00 +0100</pubDate></item><item><title>New Documentation Formats</title><description>&lt;p&gt;I’m pleased to report that the core Pacemaker documentation is now available in PDF, HTML (chunked and single page) and even TXT formats.&lt;/p&gt;

&lt;p&gt;The old &lt;a href="http://www.apple.com/iwork/pages/"&gt;Pages.app&lt;/a&gt; sources have been replaced with &lt;a href="http://en.wikipedia.org/wiki/DocBook"&gt;DocBook&lt;/a&gt; which allows them to be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;published in a variety of formats&lt;/li&gt;
&lt;li&gt;kept under version control&lt;/li&gt;
&lt;li&gt;included in the packages&lt;/li&gt;
&lt;li&gt;updated by anybody&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, we’re using &lt;a href="https://fedorahosted.org/publican/"&gt;Publican&lt;/a&gt; to produce the final result so supporting multiple languages should be now possible.
Let us know if you’re interested in doing some translation :-)&lt;/p&gt;

&lt;p&gt;The primary location for Pacemaker documentation will remain &lt;a href="http://www.clusterlabs.org/wiki/Documentation"&gt;http://www.clusterlabs.org/wiki/Documentation&lt;/a&gt; however there is also a index of the generated documentation at &lt;a href="http://www.clusterlabs.org/doc/"&gt;http://www.clusterlabs.org/doc/&lt;/a&gt; which includes the date and version from which it was generated.&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/246103679</link><guid>http://theclusterguy.clusterlabs.org/post/246103679</guid><pubDate>Mon, 16 Nov 2009 16:56:08 +0100</pubDate></item><item><title>Pacemaker 1.0.6 Released</title><description>&lt;p&gt;The next installment of the &lt;a href="http://www.clusterlabs.org/wiki/Pacemaker"&gt;Pacemaker&lt;/a&gt; 1.0 stable series is now ready for general consumption.&lt;/p&gt;

&lt;p&gt;In addition to further polishing of the crm shell and CLI tools, this is the first release to support CoroSync (version 1.1.2 or greater is required).&lt;/p&gt;

&lt;p&gt;The ”Pacemaker Explained” reference has also been converted to docbook and is included as part of the tarball (and pre-built packages if the relevant stylesheets are present at build time).&lt;/p&gt;

&lt;p&gt;Pre-built packages for Pacemaker and it’s immediate dependancies will be available for openSUSE, SLES, Fedora, RHEL, CentOS from the &lt;a href="http://software.opensuse.org/download/server:/ha-clustering"&gt;OpenSUSE Build Service&lt;/a&gt; in the next couple of days depending in how overloaded it is.&lt;/p&gt;

&lt;p&gt;Debian users should check for updates &lt;a href="http://clusterlabs.org/wiki/Install#Debian"&gt;Martin’s repo&lt;/a&gt; over the coming days and Ubuntu fans can visit &lt;a href="https://edge.launchpad.net/~ubuntu-ha-maintainers/+archive/ppa"&gt;LaunchPad&lt;/a&gt; for 8.04 and 9.10 packages.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://hg.clusterlabs.org/pacemaker/stable-1.0/archive/Pacemaker-1.0.6.tar.bz2"&gt;source tarball&lt;/a&gt; is also available directly from Mercurial.&lt;/p&gt;

&lt;p&gt;General installation instructions are available at from the &lt;a href="http://clusterlabs.org/wiki/Install"&gt;ClusterLabs wiki&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Release Statistics&lt;/h3&gt;

&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Changesets&lt;/b&gt;&lt;/td&gt;
        &lt;td&gt; 185 &lt;/td&gt;
    &lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Diff&lt;/b&gt;&lt;/td&gt;
        &lt;td&gt; 331 files changed, 13858 insertions(+), 3277 deletions(-)&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Project Administrivia&lt;/h3&gt;

&lt;p&gt;We may switch to a bi-monthly release cycle.
If you have any thoughts on this (for or against), please get in touch.&lt;/p&gt;

&lt;h3&gt;Changes of note since Pacemaker-1.0.5&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;High: cib: Correctly clean up when both plaintext and tls remote ports are requested&lt;/li&gt;
&lt;li&gt;High: ais: Avoid excessive load by checking for dead children every 1s (instead of 100ms)&lt;/li&gt;
&lt;li&gt;High: ais: Bug lf#2199 - Prevent expected-quorum-votes from being populated with garbage&lt;/li&gt;
&lt;li&gt;High: ais: Bug rh#525589 - Prevent shutdown deadlocks when running on CoroSync&lt;/li&gt;
&lt;li&gt;High: ais: Gracefully handle changes to the AIS nodeid&lt;/li&gt;
&lt;li&gt;High: ais: Prevent deadlock - dont try to release IPC message if the connection failed&lt;/li&gt;
&lt;li&gt;High: ais: Ubuntu needs a leading zero for directory modes&lt;/li&gt;
&lt;li&gt;High: cib: For validation errors, send back the full CIB so the client can display the errors&lt;/li&gt;
&lt;li&gt;High: cib: Prevent use-after-free for remote plaintext connections&lt;/li&gt;
&lt;li&gt;High: cib: Repair the ability to connect to the cluster from non-cluster machines&lt;/li&gt;
&lt;li&gt;High: Core: Bug lf#2169 - Allow dtd/schema validation to be disabled&lt;/li&gt;
&lt;li&gt;High: crmd: Bug bnc#527530 - Wait for the transition to complete before leaving S_TRANSITION_ENGINE&lt;/li&gt;
&lt;li&gt;High: crmd: Bug lf#2201 - Guard against possible cause of a segfault&lt;/li&gt;
&lt;li&gt;High: crmd: Prevent use-after-free with LOG_DEBUG_3&lt;/li&gt;
&lt;li&gt;High: Extras: Add sctp support to the controld RA&lt;/li&gt;
&lt;li&gt;High: PE: Bug bnc#515172 - Provide better defaults for lt(e) and gt(e) comparisions&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2106 - Not all anonymous clone children are restarted after configuration change&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2170 - stop-all-resources option had no effect&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2171 - Prevent groups from starting if they depend on a complex resource which can’t&lt;/li&gt;
&lt;li&gt;High: PE: Bug lf#2197 - Allow master instances placemaker to be influenced by colocation constraints&lt;/li&gt;
&lt;li&gt;High: PE: Disable resource management if stonith-enabled=true and no stonith resources are defined&lt;/li&gt;
&lt;li&gt;High: PE: Don’t include master score if it would prevent allocation&lt;/li&gt;
&lt;li&gt;High: PE: Make sure promote/demote pseudo actions are created correctly&lt;/li&gt;
&lt;li&gt;High: PE: Prevent target-role from promoting more than master-max instances&lt;/li&gt;
&lt;li&gt;High: shell: Add allow-migrate as allowed meta-attribute (bnc#539968)&lt;/li&gt;
&lt;li&gt;High: tools: bnc#547579,547582 - crm: status section editing support&lt;/li&gt;
&lt;li&gt;High: Tools: crm: add semantic checks depending on the meta-data from resource agents&lt;/li&gt;
&lt;li&gt;High: Tools: crm: improve processing of group edit and constraints&lt;/li&gt;
&lt;li&gt;High: Tools: crm: improve the edit command&lt;/li&gt;
&lt;li&gt;High: Tools: pingd - Fix a number of critical bugs (patch via Kazunori INOUE)&lt;/li&gt;
&lt;li&gt;Med: xml: Mask the “symmetrical” attribute on rsc_colocation constraints (bnc#540672)&lt;/li&gt;
&lt;li&gt;Medium (bnc#520707): Tools: crm: new templates ocfs2 and clvm&lt;/li&gt;
&lt;li&gt;Medium (LF 2164): Tools: hb_report: expand the crm status command&lt;/li&gt;
&lt;li&gt;Medium (LF 2184): Tools: crm: extend ptest command&lt;/li&gt;
&lt;li&gt;Medium (LF 2185): Tools: crm: add resource promote/demote commands&lt;/li&gt;
&lt;li&gt;Medium (LF 2198): Tools: crm: add node fence command&lt;/li&gt;
&lt;li&gt;Medium: ais: Attempt to enable core file generation if it was disabled&lt;/li&gt;
&lt;li&gt;Medium: ais: Include version details in plugin name&lt;/li&gt;
&lt;li&gt;Medium: Build: Re-enable asciidoc documentation&lt;/li&gt;
&lt;li&gt;Medium: Build: Shell templates arent documentation&lt;/li&gt;
&lt;li&gt;Medium: cib: Remove delay for remote plaintext connections&lt;/li&gt;
&lt;li&gt;Medium: Core: Disable syslog for any process that doesn’t want its arguments logged&lt;/li&gt;
&lt;li&gt;Medium: crmd: Requery the resource metadata after every start operation&lt;/li&gt;
&lt;li&gt;Medium: cts: add —benchmark for scalability tests&lt;/li&gt;
&lt;li&gt;Medium: cts: Prepare for corosync testing&lt;/li&gt;
&lt;li&gt;Medium: Extra: Include SNMP MIB file for crm_mon (from Michael Schwartzkopff)&lt;/li&gt;
&lt;li&gt;Medium: PE: Bug lf#2178 - Indicate unmanaged clones&lt;/li&gt;
&lt;li&gt;Medium: PE: Bug lf#2180 - Include node information for all failed ops&lt;/li&gt;
&lt;li&gt;Medium: PE: Bug lf#2189 - Incorrect error message when unpacking simple ordering constraint&lt;/li&gt;
&lt;li&gt;Medium: PE: Correctly log resources that would like to start but can’t&lt;/li&gt;
&lt;li&gt;Medium: PE: Correctly log the state of orphaned clone instances&lt;/li&gt;
&lt;li&gt;Medium: PE: If no migrate_(from|to) action is defined, look for migrate instead&lt;/li&gt;
&lt;li&gt;Medium: PE: Only re-instate target-role if it is less than the calculated one&lt;/li&gt;
&lt;li&gt;Medium: PE: Provide details for the maintenance-mode option&lt;/li&gt;
&lt;li&gt;Medium: PE: Stop ptest from logging to syslog&lt;/li&gt;
&lt;li&gt;Medium: Tools: attrd_updater - Suppress all logging with —quiet&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: add extra flag to CibObject for invalid objects&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: do return cached resources dom node&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: expand template documentation&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: first child of a removed parent inherits constraints&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm_attribute - Suppress all logging with —quiet&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm_shadow - log diffs to stdout instead of stderr&lt;/li&gt;
&lt;li&gt;Medium: Tools: Use -q as the short form for —quiet (for consistency)&lt;/li&gt;
&lt;/ul&gt;</description><link>http://theclusterguy.clusterlabs.org/post/230672127</link><guid>http://theclusterguy.clusterlabs.org/post/230672127</guid><pubDate>Mon, 02 Nov 2009 11:19:53 +0100</pubDate><category>announce</category></item><item><title>Advisory: Don't use Pacemaker on Corosync (yet)</title><description>&lt;p&gt;I spent some time looking into the state of the Pacemaker/Corosync integration today and I can only recommend Pacemaker users stay on the previous version of OpenAIS (aka. Whitetank).&lt;/p&gt;

&lt;p&gt;In a nutshell, shutdown is utterly broken.&lt;/p&gt;

&lt;p&gt;r2140 of Corosync removed the shutdown worker thread which allowed plugins such as Pacemaker to continue sending and receiving cluster messages.&lt;br/&gt;
Without it, Corosync waits for Pacemaker to finish and Pacemaker waits for the messages it tried to send to arrive and be acted upon.
Needless to say no-one makes any progress.&lt;/p&gt;

&lt;p&gt;Stay tuned, now that integration testing has started it shouldn’t take too long to get everything sorted out.&lt;/p&gt;

&lt;h3&gt;Update&lt;/h3&gt;

&lt;p&gt;Since writing this, the necessary testing has been done and Pacemaker is now supported on Corosync provided you have corosync &gt;= 1.1.2 and pacemaker &gt;= 1.0.6&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/205886990</link><guid>http://theclusterguy.clusterlabs.org/post/205886990</guid><pubDate>Tue, 06 Oct 2009 16:20:00 +0200</pubDate><category>announce</category></item><item><title>Clusters From Scratch</title><description>&lt;p&gt;The first of a new series of step-by-step guides for Pacemaker.&lt;/p&gt;

&lt;p&gt;This installment covers installation, the creation of an &lt;a href="http://en.wikipedia.org/wiki/High-availability_cluster#Node_configurations"&gt;active/passive&lt;/a&gt; cluster and its conversion to active/active.&lt;/p&gt;

&lt;p&gt;Technologies used include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fedora 11 as the host operating system&lt;/li&gt;
&lt;li&gt;OpenAIS to provide messaging and membership services,&lt;/li&gt;
&lt;li&gt;Pacemaker to perform resource management,&lt;/li&gt;
&lt;li&gt;DRBD as a cost-effective alternative to shared storage,&lt;/li&gt;
&lt;li&gt;OCFS2 as the cluster filesystem (in active/active mode)&lt;/li&gt;
&lt;li&gt;The crm shell for displaying the configuration and making changes&lt;/li&gt;
&lt;li&gt;Apache as the example service. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The PDF is available from our &lt;a href="http://www.clusterlabs.org/wiki/Documentation#Howtos"&gt;Documentation page&lt;/a&gt; or directly via  &lt;a href="http://www.clusterlabs.org/mediawiki/images/9/9d/Clusters_from_Scratch_-_Apache_on_Fedora11.pdf"&gt;http://www.clusterlabs.org/mediawiki/images/9/9d/Clusters_from_Scratch_-_Apache_on_Fedora11.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Future guides are anticipated to include MySQL, mail servers and asymmetrical clusters.  Feedback and suggestions for additional topics are welcome.&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/193226662</link><guid>http://theclusterguy.clusterlabs.org/post/193226662</guid><pubDate>Mon, 21 Sep 2009 10:57:27 +0200</pubDate><category>announce</category></item><item><title>Version Control Prompt</title><description>&lt;p&gt;I find it convenient to include current SCM data before my regular Bash prompt (reduces the chance of “accidents”).  Perhaps someone else will find it useful too.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;function prompt-pre-exec() {
    scm=""
    repo_root=$(hg root 2&gt;/dev/null)
    if [ -e CVS ]; then
        scm=":: cvs ::"

    elif [ -e .svn ]; then
        scm=":: svn : ${prompt_hl}r$(svn info | grep Revision | sed s/.*:\ //)${prompt_n} ($(svn info | grep Date | sed s/.*\(\//)"

    elif [ -e .gitignore ]; then
        repo_branch=`git branch --no-color 2&gt; /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1#/'`
        scm=`git show --pretty="format: : git : ${prompt_hl}${repo_branch}%h${prompt_n} : %an, %cr\n:: %s\n" | head -n 2`

    elif [ x != "x$repo_root" ]; then
        repo_cs=$(hg id -i)
        scm=`hg log --template " : hg : ${repo_root##*/} : ${prompt_hl}${repo_cs}${prompt_n} {tags} : {author|user}, {date|age} ago\n:: {desc|firstline|strip}\n" -r ${repo_cs%%+}`
    fi

    if [ "x$scm" != x ]; then
        # Trailing \n characters don't seem to expanded 
        scm="$scm
"
    fi
    export scm    
}

if [ x"$-" = "xhimBH" ]; then
  # Execute the following function before displaying the prompt
  export PROMPT_COMMAND='prompt-pre-exec'

  # Use \[ and \] to exclude the color code from the line wrapping calculations 
  export PS1='${scm}[\@] \u@\h \[${prompt_hl}\]\w #\[${prompt_n}\] '
fi
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then to add color, simply define &lt;em&gt;prompt_hl&lt;/em&gt; and &lt;em&gt;prompt_n&lt;/em&gt;.  I use&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;export prompt_n="^[^E[00m^]"      # Default color
export prompt_hl="^[^E[01;32m^]"  # Highlight codes
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To enter &lt;em&gt;^[&lt;/em&gt; in emacs, type Ctrl-q then Ctrl-[.  Likewise &lt;em&gt;^E&lt;/em&gt; is Ctrl-q Ctrl-e.&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/193192569</link><guid>http://theclusterguy.clusterlabs.org/post/193192569</guid><pubDate>Mon, 21 Sep 2009 09:41:04 +0200</pubDate><category>tips</category></item><item><title>Configuring Heartbeat v1 Was So Simple</title><description>&lt;p&gt;…because it couldn’t do anything.&lt;/p&gt;

&lt;p&gt;People who loved how simple Heartbeat v1 was to configure often complain how complex Pacemaker is.&lt;/p&gt;

&lt;p&gt;But the key differences between the two configurations are driven by the very features that &lt;code&gt;haresources&lt;/code&gt;-based clusters couldn’t provide.&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;Granted we made a mess of things with the original XML syntax.&lt;/dt&gt;
&lt;dd&gt;
&lt;p&gt;When the job of writing the CRM/Pacemaker was first pitched to me, I was promised an all-singing, all-dancing GUI that would hide the ugly XML from end users.&lt;/p&gt;
&lt;/dd&gt;

&lt;dd&gt;So we focused on power and expressiveness and little thought was given to it’s usability.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;However with the release of Pacemaker 1.0 in October 2008, not only has the XML been cleaned up, but Dejan has written a consolidated cluster shell &lt;strong&gt;that hides all the XML&lt;/strong&gt; anyway.&lt;/p&gt;

&lt;p&gt;As a result &lt;strong&gt;almost everything you thought about Pacemaker’s complexity is no longer true&lt;/strong&gt; and it’s just as suited to simple two-node setups as it is to large active/active configurations.&lt;/p&gt;

&lt;h2&gt;Establishing A Baseline&lt;/h2&gt;

&lt;p&gt;Here’s a sample &lt;code&gt;haresources&lt;/code&gt; file from the linux-ha.org website:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;linuxha1 IPaddr::192.168.85.3 httpd smb
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The pattern here is:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$preferred_node $script::$parameter $script $script
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Which is mostly sufficient for a two node cluster, because anything not running on $preferred_node is running on &lt;em&gt;the only other machine in the cluster&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;Deficiencies&lt;/h2&gt;

&lt;p&gt;Of course there were some obvious limitations built into Heartbeat v1 that Pacemaker was designed to address.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Couldn’t support more than two nodes&lt;/li&gt;
&lt;li&gt;Couldn’t detect or recover from resource-level failures&lt;/li&gt;
&lt;li&gt;Limited to sets of resources with a strict linear stop/start order&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Power Creates Complexity, but Not That Much&lt;/h2&gt;

&lt;h3&gt;Non-linear Resource Model&lt;/h3&gt;

&lt;p&gt;Consider the following environment:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resource B depends on Resource A&lt;/li&gt;
&lt;li&gt;Resource C depends on Resource A&lt;/li&gt;
&lt;li&gt;Resource B and Resource C are independent&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There is no way to truly express this with &lt;code&gt;haresources&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In order to have a more powerful resource model, you need to be able to refer multiple times to resources.
So now they need a name and a more flexible way to group them.&lt;/p&gt;

&lt;h4&gt;New Resource Syntax&lt;/h4&gt;

&lt;p&gt;This is Pacemaker’s XML equivalent of the IPaddr resource above, which I’ve imaginatively called &lt;em&gt;IP&lt;/em&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;    &lt;primitive class="ocf" id="IP" provider="heartbeat" type="IPaddr"&gt;
      &lt;instance_attributes id="IP-instance_attributes"&gt;
        &lt;nvpair id="IP-instance_attributes-ip" name="ip" value="192.168.85.3"/&gt;
      &lt;/instance_attributes&gt;
    &lt;/primitive&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This is also the point at which many people run away screaming.
There’s really no need for this though, almost all of it is scaffolding.&lt;/p&gt;

&lt;p&gt;Here’s how I created the above XML:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# crm configure primitive IP ocf:heartbeat:IPaddr params ip=192.168.85.3
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Which is composed of&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;primitive ::= The type of resource object that we’re creating.&lt;/li&gt;
&lt;li&gt;IP ::= Our name for the resource&lt;/li&gt;
&lt;li&gt;IPaddr ::= The script to call&lt;/li&gt;
&lt;li&gt;ocf ::= The standard it conforms to&lt;/li&gt;
&lt;li&gt;ip=192.168.85.3 ::= Parameter(s) as name/value pairs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To create the other two members of the group, I ran:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# crm configure primitive http lsb::httpd
# crm configure primitive samba lsb::smb
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Admit it, that was pretty easy :-)&lt;/p&gt;

&lt;p&gt;To group them together, as-per the &lt;code&gt;haresources&lt;/code&gt; example, is also trivial.
Just provide a name for the group and a list of members:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# crm configure group v1-group IP http samba
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Thats it!
Here’s the result:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# crm configure show
primitive IP ocf:heartbeat:IPaddr params ip="192.168.85.3"
primitive http lsb:httpd
primitive samba lsb:smb 
group v1-group IP http samba
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Resource Recovery&lt;/h3&gt;

&lt;p&gt;In order to detect resource failure, the cluster needs to check its health periodically.
But what action should it call and how often?
There is nowhere in &lt;code&gt;haresources&lt;/code&gt; to specify this.
Not cleanly anyway.&lt;/p&gt;

&lt;p&gt;By way of example, here’s what it looks like in Pacemaker if you want to monitor the IP address every 5 minutes and apache/samba once a minute:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# crm configure show
primitive IP ocf:heartbeat:IPaddr params ip="192.168.85.3" op monitor interval=5min
primitive http lsb:httpd op monitor interval=60s
primitive samba lsb:smb op monitor interval=60s
group v1-group IP http samba
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;More Than Two Nodes&lt;/h3&gt;

&lt;p&gt;Supporting more than two nodes means that can no longer specify a preferred node like in v1.
Thats not enough to tell the cluster where to put the resource after &lt;code&gt;$preferred_node&lt;/code&gt; fails.
Instead you need an ordered list.&lt;/p&gt;

&lt;p&gt;Here’s an example of how we might specify that we prefer linuxha1 over linuxha2 over linuxha3:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# crm configure location prefer-ha1 v1-group 5000: linuxha1
# crm configure location prefer-ha2 v1-group 500:  linuxha2
# crm configure location prefer-ha3 v1-group 50:   linuxha3
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The numbers (5000, 500, 50) are scores that indicate a relative preference for running on the three nodes.&lt;/p&gt;

&lt;p&gt;To finish off, here’s the Pacemaker equivalent of just the original &lt;code&gt;haresources&lt;/code&gt; example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;primitive IP ocf:heartbeat:IPaddr params ip="192.168.85.3"
primitive http lsb:httpd
primitive samba lsb:smb

group v1-group IP http samba
location prefer-ha1 v1-group 5000: linuxha1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;See, its really not that scary and, as we saw, easily extendable to a more complex clustering environment if needed.&lt;/p&gt;

&lt;h4&gt;Failback? Sure, but to Where?&lt;/h4&gt;

&lt;p&gt;Imagine the scenario, &lt;code&gt;linuxha1&lt;/code&gt; failed and the group moved to &lt;code&gt;linuxha2&lt;/code&gt;.
Then &lt;code&gt;linuxha2&lt;/code&gt; failed, and now the resource group is running on &lt;code&gt;linuxha3&lt;/code&gt;.
What happens when the other two nodes recover?&lt;/p&gt;

&lt;p&gt;In v1, this is controlled by the &lt;code&gt;auto_failback&lt;/code&gt; directive.
But when there are more than two nodes, where does &lt;code&gt;back&lt;/code&gt; refer to?
It could mean &lt;code&gt;linuxha2&lt;/code&gt;, since that was the last place it was running.
It could also mean &lt;code&gt;linuxha1&lt;/code&gt;, since that is the most preferred node under normal circumstances.&lt;/p&gt;

&lt;p&gt;The sanest way to resolve this ambiguity is to invert the option and make it a preference for keeping the resource where it is.&lt;/p&gt;

&lt;p&gt;Thus the &lt;code&gt;resource-stickiness&lt;/code&gt; option was born and, unlike &lt;code&gt;auto_failback&lt;/code&gt;, it can be specified per-resource (with a global default).
Which makes sense, since the cost of stopping and relocating an IP address is significantly less than that of an Oracle database.&lt;/p&gt;

&lt;p&gt;Pacemaker even allows the administrator to have different fail-back policies apply during “core” and “non-core” hours.
But more on that another day.&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/178680309</link><guid>http://theclusterguy.clusterlabs.org/post/178680309</guid><pubDate>Thu, 03 Sep 2009 11:32:51 +0200</pubDate><category>tips</category></item><item><title>Another Documentation Update</title><description>&lt;p&gt;Quick FYI… I’ve made some more improvements to the Configuration Explained PDF
  &lt;a href="http://clusterlabs.org/mediawiki/images/f/fb/Configuration_Explained.pdf"&gt;http://clusterlabs.org/mediawiki/images/f/fb/Configuration_Explained.pdf&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Changes include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed a number of date based rule examples&lt;/li&gt;
&lt;li&gt;Updated details on the stonith-enabled option&lt;/li&gt;
&lt;li&gt;Fixed the URL for the obtaining the XSLT conversion script&lt;/li&gt;
&lt;li&gt;Explanations of the possible values for the &lt;em&gt;target-role&lt;/em&gt; and &lt;em&gt;multiple-active&lt;/em&gt;, resource options&lt;/li&gt;
&lt;li&gt;Explanations of the possible values for the &lt;em&gt;on-fail&lt;/em&gt; and &lt;em&gt;requires&lt;/em&gt; operation options &lt;/li&gt;
&lt;li&gt;Explanations of the possible values for the &lt;em&gt;operation&lt;/em&gt; option of expressions and date_expressions&lt;/li&gt;
&lt;li&gt;Rewrote section on &lt;em&gt;Moving Resources due to Connectivity Changes&lt;/em&gt; to use the new, more reliable ping RA&lt;/li&gt;
&lt;li&gt;Referenced the original definition of various resource options instead of repeating them&lt;/li&gt;
&lt;li&gt;Added text for obtaining detailed information on the meaning of stonith parameters&lt;/li&gt;
&lt;/ul&gt;</description><link>http://theclusterguy.clusterlabs.org/post/171338896</link><guid>http://theclusterguy.clusterlabs.org/post/171338896</guid><pubDate>Tue, 25 Aug 2009 17:01:07 +0200</pubDate></item><item><title>Dev Repository Recreated </title><description>&lt;p&gt;For a variety of reasons, the Pacemaker &lt;em&gt;dev&lt;/em&gt; repository has been recreated and its history pruned of non-pacemaker related changes.&lt;/p&gt;

&lt;p&gt;Any existing clones need to be removed and re-cloned as the all the changeset hashes have changed and it is fundamentally a different repository.&lt;/p&gt;

&lt;p&gt;The good news though, is that with the help of some Mercurial hacking, any links using the “old” hashes will still work.&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/161938415</link><guid>http://theclusterguy.clusterlabs.org/post/161938415</guid><pubDate>Thu, 13 Aug 2009 10:50:56 +0200</pubDate><category>announce</category></item><item><title>Pacemaker 1.0.5 Released</title><description>&lt;p&gt;I’m back from vacation so it’s time for another Pacemaker bug-fix release.
Testing went flawlessly and so without further ado, here it is…&lt;/p&gt;

&lt;p&gt;Pre-built packages for Pacemaker and it’s immediate dependancies will be available for openSUSE, SLES, Fedora, RHEL, CentOS from the &lt;a href="http://software.opensuse.org/download/server:/ha-clustering"&gt;OpenSUSE Build Service&lt;/a&gt; once it catches up.&lt;/p&gt;

&lt;p&gt;Debian users should check for updates &lt;a href="http://clusterlabs.org/wiki/Install#Debian"&gt;Martin’s repo&lt;/a&gt; over the coming days and Ubuntu fans can visit &lt;a href="https://edge.launchpad.net/~ubuntu-ha-maintainers/+archive/ppa"&gt;LaunchPad&lt;/a&gt; for 8.04 and 9.10 packages.&lt;/p&gt;

&lt;p&gt;The &lt;a href="http://hg.clusterlabs.org/pacemaker/stable-1.0/archive/462f1569a437.tar.bz2"&gt;source tarball&lt;/a&gt; is also available directly from Mercurial.&lt;/p&gt;

&lt;p&gt;General installation instructions are available at from the &lt;a href="http://clusterlabs.org/wiki/Install"&gt;ClusterLabs wiki&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Release Statistics&lt;/h3&gt;

&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Changesets&lt;/b&gt;&lt;/td&gt;
        &lt;td&gt; 90 &lt;/td&gt;
    &lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Diff&lt;/b&gt;&lt;/td&gt;
        &lt;td&gt;185 files changed, 11051 insertions(+), 1206 deletions(-)&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Project Administrivia&lt;/h3&gt;

&lt;p&gt;The next release will be in early September and there will focus on performance.
Specifically I’ll be looking at CPU usage, logging and performance in larger clusters (&gt;8 nodes).&lt;/p&gt;

&lt;h3&gt;Changes of note since Pacemaker-1.0.4&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Update source tarball to revision: 462f1569a437 (stable-1.0) tip&lt;/li&gt;
&lt;li&gt;High (bnc#507255): Tools: crm: implement date expressions&lt;/li&gt;
&lt;li&gt;High: ais: Fix cluster connection when using corosync 1.0&lt;/li&gt;
&lt;li&gt;High: ais: fix compilation against latest corosync&lt;/li&gt;
&lt;li&gt;High: Build: Fix compilation when snmp and esmtp are not available&lt;/li&gt;
&lt;li&gt;High: Core: Show help text and exit with rc 1 if option processing failed&lt;/li&gt;
&lt;li&gt;High: crmd: Terminate if we are ever evicted from the membership&lt;/li&gt;
&lt;li&gt;High: crmd: Unset any existing DC value before querying for a new one&lt;/li&gt;
&lt;li&gt;High: lrm: Look in the correct location for stonith agents&lt;/li&gt;
&lt;li&gt;High: PE: Bug 2160 - Dont shuffle clones due to colocation&lt;/li&gt;
&lt;li&gt;High: PE: Bug bnc#515172 - Correctly process location constraint rules which contain multiple expressions&lt;/li&gt;
&lt;li&gt;High: PE: Bug bnc#515172 - Fix the boolean-op attribute of rules&lt;/li&gt;
&lt;li&gt;High: PE: Fix reload for master/slave resources&lt;/li&gt;
&lt;li&gt;High: PE: New implementation of the resource migration (not stop/start) logic&lt;/li&gt;
&lt;li&gt;High: PE: Only prevent migration if the clone dependancy is stopping/starting on the target node&lt;/li&gt;
&lt;li&gt;High: Tools: crm: new display type (uppercase keywords)&lt;/li&gt;
&lt;li&gt;High: Tools: crm: support for color output&lt;/li&gt;
&lt;li&gt;High: Tools: crm_resource - Advertise —move instead of —migrate&lt;/li&gt;
&lt;li&gt;High: Tools: Differentiate between —help and an unknown option&lt;/li&gt;
&lt;li&gt;Medium: cib: Supply an empty status section for replace operations&lt;/li&gt;
&lt;li&gt;Medium: crmd: Note that dc-deadtime can be used to mask the brokeness of some switches&lt;/li&gt;
&lt;li&gt;Medium: Extra: Add tools, an RA and tests for the System Health feature written by Mark Hamzy&lt;/li&gt;
&lt;li&gt;Medium: Extra: New node connectivity RA that uses system ping and attrd_updater&lt;/li&gt;
&lt;li&gt;Medium: PE: Prevent use-of-NULL in find_first_action()&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm: fix the verify exit code properly&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm_resource - Prevent use-of-NULL by requiring a resource name for the -A and -a options&lt;/li&gt;
&lt;/ul&gt;</description><link>http://theclusterguy.clusterlabs.org/post/160759790</link><guid>http://theclusterguy.clusterlabs.org/post/160759790</guid><pubDate>Tue, 11 Aug 2009 22:50:00 +0200</pubDate></item><item><title>Poll: Which Distro do you use for Pacemaker?</title><description>&lt;p&gt;Please let us know by filling out the following poll:
   &lt;a href="http://www.clusterlabs.org/wiki/UsagePoll"&gt;http://www.clusterlabs.org/wiki/UsagePoll&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any version of Pacemaker counts, as do versions of Heartbeat running the CRM.&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/160510458</link><guid>http://theclusterguy.clusterlabs.org/post/160510458</guid><pubDate>Tue, 11 Aug 2009 15:32:22 +0200</pubDate></item><item><title>Choose the Right Hardware</title><description>&lt;p&gt;Recently I was asked to help diagnose a cluster that was behaving incredibly badly.&lt;/p&gt;

&lt;p&gt;In this case, it was a 2-node cluster based on OpenAIS and they were simulating failures.
They’d initiate a failure and sure enough, the other node would recognize and respond appropriately.&lt;br/&gt;
So far so good.&lt;/p&gt;

&lt;p&gt;The problems started when the failed node rebooted.&lt;/p&gt;

&lt;p&gt;When the failed node returned, it came up alone and proceeded to fence the surviving one.
Which came up alone and shot its peer.
Which came up alone and shot its peer.&lt;/p&gt;

&lt;p&gt;You get the picture.&lt;/p&gt;

&lt;p&gt;Somehow what should have been a simple recovery had escalated into a STONITH death-match.&lt;/p&gt;

&lt;p&gt;To make a long story short, the root of the problem was their managed switch.
The switch, a SMC 8824M, was not correctly handling &lt;a href="http://en.wikipedia.org/wiki/Multicast"&gt;multicast&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When a node rebooted, and only when the node rebooted, it took approximately two minutes for the multicast group to properly re-form.
This was long enough for the returning node to declare itself a master, fence its peer(s) and begin starting services.
At which point it too would get shot.&lt;/p&gt;

&lt;p&gt;The solution was to adjust the &lt;em&gt;dc-deadtime&lt;/em&gt; option.
&lt;em&gt;dc-deadtime&lt;/em&gt; tells the cluster how long to wait before deciding it is all by itself.
Setting this to an interval long enough for the switch to reliably re-form the multicast group prevented the death-match from occurring.&lt;/p&gt;

&lt;p&gt;To tell the cluster to wait two minutes, run:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;crm configure property dc-deadtime=2min
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In this instance however, the customer was lucky.
Simply rebooting the switch caused the problem to go away.&lt;/p&gt;

&lt;p&gt;Which I’m sure made their finance department happy too.&lt;/p&gt;

&lt;h3&gt;Lessons learned&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Switches can have bugs too&lt;/li&gt;
&lt;li&gt;Choose your hardware carefully, make sure its suitable for the task it is intended for.&lt;/li&gt;
&lt;/ul&gt;</description><link>http://theclusterguy.clusterlabs.org/post/157778926</link><guid>http://theclusterguy.clusterlabs.org/post/157778926</guid><pubDate>Fri, 07 Aug 2009 10:02:27 +0200</pubDate><category>tips</category></item><item><title>Updated Documentation</title><description>&lt;p&gt;The Configuration Explained PDF has been updated for 1.0.4/5
   &lt;a href="http://clusterlabs.org/mediawiki/images/f/fb/Configuration_Explained.pdf"&gt;&lt;a href="http://clusterlabs.org/mediawiki/images/f/fb/Configuration_Explained.pdf"&gt;http://clusterlabs.org/mediawiki/images/f/fb/Configuration_Explained.pdf&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Changes include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instructions for enabling resource migration&lt;/li&gt;
&lt;li&gt;Clarified the difference between moving and migrating a resource &lt;/li&gt;
&lt;li&gt;Clarified how the semantics of resources sets differ from that of groups &lt;/li&gt;
&lt;li&gt;Fixed instructions for enabling Pacemaker for Heartbeat&lt;/li&gt;
&lt;li&gt;Updated syntax in examples

&lt;ul&gt;
&lt;li&gt;Rules missing scores&lt;/li&gt;
&lt;li&gt;Invalid date expressions&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description><link>http://theclusterguy.clusterlabs.org/post/156996748</link><guid>http://theclusterguy.clusterlabs.org/post/156996748</guid><pubDate>Thu, 06 Aug 2009 08:48:08 +0200</pubDate></item><item><title>Pacemaker 1.0.5: Testing In Progress</title><description>&lt;p&gt;A quick note to say that 1.0.5 testing officially started today.
Release testing usually takes 1-2 weeks.&lt;/p&gt;

&lt;p&gt;Currently queued changes for this release:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High (bnc#507255): Tools: crm: implement date expressions&lt;/li&gt;
&lt;li&gt;High: Build: Fix compilation when snmp and esmtp are not available&lt;/li&gt;
&lt;li&gt;High: Core: Show help text and exit with rc 1 if option processing failed&lt;/li&gt;
&lt;li&gt;High: PE: Bug 2160 - Dont shuffle clones due to colocation&lt;/li&gt;
&lt;li&gt;High: PE: Bug bnc#515172 - Correctly process location constraint rules which contain multiple expressions&lt;/li&gt;
&lt;li&gt;High: PE: Bug bnc#515172 - Fix the boolean-op attribute of rules&lt;/li&gt;
&lt;li&gt;High: PE: Fix reload for master/slave resources&lt;/li&gt;
&lt;li&gt;High: PE: New implementation of the resource migration (not stop/start) logic&lt;/li&gt;
&lt;li&gt;High: PE: Only prevent migration if the clone dependancy is stopping/starting on the target node&lt;/li&gt;
&lt;li&gt;High: Tools: Differentiate between —help and an unknown option&lt;/li&gt;
&lt;li&gt;High: Tools: crm: new display type (uppercase keywords)&lt;/li&gt;
&lt;li&gt;High: Tools: crm: support for color output&lt;/li&gt;
&lt;li&gt;High: ais: Fix cluster connection when using corosync 1.0&lt;/li&gt;
&lt;li&gt;High: crmd: Terminate if we are ever evicted from the membership&lt;/li&gt;
&lt;li&gt;High: crmd: Unset any existing DC value before querying for a new one&lt;/li&gt;
&lt;li&gt;&lt;p&gt;High: lrm: Look in the correct location for stonith agents&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Medium: Extra: Add tools, an RA and tests for the System Health feature written by Mark Hamzy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;Medium: PE: Prevent use-of-NULL in find_first_action()&lt;/li&gt;
&lt;li&gt;Medium: Tools: crm_resource - Prevent use-of-NULL by requiring a resource name for the -A and -a options&lt;/li&gt;
&lt;li&gt;Medium: cib: Supply an empty status section for replace operations&lt;/li&gt;
&lt;/ul&gt;</description><link>http://theclusterguy.clusterlabs.org/post/154831045</link><guid>http://theclusterguy.clusterlabs.org/post/154831045</guid><pubDate>Mon, 03 Aug 2009 12:57:13 +0200</pubDate></item><item><title>Pacemaker in Fedora 12</title><description>&lt;p&gt;Good news for Fedora fans, we’ve successfully navigated the required red tape and Pacemaker will ship in Fedora 12.&lt;/p&gt;

&lt;p&gt;Hopefully Debian and Ubuntu will not be far behind.&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/152911001</link><guid>http://theclusterguy.clusterlabs.org/post/152911001</guid><pubDate>Fri, 31 Jul 2009 13:55:53 +0200</pubDate></item><item><title>Resource Migration and Regression Testing</title><description>&lt;p&gt;Yesterday I was working on a migration bug.&lt;/p&gt;

&lt;p&gt;It didn’t take long to identify or fix, and afterwards I was terribly pleased with myself.&lt;br/&gt;
The fix was simple, elegant and allowed the cluster to use migration (instead of stop then start) more often.&lt;/p&gt;

&lt;p&gt;Why had I not seen how easy it was sooner?&lt;/p&gt;

&lt;p&gt;Unfortunately it was because I’d ignored half the problem.&lt;/p&gt;

&lt;p&gt;One decision I’m particularly happy I made place 6 years ago, is the one when I ensured Pacemaker’s Policy Engine could be used outside of a running cluster.
Combined with some additional output options, this makes it possible to have a suite (224 right at this moment) of regression tests that catch this sort of idiocy before it ever affects an actual user.&lt;/p&gt;

&lt;p&gt;The Policy Engine is by far the most complex part of the system, and it’s totally infeasible to test by hand even a small fraction what the regression suite can (and in under 30s too!).&lt;/p&gt;

&lt;p&gt;This is why I’m so confident when I say that each release is better than the last.
Once a Policy Engine bug gets fixed, it &lt;em&gt;stays&lt;/em&gt; fixed.&lt;/p&gt;

&lt;p&gt;The benefits of offline testing also occur much earlier in the process.
The Policy Engine keeps a rolling list of the cluster states it performed calculations on and our test reporting tool collects these.
So when users report a Policy Engine bug, there is no need to reproduce the issue and afterwards we can conclusively show (using &lt;a href="http://www.graphviz.org/"&gt;pretty dot graphs&lt;/a&gt; of the cluster’s old and new behavior) that the issue is resolved.&lt;/p&gt;

&lt;p&gt;So I sat down again today and made sure I’d thought the whole problem through - so that the next version would be a complete solution.
You can see my notes below if you’re interested.&lt;/p&gt;

&lt;p&gt;And now I’m off to implement it (and some extra tests :-)&lt;/p&gt;

&lt;h2&gt;Migration Scenario Notes&lt;/h2&gt;

&lt;h3&gt;Cluster Setup&lt;/h3&gt;

&lt;p&gt;primitive(A) depends on clone(B)&lt;/p&gt;

&lt;h3&gt;Resource Activity During Move: A(node-1 to node-2)&lt;/h3&gt;

&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;time&lt;/th&gt;
&lt;th&gt;node-1&lt;/th&gt;
&lt;th&gt;node-2&lt;/th&gt;
&lt;th&gt;node-3
&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;t0&lt;/td&gt;
&lt;td&gt;A.stop&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;td&gt;t1&lt;/td&gt;
&lt;td&gt;B.stop&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;B.stop&lt;/td&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;td&gt;t2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;B.start&lt;/td&gt;
&lt;td&gt;B.start&lt;/td&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;td&gt;t3&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A.start&lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;h3&gt;Resource Activity During Migration: A(node-1 to node-2)&lt;/h3&gt;

&lt;table&gt;
&lt;tr&gt;
&lt;th&gt;time&lt;/th&gt;
&lt;th&gt;node-1&lt;/th&gt;
&lt;th&gt;node-2&lt;/th&gt;
&lt;th&gt;node-3
&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;t0&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;B.start&lt;/td&gt;
&lt;td&gt;B.start&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;t1&lt;/td&gt;
&lt;td&gt;A.stop*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;t2&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;A.start**&lt;/td&gt;
&lt;td&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;t3&lt;/td&gt;
&lt;td&gt;B.stop&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;B.stop&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;Node *: Rewritten to be a migrate-to operation&lt;/li&gt;
&lt;li&gt;Node **: Rewritten to be a migrate-from operation&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Constraints&lt;/h3&gt;

&lt;p&gt;The following constraints already exist in the system.
The ‘ok’ and ‘fail’ column refers to whether they still hold for migration.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A.stop  -&gt; A.start - ok&lt;/li&gt;
&lt;li&gt;B.stop  -&gt; B.start - fail&lt;/li&gt;
&lt;li&gt;A.stop  -&gt; B.stop  - ok&lt;/li&gt;
&lt;li&gt;B.start -&gt; A.start - ok&lt;/li&gt;
&lt;li&gt;B.stop -&gt; A.start  - fail&lt;/li&gt;
&lt;li&gt;A.stop  -&gt; B.start - fail&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Scenarios&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;B unchanged            - ok&lt;/li&gt;
&lt;li&gt;B stopping only        - fail - possible after reversing constraint 5&lt;/li&gt;
&lt;li&gt;B starting only        - fail - possible after reversing constraint 6***&lt;/li&gt;
&lt;li&gt;B stoping and starting - fail - constraint 2 is unfixable&lt;/li&gt;
&lt;li&gt;B restarting but only on N2 - fail - as per case 4 but even less likely &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note ***: This is what the existing implementation does&lt;/p&gt;</description><link>http://theclusterguy.clusterlabs.org/post/146797688</link><guid>http://theclusterguy.clusterlabs.org/post/146797688</guid><pubDate>Wed, 22 Jul 2009 16:00:00 +0200</pubDate><category>internals</category></item></channel></rss>
