Re: Bootstrapping a new cluster and using the reconfig feature

2021-12-30 Thread Eric Edgar
I was able to reproduce using your testing method and get it working
locally... I must have a firewall port or something in the way.
Thanks,
Eric

On Thu, Dec 30, 2021 at 2:24 PM Alexander Shraer  wrote:

> I used master. But as long as you’re using 3.5 and on you should be fine.
> I’m not sure when the acl option was added but the standaloneEnabled and
> reconfig features were in 3.5.0
>
> On Thu, Dec 30, 2021 at 11:51 AM Eric Edgar
>  wrote:
>
> > This is great.  I should confirm what zk version you are using for your
> > tests.
> > Thanks,
> > Eric
> >
> > On Thu, Dec 30, 2021 at 1:10 PM Alexander Shraer 
> > wrote:
> >
> > > The reconfig is in process means something failed during
> reconfiguration
> > > and it couldn't complete. Perhaps the new server disconnected in the
> > middle
> > > and never came back up. Notice that the second server's config file
> gets
> > > overwritten after it connects to the leader, and if it reboots at this
> > > stage it won't be able to connect again without you manually
> overwriting
> > > its config file again (since in the server's config server 2 is not
> part
> > of
> > > the ensemble).
> > >
> > > I checked it locally (running both servers on my laptop), and it
> worked.
> > > Perhaps start from that ?
> > >
> > > Like you said, I disabled acl by adding
> > >
> > > "-Dzookeeper.skipACL=yes"
> > >
> > > Here's the first server's config file: conf/zoo_replicated1.cfg
> > >
> > > dataDir=/Users/shralex/my-zookeeper/zookeeper1
> > >
> > > syncLimit=2
> > >
> > > initLimit=5
> > >
> > > tickTime=2000
> > >
> > > clientPort=2791
> > >
> > > reconfigEnabled=true
> > >
> > > standaloneEnabled=false
> > >
> > > server.1=localhost:2721:2731:participant;localhost:2791
> > >
> > > The second server's: conf/zoo_replicated2.cfg
> > >
> > > ataDir=/Users/shralex/my-zookeeper/zookeeper2
> > >
> > > syncLimit=2
> > >
> > > initLimit=5
> > >
> > > tickTime=2000
> > >
> > > clientPort=2792
> > >
> > > reconfigEnabled=true
> > >
> > > standaloneEnabled=false
> > >
> > > server.1=localhost:2721:2731:participant;localhost:2791
> > >
> > > server.2=localhost:2741:2751:participant;localhost:2792
> > >
> > > create 2 directories for the servers: zookeeper1 and zookeeper2 and
> > create
> > > myid files in each
> > >
> > > echo 1 > zookeeper1/myid
> > >
> > > echo 2 > zookeeper2/myid
> > >
> > > I find it easier for debugging to allow zkServer.sh to log to stdout.
> You
> > > can do this by changing zkServer.sh:
> > > - change nohup "$JAVA" to just "$JAVA"
> > > - remove " > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null"
> > >
> > > In two shells start both servers by
> > >
> > > export ZOOCFG=zoo_replicated1.cfg  (change for server 2)
> > >
> > > ./bin/zkServer.sh start
> > >
> > > In a third shell I start the client by connecting it to server 2 as you
> > did
> > >
> > > ./bin/zkCli.sh -server 127.0.0.1:2792
> > >
> > > I run the following in the shell:
> > >
> > > [zk: 127.0.0.1:2792(CONNECTED) 2] config
> > >
> > > server.1=localhost:2721:2731:participant;localhost:2791
> > >
> > > version=1
> > >
> > > [zk: 127.0.0.1:2792(CONNECTED) 2] reconfig -add
> > > "server.2=localhost:2741:2751:participant;localhost:2792"
> > >
> > > Committed new configuration:
> > >
> > > server.1=localhost:2721:2731:participant;localhost:2791
> > >
> > > server.2=localhost:2741:2751:participant;localhost:2792
> > >
> > > version=20003
> > >
> > > On Thu, Dec 30, 2021 at 10:47 AM Eric Edgar
> > >  wrote:
> > >
> > > > I am a little closer I think.  I disabled auth for testing using the
> > > server
> > > > flags .. but now I am getting a different error that the reconfig is
> in
> > > > process and I see a zookeeper.dynamic.next file on both servers but
> > > nothing
> > > > happens after that.
> > > > What would cause that file to not be merged into a new cfg.
> > > > Eric
> > > >
> > > > On Thu, Dec 30, 2021 at 11:47 AM Eric Edgar <
> > eric.ed...@smartthings.com>
> > > > wrote:
> > > >
> > > > > Alex,
> > > > > so I have 2 nodes .. the first has itself in the dynamic list with
> an
> > > id
> > > > > of 1.
> > > > > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> > > > >
> > > > > I have brought the second node up with an id of 2
> > > > > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> > > > > server.2=10.1.1.40:2888:3888:participant;2181
> > > > >
> > > > > then i am trying to run from the second node.  zkCli.sh -server
> > > > 10.1.1.104
> > > > > reconfig -add "server.2=10.1.1.40:2888:3888:participant;2181"
> > > > >
> > > > >
> > > > >
> > > > > I get this error on the first server
> > > > > 2021-12-30 17:37:02,880 [myid:1] - INFO  [ProcessThread(sid:1
> > > > > cport:-1)::PrepRequestProcessor@461] - Incremental reconfig
> > > > > 2021-12-30 17:37:02,880 [myid:1] - WARN  [ProcessThread(sid:1
> > > > > cport:-1)::PrepRequestProcessor@532] - Reconfig failed - there
> must
> > > be a
> > > > > connected and synced quorum in new configuration
> > > > > 2021-12-30 17:37:02,880 [myid:1] 

