接下来我们将启动一个单实例的zookeeper然后在此基础上搭建一个最简单的zookeeper集群,为了贯彻最简单的理念,我们的集群将共只有三个节点,并且他们都在同一台机器上。
好了,让我们开始干吧!
单实例
1. 解压安装包并复制配置文件
tar -xvzf zookeeper-3.4.12.tar.gz
解压后到conf目录下,复制一份配置文件:cp zoo_sample.cfg zoo.cfg
2. 修改dataDir
虽然是可选的,最好还是把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
3. 启动实例
到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
集群搭建
1. 修改配置文件
首先,从上面的单实例配置文件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端口号,分别用于仲裁通信和群首选举。因为我们在同一个机器上运行三个服务器进程,所以我们需要在每一项中使用不同的端口号。通常,我们在不同的服务器上运行每个服务器进程,因此每个服务器项的配置可以使用相同的端口号。
2 创建data目录
到zookeeper安装目录下执行:
mkdir data1
mkdir data2
mkdir data3
当启动一个服务器时,我们需要知道启动的是哪个服务器。一个服
务器通过读取data目录下一个名为myid的文件来获取服务器ID信息。可
以通过以下命令来创建这些文件:
echo 1 > data1/myid
echo 2 > data2/myid
echo 3 > data3/myid
3 启动实例
打开三个终端,到zookeeper目录下分别执行:
bin/zkServer.sh start ../conf/zoo1.cfg
bin/zkServer.sh start ../conf/zoo2.cfg
bin/zkServer.sh start ../conf/zoo3.cfg
4 使用zkCli.sh访问集群
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-分布式过程协同技术》
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/194748.html