接下来我们将启动一个单实例的zookeeper然后在此基础上搭建一个最简单的zookeeper集群,为了贯彻最简单的理念,我们的集群将共只有三个节点,并且他们都在同一台机器上。
好了,让我们开始干吧!
tar -xvzf zookeeper-3.4.12.tar.gz
解压后到conf目录下,复制一份配置文件:cp zoo_sample.cfg zoo.cfg
虽然是可选的,最好还是把data移出/tmp目录,我在zookeeper的安装目录下创建了一个data目录,到zookeeper目录下执行:mkdir data
然后修改zoo.cfg文件中的dataDir,我修改后的文件内容为:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ym/zookeeper/zookeeper-3.4.12/data
clientPort=2181
到bin目录下执行:./zkServer.sh start
出现以下内容表示成功了:
[ym@localhost bin]$ ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/ym/zookeeper/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
首先,从上面的单实例配置文件zoo.cfg复制一份:cp zoo.cfg zoo1.cfg
修改其中内容为:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ym/zookeeper/zookeeper-3.4.12/data1
clientPort=2182
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
创建zoo2.cfg和zoo3.cfg:
cp zoo1.cfg zoo2.cfg
cp zoo1.cfg zoo3.cfg
修改zoo2.cfg和zoo3.cfg中clientPort分别为2183和2184、dataDir分别指向data2和data3,修改后内容分别为:
data2.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ym/zookeeper/zookeeper-3.4.12/data2
clientPort=2183
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
data3.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ym/zookeeper/zookeeper-3.4.12/data3
clientPort=2183
server.1=127.0.0.1:2222:2223
server.2=127.0.0.1:3333:3334
server.3=127.0.0.1:4444:4445
每一个server.n项指定了编号为n的ZooKeeper服务器使用的地址和端口号。每个server.n项通过冒号分隔为三部分,第一部分为服务器n的IP地址或主机名(hostname),第二部分和第三部分为TCP端口号,分别用于仲裁通信和群首选举。因为我们在同一个机器上运行三个服务器进程,所以我们需要在每一项中使用不同的端口号。通常,我们在不同的服务器上运行每个服务器进程,因此每个服务器项的配置可以使用相同的端口号。
到zookeeper安装目录下执行:
mkdir data1
mkdir data2
mkdir data3
当启动一个服务器时,我们需要知道启动的是哪个服务器。一个服
务器通过读取data目录下一个名为myid的文件来获取服务器ID信息。可
以通过以下命令来创建这些文件:
echo 1 > data1/myid
echo 2 > data2/myid
echo 3 > data3/myid
打开三个终端,到zookeeper目录下分别执行:
bin/zkServer.sh start ../conf/zoo1.cfg
bin/zkServer.sh start ../conf/zoo2.cfg
bin/zkServer.sh start ../conf/zoo3.cfg
bin/zkCli.sh -server 127.0.0.1:2182,127.0.0.1:2183,127.0.0.1:2184
会出现如下信息:
[myid:] - INFO [...] - Session establishment
complete on server localhost/127.0.0.1:2182 ...
表面客户端连接到了端口为2182的zookeeper服务器上。
使用ctrl+c停止并重新使用上述命令进行连接,如此往复几次会发现连接的端口在2182,2183,2184来回改变。
参考:《ZooKeeper-分布式过程协同技术》
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。