Re: Bootstrapping a new cluster and using the reconfig feature

2021-12-30 Thread Alexander Shraer
I used master. But as long as you’re using 3.5 and on you should be fine.
I’m not sure when the acl option was added but the standaloneEnabled and
reconfig features were in 3.5.0

On Thu, Dec 30, 2021 at 11:51 AM Eric Edgar
 wrote:

> This is great.  I should confirm what zk version you are using for your
> tests.
> Thanks,
> Eric
>
> On Thu, Dec 30, 2021 at 1:10 PM Alexander Shraer 
> wrote:
>
> > The reconfig is in process means something failed during reconfiguration
> > and it couldn't complete. Perhaps the new server disconnected in the
> middle
> > and never came back up. Notice that the second server's config file gets
> > overwritten after it connects to the leader, and if it reboots at this
> > stage it won't be able to connect again without you manually overwriting
> > its config file again (since in the server's config server 2 is not part
> of
> > the ensemble).
> >
> > I checked it locally (running both servers on my laptop), and it worked.
> > Perhaps start from that ?
> >
> > Like you said, I disabled acl by adding
> >
> > "-Dzookeeper.skipACL=yes"
> >
> > Here's the first server's config file: conf/zoo_replicated1.cfg
> >
> > dataDir=/Users/shralex/my-zookeeper/zookeeper1
> >
> > syncLimit=2
> >
> > initLimit=5
> >
> > tickTime=2000
> >
> > clientPort=2791
> >
> > reconfigEnabled=true
> >
> > standaloneEnabled=false
> >
> > server.1=localhost:2721:2731:participant;localhost:2791
> >
> > The second server's: conf/zoo_replicated2.cfg
> >
> > ataDir=/Users/shralex/my-zookeeper/zookeeper2
> >
> > syncLimit=2
> >
> > initLimit=5
> >
> > tickTime=2000
> >
> > clientPort=2792
> >
> > reconfigEnabled=true
> >
> > standaloneEnabled=false
> >
> > server.1=localhost:2721:2731:participant;localhost:2791
> >
> > server.2=localhost:2741:2751:participant;localhost:2792
> >
> > create 2 directories for the servers: zookeeper1 and zookeeper2 and
> create
> > myid files in each
> >
> > echo 1 > zookeeper1/myid
> >
> > echo 2 > zookeeper2/myid
> >
> > I find it easier for debugging to allow zkServer.sh to log to stdout. You
> > can do this by changing zkServer.sh:
> > - change nohup "$JAVA" to just "$JAVA"
> > - remove " > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null"
> >
> > In two shells start both servers by
> >
> > export ZOOCFG=zoo_replicated1.cfg  (change for server 2)
> >
> > ./bin/zkServer.sh start
> >
> > In a third shell I start the client by connecting it to server 2 as you
> did
> >
> > ./bin/zkCli.sh -server 127.0.0.1:2792
> >
> > I run the following in the shell:
> >
> > [zk: 127.0.0.1:2792(CONNECTED) 2] config
> >
> > server.1=localhost:2721:2731:participant;localhost:2791
> >
> > version=1
> >
> > [zk: 127.0.0.1:2792(CONNECTED) 2] reconfig -add
> > "server.2=localhost:2741:2751:participant;localhost:2792"
> >
> > Committed new configuration:
> >
> > server.1=localhost:2721:2731:participant;localhost:2791
> >
> > server.2=localhost:2741:2751:participant;localhost:2792
> >
> > version=20003
> >
> > On Thu, Dec 30, 2021 at 10:47 AM Eric Edgar
> >  wrote:
> >
> > > I am a little closer I think.  I disabled auth for testing using the
> > server
> > > flags .. but now I am getting a different error that the reconfig is in
> > > process and I see a zookeeper.dynamic.next file on both servers but
> > nothing
> > > happens after that.
> > > What would cause that file to not be merged into a new cfg.
> > > Eric
> > >
> > > On Thu, Dec 30, 2021 at 11:47 AM Eric Edgar <
> eric.ed...@smartthings.com>
> > > wrote:
> > >
> > > > Alex,
> > > > so I have 2 nodes .. the first has itself in the dynamic list with an
> > id
> > > > of 1.
> > > > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> > > >
> > > > I have brought the second node up with an id of 2
> > > > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> > > > server.2=10.1.1.40:2888:3888:participant;2181
> > > >
> > > > then i am trying to run from the second node.  zkCli.sh -server
> > > 10.1.1.104
> > > > reconfig -add "server.2=10.1.1.40:2888:3888:participant;2181"
> > > >
> > > >
> > > >
> > > > I get this error on the first server
> > > > 2021-12-30 17:37:02,880 [myid:1] - INFO  [ProcessThread(sid:1
> > > > cport:-1)::PrepRequestProcessor@461] - Incremental reconfig
> > > > 2021-12-30 17:37:02,880 [myid:1] - WARN  [ProcessThread(sid:1
> > > > cport:-1)::PrepRequestProcessor@532] - Reconfig failed - there must
> > be a
> > > > connected and synced quorum in new configuration
> > > > 2021-12-30 17:37:02,880 [myid:1] - INFO  [ProcessThread(sid:1
> > > > cport:-1)::PrepRequestProcessor@935] - Got user-level
> KeeperException
> > > > when processing sessionid:0x1002dfe65610014 type:reconfig cxid:0x1
> > > > zxid:0x160033 txntype:-1 reqpath:n
> > > >
> > > >
> > > > on the second server issuing the reconfig command I get this error
> > > > No quorum of new config is connected and up-to-date with the leader
> of
> > > > last commmitted config - try invoking reconfiguration after new
> servers
> > > are
> > > > connected and synced
> 

