Issue #1866 has been updated by IanTurner.

As an addendum, I would propose that randomserver's default value be false.

Also, I should give credit where due and state that this entire proposal is 
copied from the way that openvpn does things; to quote from an example openvpn 
configuration:

<pre>
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote server-a.example.com 1194
remote server-b.example.com 1194
remote server-c.example.com 1194

# Choose a random host from the remote
# list for load-balancing. Otherwise
# try hosts in the order specified.
;remote-random
</pre>
----------------------------------------
Feature #1866: Support for specification of multiple servers
http://projects.reductivelabs.com/issues/show/1866

Author: IanTurner
Status: Unreviewed
Priority: Normal
Assigned to: 
Category: plumbing
Target version: 
Complexity: Easy
Affected version: 0.24.7
Keywords: load balanced, multiple masters, high availability


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://reductivelabs.com/redmine/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