Issue #1866 has been updated by Tom Fine.

No.  SRV records will not suffice.  In larger institutions like mine, DNS is a 
bureaucracy outside of our control.  I'm not sure it's possible for me to set 
up SRV records at all.  Even if it is, I know that I can't update them at my 
convenience.  We'd also like puppet to continue to work in the face of DNS 
failures.  And we can't rely on fallback to a default name of "puppet", as that 
name was taken for historical reasons.

Even without the bureaucracy, we have more subgroups organizationally than we 
have subdomains, so our SRV records would end up in conflict with those of 
other groups within our domain that would also want service records for puppet.

You can't beat the simplicity of a list of hosts in a config file that you can 
update centrally using puppet as long as at least one of your existing puppet 
servers is up.

My vote would be that this is a pure failover list.  Options for roundrobin or 
such might help others, but for me, if I wanted load balancing I'd use puppet 
to deliver different server list configurations to different subnets or groups 
or whatever.

----------------------------------------
Feature #1866: Support for specification of multiple servers
https://projects.puppetlabs.com/issues/1866#change-70608

Author: Ian Turner
Status: Investigating
Priority: Normal
Assignee: 
Category: plumbing
Target version: 3.x
Affected Puppet version: 0.24.7
Keywords: load balanced, multiple masters, high availability
Branch: 


At the moment it is only possible to tell puppetd about one puppetmaster: 
Engaging multiple servers requires load balancing equipment such as that 
employed by the reporter of Feature #1557. The simplest (for administrators) 
way to address this issue is to enable round-robin server access within puppetd 
itself. This is the technique employed extremely effectively in openvpn.

I propose two configuration changes: The "server" directive should accept a 
comma-seperated list of servers, and a new "randomserver" boolean directive 
indicates how the server list is traversed.

Pseudocode to be executed at the start of each puppet run:
<pre>
# if randomserver and lastserver = NIL
  # serverlist <- rotateleft(serverlist, rand(length(serverlist))
# nextserver <- NIL
# trialcount <- length(serverlist)
# loop until nextserver ≠ NIL
  # trialserver <- first(serverlist)
  # if retrievecatalogok(trialserver)
    # nextserver <- trialserver
  # else
    # server <- rotateleft(server, 1)
    # trialcount <- trialcount - 1
    # if trialcount = 0
      # error("no working servers")    
# lastserver <- nextserver
</pre>



-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to