Re: Bootstrapping a new cluster and using the reconfig feature

2021-12-30 Thread Eric Edgar
This is great.  I should confirm what zk version you are using for your
tests.
Thanks,
Eric

On Thu, Dec 30, 2021 at 1:10 PM Alexander Shraer  wrote:

> The reconfig is in process means something failed during reconfiguration
> and it couldn't complete. Perhaps the new server disconnected in the middle
> and never came back up. Notice that the second server's config file gets
> overwritten after it connects to the leader, and if it reboots at this
> stage it won't be able to connect again without you manually overwriting
> its config file again (since in the server's config server 2 is not part of
> the ensemble).
>
> I checked it locally (running both servers on my laptop), and it worked.
> Perhaps start from that ?
>
> Like you said, I disabled acl by adding
>
> "-Dzookeeper.skipACL=yes"
>
> Here's the first server's config file: conf/zoo_replicated1.cfg
>
> dataDir=/Users/shralex/my-zookeeper/zookeeper1
>
> syncLimit=2
>
> initLimit=5
>
> tickTime=2000
>
> clientPort=2791
>
> reconfigEnabled=true
>
> standaloneEnabled=false
>
> server.1=localhost:2721:2731:participant;localhost:2791
>
> The second server's: conf/zoo_replicated2.cfg
>
> ataDir=/Users/shralex/my-zookeeper/zookeeper2
>
> syncLimit=2
>
> initLimit=5
>
> tickTime=2000
>
> clientPort=2792
>
> reconfigEnabled=true
>
> standaloneEnabled=false
>
> server.1=localhost:2721:2731:participant;localhost:2791
>
> server.2=localhost:2741:2751:participant;localhost:2792
>
> create 2 directories for the servers: zookeeper1 and zookeeper2 and create
> myid files in each
>
> echo 1 > zookeeper1/myid
>
> echo 2 > zookeeper2/myid
>
> I find it easier for debugging to allow zkServer.sh to log to stdout. You
> can do this by changing zkServer.sh:
> - change nohup "$JAVA" to just "$JAVA"
> - remove " > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null"
>
> In two shells start both servers by
>
> export ZOOCFG=zoo_replicated1.cfg  (change for server 2)
>
> ./bin/zkServer.sh start
>
> In a third shell I start the client by connecting it to server 2 as you did
>
> ./bin/zkCli.sh -server 127.0.0.1:2792
>
> I run the following in the shell:
>
> [zk: 127.0.0.1:2792(CONNECTED) 2] config
>
> server.1=localhost:2721:2731:participant;localhost:2791
>
> version=1
>
> [zk: 127.0.0.1:2792(CONNECTED) 2] reconfig -add
> "server.2=localhost:2741:2751:participant;localhost:2792"
>
> Committed new configuration:
>
> server.1=localhost:2721:2731:participant;localhost:2791
>
> server.2=localhost:2741:2751:participant;localhost:2792
>
> version=20003
>
> On Thu, Dec 30, 2021 at 10:47 AM Eric Edgar
>  wrote:
>
> > I am a little closer I think.  I disabled auth for testing using the
> server
> > flags .. but now I am getting a different error that the reconfig is in
> > process and I see a zookeeper.dynamic.next file on both servers but
> nothing
> > happens after that.
> > What would cause that file to not be merged into a new cfg.
> > Eric
> >
> > On Thu, Dec 30, 2021 at 11:47 AM Eric Edgar 
> > wrote:
> >
> > > Alex,
> > > so I have 2 nodes .. the first has itself in the dynamic list with an
> id
> > > of 1.
> > > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> > >
> > > I have brought the second node up with an id of 2
> > > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> > > server.2=10.1.1.40:2888:3888:participant;2181
> > >
> > > then i am trying to run from the second node.  zkCli.sh -server
> > 10.1.1.104
> > > reconfig -add "server.2=10.1.1.40:2888:3888:participant;2181"
> > >
> > >
> > >
> > > I get this error on the first server
> > > 2021-12-30 17:37:02,880 [myid:1] - INFO  [ProcessThread(sid:1
> > > cport:-1)::PrepRequestProcessor@461] - Incremental reconfig
> > > 2021-12-30 17:37:02,880 [myid:1] - WARN  [ProcessThread(sid:1
> > > cport:-1)::PrepRequestProcessor@532] - Reconfig failed - there must
> be a
> > > connected and synced quorum in new configuration
> > > 2021-12-30 17:37:02,880 [myid:1] - INFO  [ProcessThread(sid:1
> > > cport:-1)::PrepRequestProcessor@935] - Got user-level KeeperException
> > > when processing sessionid:0x1002dfe65610014 type:reconfig cxid:0x1
> > > zxid:0x160033 txntype:-1 reqpath:n
> > >
> > >
> > > on the second server issuing the reconfig command I get this error
> > > No quorum of new config is connected and up-to-date with the leader of
> > > last commmitted config - try invoking reconfiguration after new servers
> > are
> > > connected and synced
> > >
> > > I have not set any security at this point.
> > >
> > > I am not sure what I am missing at this point, assuming I don't need 2
> > > nodes fully clustered in advance as mentioned by Chris.
> > >
> > > Thanks,
> > > Eric
> > >
> > > On Thu, Dec 30, 2021 at 11:03 AM Alexander Shraer 
> > > wrote:
> > >
> > >> This is already possible, since the 3.5.0 release:
> > >>
> > >>
> >
> https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_standaloneEnabled
> > >>
> > >> After your single node is up and running, you can connect other nodes
> to
> 

