zookeeper-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Litvak <peter.lit...@gmail.com>
Subject Re: is it possible to run multiple servers on the same machine and have data replication working?
Date Wed, 05 Sep 2012 21:13:40 GMT
Thank you for the suggestions. All that is done and I'm still getting no
replication.
Basically here is a simple java test program, I'm using the ZooKeeper v
3.4.3.
The tick is set to 2000 and init and sync to 2 ticks. Client ports and data
dirs are different for each server, and myid is present and correct.
--
public class Test {

    private static final Logger log = Logger.getLogger(Test.class);

    public static void main(String[] agrs)  throws Exception {

        startServer("src/main/resources/zoo_s1.cfg");
        startServer("src/main/resources/zoo_s2.cfg");
        startServer("src/main/resources/zoo_s3.cfg");
        Thread.sleep(30000);

        ZooKeeper zc1 = new ZooKeeper("localhost:2181", 100000, new
MyWatcher());
        ZooKeeper zc2 = new ZooKeeper("localhost:2182", 100000, new
MyWatcher());
        ZooKeeper zc3 = new ZooKeeper("localhost:2183", 100000, new
MyWatcher());

        zc1.create("/ROOT", new byte[]{-1}, OPEN_ACL_UNSAFE, PERSISTENT);
        if (zc1.exists("/ROOT", false) != null) {
            log.info(">>>> ROOT was created!");
        } else {
            throw new RuntimeException("No ROOT !");
        }

        Thread.sleep(10000);

        if (zc2.exists("/ROOT", false) != null) {
            log.info(">>>> ROOT exists!");
        } else {
            log.info(">>>> No ROOT yet!");
        }

        Thread.sleep(10000);

        if (zc3.exists("/ROOT", false) != null) {
            log.info(">>>> ROOT exists!");
        } else {
            log.info(">>>> No ROOT yet!");
        }
    }


    private static Thread startServer(String configPath) throws
QuorumPeerConfig.ConfigException {

        final ZooKeeperServerMain z1 = new ZooKeeperServerMain();
        final ServerConfig sc1 = new ServerConfig();
        sc1.parse(configPath);
        Thread t1 = new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    z1.runFromConfig(sc1);
                } catch (IOException e) {
                    log.error("!!!", e);
                }
            }
        });

        t1.start();

        return t1;
    }

    private static class MyWatcher implements Watcher {

        @Override
        public void process(WatchedEvent event) {

            log.info(event.toString());
        }
    }
}
--

I expected the second and most definitely the third exists to succeed but
they both print "No ROOT yet!".

Any ideas on what could be wrong here?

On Sun, Sep 2, 2012 at 8:48 AM, Hartmut Lang <hartmut.lang@gmail.com> wrote:

> You also have to take care of the "clientPort".
> You have to use different clientPorts per instance. Otherwise, the instance
> can not start up because the port is in use.
> /Hartmut
>
> 2012/9/1 Peter Litvak <peter.litvak@gmail.com>
>
> > Well, I actually had to create three server.x entries in the config since
> > it wouldn't start with just two.
> > Maybe the problem is in that even though I have three entries I'm
> starting
> > only two server instances.
> > So basically config has (as suggested by getting started guide):
> > server.1=localhost:2887:3887
> > server.2=localhost:2888:3888
> > server.3=localhost:2889:3889
> >
> > I also have two different data dirs with myid (1 and 2).
> > And then I start two servers using this config.
> > I then have a program that starts one client connected to the first
> > server which creates a node and immediately start the another client that
> > connects to the second server and checks for an existence of that node
> and
> > it fails.
> >
> > On Sat, Sep 1, 2012 at 4:51 PM, Jordan Zimmerman <
> > jordan@jordanzimmerman.com
> > > wrote:
> >
> > > Make sure both instances are in both config files. Also make sure the
> > > myid files exist.
> > >
> > > ====================
> > > Jordan Zimmerman
> > >
> > > On Sep 1, 2012, at 1:46 PM, Peter Litvak <peter.litvak@gmail.com>
> wrote:
> > >
> > > > Hmm, then something else is wrong, I don't get data replication
> across
> > > the
> > > > servers. I'm wondering what could be the problem.
> > > > On Sep 1, 2012 4:42 PM, "Hartmut Lang" <hartmut.lang@gmail.com>
> wrote:
> > > >
> > > >> Hi Peter,
> > > >>
> > > >> running multiple instances on the same machine is no problem.
> > > >> You just have to use different config-files (zoo.cfg), and set
> > different
> > > >> data-dirs in them (dataDir=...).
> > > >>
> > > >> Hartmut
> > > >>
> > > >>
> > > >> 2012/8/31 Patrick Hunt <phunt@apache.org>
> > > >>
> > > >>> Take a look at this: https://github.com/phunt/zkconf If you run
it
> > > >>> with --count=x (see the examples) it will generate the proper
> > configs,
> > > >>> as well as a start script to run all locally.
> > > >>>
> > > >>> Patrick
> > > >>>
> > > >>> On Fri, Aug 31, 2012 at 1:05 PM, Peter Litvak <
> > peter.litvak@gmail.com>
> > > >>> wrote:
> > > >>>> Hi All,
> > > >>>>
> > > >>>> There is an explanation on how to run multiple instances of
the
> > > >> zookeeper
> > > >>>> server on the same machine (in getting started) but that seems
> > doesn't
> > > >>>> allow data replication between those servers.
> > > >>>> Is there a way to achieve a data replication among servers
running
> > on
> > > >> the
> > > >>>> same machine?
> > > >>>>
> > > >>>> I suspect that the answer is NO, just wanted to make sure.
> > > >>>>
> > > >>>> Thank you,
> > > >>>> Peter
> > > >>>
> > > >>
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message