You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@bigtop.apache.org by "Pete Vander Giessen (JIRA)" <ji...@apache.org> on 2016/06/03 13:49:59 UTC

[jira] [Created] (BIGTOP-2467) Zookeeper Puppet script does not setup Zookeeper node ids correctly

Pete Vander Giessen created BIGTOP-2467:
-------------------------------------------

             Summary: Zookeeper Puppet script does not setup Zookeeper node ids correctly
                 Key: BIGTOP-2467
                 URL: https://issues.apache.org/jira/browse/BIGTOP-2467
             Project: Bigtop
          Issue Type: Bug
          Components: deployment
    Affects Versions: 1.1.0
         Environment: Ubuntu Linux (though likely other environments, as well)
            Reporter: Pete Vander Giessen


In order to increase Zookeeper quorum, one needs to add a list of nodes to the zoo.cfg in the following format:

server.<node id>=<ip address>:2888:3888
server.<node id>=<ip address>:2888:3888
...

A Zookeeper node assumes that the first entry in the list is itself, and it assumes that the <node id> it has for a node is consistent across nodes. A working setup for a node with id "2" might look like this:

server.2=10.0.1.24:2888:3888
server.0=10.0.1.35:2888:3888
server.1=10.0.1.12:2888:3888

Bigtop's template for zoo.cfg does the following, however:

<% @ensemble.each_with_index do |server,idx| %>
server.<%= idx %>=<%= server %>
<% end %>

"ensemble" is simply an array of strings in the format "<ip address>:2888:3888". Note that the template uses ruby to auto generate an index for each entry, so the first entry in the list will always have an id of "0".

This means that, when the nodes try to talk to each other, they all claim to be peer 0, and they fail to connect with the following error:

2016-06-02 18:26:01,195 [myid:0] - INFO  [WorkerSender[myid=0]:QuorumCnxManager@193] - Have smaller server identifier, so dropping the connection: (1, 0)

I'm working on a proposed patch for this issue, where the ensemble variable takes an array of two element arrays; each sub array would be an id and a properly formatted ip string. I'm definitely open to other ideas, though.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)