Re: Bootstrapping a new cluster and using the reconfig feature

2021-12-30 Thread Alexander Shraer
The reconfig is in process means something failed during reconfiguration
and it couldn't complete. Perhaps the new server disconnected in the middle
and never came back up. Notice that the second server's config file gets
overwritten after it connects to the leader, and if it reboots at this
stage it won't be able to connect again without you manually overwriting
its config file again (since in the server's config server 2 is not part of
the ensemble).

I checked it locally (running both servers on my laptop), and it worked.
Perhaps start from that ?

Like you said, I disabled acl by adding

"-Dzookeeper.skipACL=yes"

Here's the first server's config file: conf/zoo_replicated1.cfg

dataDir=/Users/shralex/my-zookeeper/zookeeper1

syncLimit=2

initLimit=5

tickTime=2000

clientPort=2791

reconfigEnabled=true

standaloneEnabled=false

server.1=localhost:2721:2731:participant;localhost:2791

The second server's: conf/zoo_replicated2.cfg

ataDir=/Users/shralex/my-zookeeper/zookeeper2

syncLimit=2

initLimit=5

tickTime=2000

clientPort=2792

reconfigEnabled=true

standaloneEnabled=false

server.1=localhost:2721:2731:participant;localhost:2791

server.2=localhost:2741:2751:participant;localhost:2792

create 2 directories for the servers: zookeeper1 and zookeeper2 and create
myid files in each

echo 1 > zookeeper1/myid

echo 2 > zookeeper2/myid

I find it easier for debugging to allow zkServer.sh to log to stdout. You
can do this by changing zkServer.sh:
- change nohup "$JAVA" to just "$JAVA"
- remove " > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null"

In two shells start both servers by

export ZOOCFG=zoo_replicated1.cfg  (change for server 2)

./bin/zkServer.sh start

In a third shell I start the client by connecting it to server 2 as you did

./bin/zkCli.sh -server 127.0.0.1:2792

I run the following in the shell:

[zk: 127.0.0.1:2792(CONNECTED) 2] config

server.1=localhost:2721:2731:participant;localhost:2791

version=1

[zk: 127.0.0.1:2792(CONNECTED) 2] reconfig -add
"server.2=localhost:2741:2751:participant;localhost:2792"

Committed new configuration:

server.1=localhost:2721:2731:participant;localhost:2791

server.2=localhost:2741:2751:participant;localhost:2792

version=20003

On Thu, Dec 30, 2021 at 10:47 AM Eric Edgar
 wrote:

> I am a little closer I think.  I disabled auth for testing using the server
> flags .. but now I am getting a different error that the reconfig is in
> process and I see a zookeeper.dynamic.next file on both servers but nothing
> happens after that.
> What would cause that file to not be merged into a new cfg.
> Eric
>
> On Thu, Dec 30, 2021 at 11:47 AM Eric Edgar 
> wrote:
>
> > Alex,
> > so I have 2 nodes .. the first has itself in the dynamic list with an id
> > of 1.
> > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> >
> > I have brought the second node up with an id of 2
> > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> > server.2=10.1.1.40:2888:3888:participant;2181
> >
> > then i am trying to run from the second node.  zkCli.sh -server
> 10.1.1.104
> > reconfig -add "server.2=10.1.1.40:2888:3888:participant;2181"
> >
> >
> >
> > I get this error on the first server
> > 2021-12-30 17:37:02,880 [myid:1] - INFO  [ProcessThread(sid:1
> > cport:-1)::PrepRequestProcessor@461] - Incremental reconfig
> > 2021-12-30 17:37:02,880 [myid:1] - WARN  [ProcessThread(sid:1
> > cport:-1)::PrepRequestProcessor@532] - Reconfig failed - there must be a
> > connected and synced quorum in new configuration
> > 2021-12-30 17:37:02,880 [myid:1] - INFO  [ProcessThread(sid:1
> > cport:-1)::PrepRequestProcessor@935] - Got user-level KeeperException
> > when processing sessionid:0x1002dfe65610014 type:reconfig cxid:0x1
> > zxid:0x160033 txntype:-1 reqpath:n
> >
> >
> > on the second server issuing the reconfig command I get this error
> > No quorum of new config is connected and up-to-date with the leader of
> > last commmitted config - try invoking reconfiguration after new servers
> are
> > connected and synced
> >
> > I have not set any security at this point.
> >
> > I am not sure what I am missing at this point, assuming I don't need 2
> > nodes fully clustered in advance as mentioned by Chris.
> >
> > Thanks,
> > Eric
> >
> > On Thu, Dec 30, 2021 at 11:03 AM Alexander Shraer 
> > wrote:
> >
> >> This is already possible, since the 3.5.0 release:
> >>
> >>
> https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_standaloneEnabled
> >>
> >> After your single node is up and running, you can connect other nodes to
> >> it
> >> as described in the reconfig manual. See "Adding servers" in the link
> >> above.
> >> Essentially, you need to specify the new server's initial config files
> so
> >> that they can find some existing server and start syncing data. Once a
> >> quorum
> >> of the new config is up to date, you can invoke the reconfig command to
> >> officially make them part of the configuration.
> >>
> >> Thanks,
> >> Alex
> >>
> >> On 

Re: Bootstrapping a new cluster and using the reconfig feature

2021-12-30 Thread Eric Edgar
I am a little closer I think.  I disabled auth for testing using the server
flags .. but now I am getting a different error that the reconfig is in
process and I see a zookeeper.dynamic.next file on both servers but nothing
happens after that.
What would cause that file to not be merged into a new cfg.
Eric

On Thu, Dec 30, 2021 at 11:47 AM Eric Edgar 
wrote:

> Alex,
> so I have 2 nodes .. the first has itself in the dynamic list with an id
> of 1.
> server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
>
> I have brought the second node up with an id of 2
> server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> server.2=10.1.1.40:2888:3888:participant;2181
>
> then i am trying to run from the second node.  zkCli.sh -server 10.1.1.104
> reconfig -add "server.2=10.1.1.40:2888:3888:participant;2181"
>
>
>
> I get this error on the first server
> 2021-12-30 17:37:02,880 [myid:1] - INFO  [ProcessThread(sid:1
> cport:-1)::PrepRequestProcessor@461] - Incremental reconfig
> 2021-12-30 17:37:02,880 [myid:1] - WARN  [ProcessThread(sid:1
> cport:-1)::PrepRequestProcessor@532] - Reconfig failed - there must be a
> connected and synced quorum in new configuration
> 2021-12-30 17:37:02,880 [myid:1] - INFO  [ProcessThread(sid:1
> cport:-1)::PrepRequestProcessor@935] - Got user-level KeeperException
> when processing sessionid:0x1002dfe65610014 type:reconfig cxid:0x1
> zxid:0x160033 txntype:-1 reqpath:n
>
>
> on the second server issuing the reconfig command I get this error
> No quorum of new config is connected and up-to-date with the leader of
> last commmitted config - try invoking reconfiguration after new servers are
> connected and synced
>
> I have not set any security at this point.
>
> I am not sure what I am missing at this point, assuming I don't need 2
> nodes fully clustered in advance as mentioned by Chris.
>
> Thanks,
> Eric
>
> On Thu, Dec 30, 2021 at 11:03 AM Alexander Shraer 
> wrote:
>
>> This is already possible, since the 3.5.0 release:
>>
>> https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_standaloneEnabled
>>
>> After your single node is up and running, you can connect other nodes to
>> it
>> as described in the reconfig manual. See "Adding servers" in the link
>> above.
>> Essentially, you need to specify the new server's initial config files so
>> that they can find some existing server and start syncing data. Once a
>> quorum
>> of the new config is up to date, you can invoke the reconfig command to
>> officially make them part of the configuration.
>>
>> Thanks,
>> Alex
>>
>> On Thu, Dec 30, 2021 at 8:57 AM Eric Edgar
>>  wrote:
>>
>> > Also would it be possible to update the code for this edge case,  eg if
>> the
>> > current quorum is 1, and you want to add a node then add a flag saying I
>> > trust the single master and reconfigure itself into a 2 node cluster?
>> > Thanks,
>> > Eric
>> >
>> > On Thu, Dec 30, 2021 at 10:49 AM Eric Edgar > >
>> > wrote:
>> >
>> > > Are there any examples with a k8 orchestrator or some sort of docker
>> init
>> > > scripts handling the initial cluster configuration?
>> > > Thanks,
>> > > Eric
>> > >
>> > > On Thu, Dec 30, 2021 at 9:44 AM Chris T. 
>> wrote:
>> > >
>> > >> If you want to run a zookeeper cluster you have to start with at
>> least 2
>> > >> members. From there you can scale up with the dynamic reconfig
>> commands.
>> > >> Regards
>> > >> Chris
>> > >>
>> > >> On 30 December 2021 16:40:40 Eric Edgar
>> > >>  wrote:
>> > >>
>> > >> > I am experimenting with zk and the reconfig feature and trying to
>> > >> > understand if I can start a single zk node and then
>> reconfig/bootstrap
>> > >> the
>> > >> > other 2 nodes into the ensemble.  The reconfig command is throwing
>> an
>> > >> error
>> > >> > that there isn't a quorum yet.  Is this line of thinking
>> possible?  or
>> > >> do I
>> > >> > need to setup the first 3 nodes manually the first time?
>> > >> > I am basing this experiment off of this web page.
>> > >> >
>> > >>
>> >
>> https://blog.container-solutions.com/dynamic-zookeeper-cluster-with-docker
>> > >> >
>> > >> > /opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181
>> > reconfig
>> > >> -add
>> > >> > "server.2=10.1.1.40:2888:3888:participant;2181"
>> > >> > No quorum of new config is connected and up-to-date with the
>> leader of
>> > >> last
>> > >> > commmitted config - try invoking reconfiguration after new servers
>> are
>> > >> > connected and synced
>> > >> >
>> > >> > /opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181
>> config
>> > >> > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
>> > >> >
>> > >> > cat ./zoo.cfg
>> > >> > autopurge.purgeInterval=1
>> > >> > initLimit=10
>> > >> > syncLimit=5
>> > >> > autopurge.snapRetainCount=6
>> > >> > tickTime=2000
>> > >> > dataDir=/mnt/zookeeper/data
>> > >> > reconfigEnabled=true
>> > >> > standaloneEnabled=false
>> > >> >
>> > >>
>> >
>> dynamicConfigFile=/opt/zookeeper/zookeeper/conf/zoo.cfg.dynamic.16

Re: Bootstrapping a new cluster and using the reconfig feature

2021-12-30 Thread Eric Edgar
Alex,
so I have 2 nodes .. the first has itself in the dynamic list with an id of
1.
server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181

I have brought the second node up with an id of 2
server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
server.2=10.1.1.40:2888:3888:participant;2181

then i am trying to run from the second node.  zkCli.sh -server 10.1.1.104
reconfig -add "server.2=10.1.1.40:2888:3888:participant;2181"



I get this error on the first server
2021-12-30 17:37:02,880 [myid:1] - INFO  [ProcessThread(sid:1
cport:-1)::PrepRequestProcessor@461] - Incremental reconfig
2021-12-30 17:37:02,880 [myid:1] - WARN  [ProcessThread(sid:1
cport:-1)::PrepRequestProcessor@532] - Reconfig failed - there must be a
connected and synced quorum in new configuration
2021-12-30 17:37:02,880 [myid:1] - INFO  [ProcessThread(sid:1
cport:-1)::PrepRequestProcessor@935] - Got user-level KeeperException when
processing sessionid:0x1002dfe65610014 type:reconfig cxid:0x1
zxid:0x160033 txntype:-1 reqpath:n


on the second server issuing the reconfig command I get this error
No quorum of new config is connected and up-to-date with the leader of last
commmitted config - try invoking reconfiguration after new servers are
connected and synced

I have not set any security at this point.

I am not sure what I am missing at this point, assuming I don't need 2
nodes fully clustered in advance as mentioned by Chris.

Thanks,
Eric

On Thu, Dec 30, 2021 at 11:03 AM Alexander Shraer  wrote:

> This is already possible, since the 3.5.0 release:
>
> https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_standaloneEnabled
>
> After your single node is up and running, you can connect other nodes to it
> as described in the reconfig manual. See "Adding servers" in the link
> above.
> Essentially, you need to specify the new server's initial config files so
> that they can find some existing server and start syncing data. Once a
> quorum
> of the new config is up to date, you can invoke the reconfig command to
> officially make them part of the configuration.
>
> Thanks,
> Alex
>
> On Thu, Dec 30, 2021 at 8:57 AM Eric Edgar
>  wrote:
>
> > Also would it be possible to update the code for this edge case,  eg if
> the
> > current quorum is 1, and you want to add a node then add a flag saying I
> > trust the single master and reconfigure itself into a 2 node cluster?
> > Thanks,
> > Eric
> >
> > On Thu, Dec 30, 2021 at 10:49 AM Eric Edgar 
> > wrote:
> >
> > > Are there any examples with a k8 orchestrator or some sort of docker
> init
> > > scripts handling the initial cluster configuration?
> > > Thanks,
> > > Eric
> > >
> > > On Thu, Dec 30, 2021 at 9:44 AM Chris T.  wrote:
> > >
> > >> If you want to run a zookeeper cluster you have to start with at
> least 2
> > >> members. From there you can scale up with the dynamic reconfig
> commands.
> > >> Regards
> > >> Chris
> > >>
> > >> On 30 December 2021 16:40:40 Eric Edgar
> > >>  wrote:
> > >>
> > >> > I am experimenting with zk and the reconfig feature and trying to
> > >> > understand if I can start a single zk node and then
> reconfig/bootstrap
> > >> the
> > >> > other 2 nodes into the ensemble.  The reconfig command is throwing
> an
> > >> error
> > >> > that there isn't a quorum yet.  Is this line of thinking possible?
> or
> > >> do I
> > >> > need to setup the first 3 nodes manually the first time?
> > >> > I am basing this experiment off of this web page.
> > >> >
> > >>
> >
> https://blog.container-solutions.com/dynamic-zookeeper-cluster-with-docker
> > >> >
> > >> > /opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181
> > reconfig
> > >> -add
> > >> > "server.2=10.1.1.40:2888:3888:participant;2181"
> > >> > No quorum of new config is connected and up-to-date with the leader
> of
> > >> last
> > >> > commmitted config - try invoking reconfiguration after new servers
> are
> > >> > connected and synced
> > >> >
> > >> > /opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181
> config
> > >> > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> > >> >
> > >> > cat ./zoo.cfg
> > >> > autopurge.purgeInterval=1
> > >> > initLimit=10
> > >> > syncLimit=5
> > >> > autopurge.snapRetainCount=6
> > >> > tickTime=2000
> > >> > dataDir=/mnt/zookeeper/data
> > >> > reconfigEnabled=true
> > >> > standaloneEnabled=false
> > >> >
> > >>
> >
> dynamicConfigFile=/opt/zookeeper/zookeeper/conf/zoo.cfg.dynamic.16
> > >> >
> > >> > What is the best solution for an unattended bootstrap setup of a new
> > >> > cluster from scratch?
> > >> >
> > >> >
> > >> > This was something that we were able to accomplish with exhibitor on
> > >> older
> > >> > versions of zookeeper in the past.
> > >>
> > >>
> >
>


Re: Bootstrapping a new cluster and using the reconfig feature

2021-12-30 Thread Alexander Shraer
This is already possible, since the 3.5.0 release:
https://zookeeper.apache.org/doc/r3.5.3-beta/zookeeperReconfig.html#sc_reconfig_standaloneEnabled

After your single node is up and running, you can connect other nodes to it
as described in the reconfig manual. See "Adding servers" in the link above.
Essentially, you need to specify the new server's initial config files so
that they can find some existing server and start syncing data. Once a
quorum
of the new config is up to date, you can invoke the reconfig command to
officially make them part of the configuration.

Thanks,
Alex

On Thu, Dec 30, 2021 at 8:57 AM Eric Edgar
 wrote:

> Also would it be possible to update the code for this edge case,  eg if the
> current quorum is 1, and you want to add a node then add a flag saying I
> trust the single master and reconfigure itself into a 2 node cluster?
> Thanks,
> Eric
>
> On Thu, Dec 30, 2021 at 10:49 AM Eric Edgar 
> wrote:
>
> > Are there any examples with a k8 orchestrator or some sort of docker init
> > scripts handling the initial cluster configuration?
> > Thanks,
> > Eric
> >
> > On Thu, Dec 30, 2021 at 9:44 AM Chris T.  wrote:
> >
> >> If you want to run a zookeeper cluster you have to start with at least 2
> >> members. From there you can scale up with the dynamic reconfig commands.
> >> Regards
> >> Chris
> >>
> >> On 30 December 2021 16:40:40 Eric Edgar
> >>  wrote:
> >>
> >> > I am experimenting with zk and the reconfig feature and trying to
> >> > understand if I can start a single zk node and then reconfig/bootstrap
> >> the
> >> > other 2 nodes into the ensemble.  The reconfig command is throwing an
> >> error
> >> > that there isn't a quorum yet.  Is this line of thinking possible?  or
> >> do I
> >> > need to setup the first 3 nodes manually the first time?
> >> > I am basing this experiment off of this web page.
> >> >
> >>
> https://blog.container-solutions.com/dynamic-zookeeper-cluster-with-docker
> >> >
> >> > /opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181
> reconfig
> >> -add
> >> > "server.2=10.1.1.40:2888:3888:participant;2181"
> >> > No quorum of new config is connected and up-to-date with the leader of
> >> last
> >> > commmitted config - try invoking reconfiguration after new servers are
> >> > connected and synced
> >> >
> >> > /opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181 config
> >> > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> >> >
> >> > cat ./zoo.cfg
> >> > autopurge.purgeInterval=1
> >> > initLimit=10
> >> > syncLimit=5
> >> > autopurge.snapRetainCount=6
> >> > tickTime=2000
> >> > dataDir=/mnt/zookeeper/data
> >> > reconfigEnabled=true
> >> > standaloneEnabled=false
> >> >
> >>
> dynamicConfigFile=/opt/zookeeper/zookeeper/conf/zoo.cfg.dynamic.16
> >> >
> >> > What is the best solution for an unattended bootstrap setup of a new
> >> > cluster from scratch?
> >> >
> >> >
> >> > This was something that we were able to accomplish with exhibitor on
> >> older
> >> > versions of zookeeper in the past.
> >>
> >>
>


Re: Bootstrapping a new cluster and using the reconfig feature

2021-12-30 Thread Eric Edgar
Also would it be possible to update the code for this edge case,  eg if the
current quorum is 1, and you want to add a node then add a flag saying I
trust the single master and reconfigure itself into a 2 node cluster?
Thanks,
Eric

On Thu, Dec 30, 2021 at 10:49 AM Eric Edgar 
wrote:

> Are there any examples with a k8 orchestrator or some sort of docker init
> scripts handling the initial cluster configuration?
> Thanks,
> Eric
>
> On Thu, Dec 30, 2021 at 9:44 AM Chris T.  wrote:
>
>> If you want to run a zookeeper cluster you have to start with at least 2
>> members. From there you can scale up with the dynamic reconfig commands.
>> Regards
>> Chris
>>
>> On 30 December 2021 16:40:40 Eric Edgar
>>  wrote:
>>
>> > I am experimenting with zk and the reconfig feature and trying to
>> > understand if I can start a single zk node and then reconfig/bootstrap
>> the
>> > other 2 nodes into the ensemble.  The reconfig command is throwing an
>> error
>> > that there isn't a quorum yet.  Is this line of thinking possible?  or
>> do I
>> > need to setup the first 3 nodes manually the first time?
>> > I am basing this experiment off of this web page.
>> >
>> https://blog.container-solutions.com/dynamic-zookeeper-cluster-with-docker
>> >
>> > /opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181 reconfig
>> -add
>> > "server.2=10.1.1.40:2888:3888:participant;2181"
>> > No quorum of new config is connected and up-to-date with the leader of
>> last
>> > commmitted config - try invoking reconfiguration after new servers are
>> > connected and synced
>> >
>> > /opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181 config
>> > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
>> >
>> > cat ./zoo.cfg
>> > autopurge.purgeInterval=1
>> > initLimit=10
>> > syncLimit=5
>> > autopurge.snapRetainCount=6
>> > tickTime=2000
>> > dataDir=/mnt/zookeeper/data
>> > reconfigEnabled=true
>> > standaloneEnabled=false
>> >
>> dynamicConfigFile=/opt/zookeeper/zookeeper/conf/zoo.cfg.dynamic.16
>> >
>> > What is the best solution for an unattended bootstrap setup of a new
>> > cluster from scratch?
>> >
>> >
>> > This was something that we were able to accomplish with exhibitor on
>> older
>> > versions of zookeeper in the past.
>>
>>


Re: Bootstrapping a new cluster and using the reconfig feature

2021-12-30 Thread Eric Edgar
Are there any examples with a k8 orchestrator or some sort of docker init
scripts handling the initial cluster configuration?
Thanks,
Eric

On Thu, Dec 30, 2021 at 9:44 AM Chris T.  wrote:

> If you want to run a zookeeper cluster you have to start with at least 2
> members. From there you can scale up with the dynamic reconfig commands.
> Regards
> Chris
>
> On 30 December 2021 16:40:40 Eric Edgar
>  wrote:
>
> > I am experimenting with zk and the reconfig feature and trying to
> > understand if I can start a single zk node and then reconfig/bootstrap
> the
> > other 2 nodes into the ensemble.  The reconfig command is throwing an
> error
> > that there isn't a quorum yet.  Is this line of thinking possible?  or
> do I
> > need to setup the first 3 nodes manually the first time?
> > I am basing this experiment off of this web page.
> >
> https://blog.container-solutions.com/dynamic-zookeeper-cluster-with-docker
> >
> > /opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181 reconfig
> -add
> > "server.2=10.1.1.40:2888:3888:participant;2181"
> > No quorum of new config is connected and up-to-date with the leader of
> last
> > commmitted config - try invoking reconfiguration after new servers are
> > connected and synced
> >
> > /opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181 config
> > server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181
> >
> > cat ./zoo.cfg
> > autopurge.purgeInterval=1
> > initLimit=10
> > syncLimit=5
> > autopurge.snapRetainCount=6
> > tickTime=2000
> > dataDir=/mnt/zookeeper/data
> > reconfigEnabled=true
> > standaloneEnabled=false
> >
> dynamicConfigFile=/opt/zookeeper/zookeeper/conf/zoo.cfg.dynamic.16
> >
> > What is the best solution for an unattended bootstrap setup of a new
> > cluster from scratch?
> >
> >
> > This was something that we were able to accomplish with exhibitor on
> older
> > versions of zookeeper in the past.
>
>


Re: Bootstrapping a new cluster and using the reconfig feature

2021-12-30 Thread Chris T.
If you want to run a zookeeper cluster you have to start with at least 2 
members. From there you can scale up with the dynamic reconfig commands.

Regards
Chris

On 30 December 2021 16:40:40 Eric Edgar 
 wrote:



I am experimenting with zk and the reconfig feature and trying to
understand if I can start a single zk node and then reconfig/bootstrap the
other 2 nodes into the ensemble.  The reconfig command is throwing an error
that there isn't a quorum yet.  Is this line of thinking possible?  or do I
need to setup the first 3 nodes manually the first time?
I am basing this experiment off of this web page.
https://blog.container-solutions.com/dynamic-zookeeper-cluster-with-docker

/opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181 reconfig -add
"server.2=10.1.1.40:2888:3888:participant;2181"
No quorum of new config is connected and up-to-date with the leader of last
commmitted config - try invoking reconfiguration after new servers are
connected and synced

/opt/zookeeper/zookeeper/bin/zkCli.sh -server 10.1.1.104:2181 config
server.1=10.1.1.104:2888:3888:participant;0.0.0.0:2181

cat ./zoo.cfg
autopurge.purgeInterval=1
initLimit=10
syncLimit=5
autopurge.snapRetainCount=6
tickTime=2000
dataDir=/mnt/zookeeper/data
reconfigEnabled=true
standaloneEnabled=false
dynamicConfigFile=/opt/zookeeper/zookeeper/conf/zoo.cfg.dynamic.16

What is the best solution for an unattended bootstrap setup of a new
cluster from scratch?


This was something that we were able to accomplish with exhibitor on older
versions of zookeeper in the past.