在搭建Zookeeper集群之前,首先需要确保的就是主机名称(可选)、hosts都已经更改,JDK成功安装,并且JAVA_HOME要配置正确。
1、安装Zookeeper
使用命令“tar -zxvf”命令将gz压缩文件解压。笔者Zookeeper的安装包所在的目录为:“/usr/local/zookeeper/zookeeper-3.4.6.tar.gz”,解压后的目录为/usr/local/zookeeper/zookeeper-3.4.6”,最好确保三台机器上的Zookeeper安装路径一致。
2、配置Zookeeper的环境变量
成功安装Zookeeper后,接下来要做的事情就是配置Zookeeper的环境变量,并通过命令“source “/etc/profile”命令使修改后的配置生效,如下所示:
- #ZOOKEEPER
- ZOOKEEPER=/usr/local/zookeeper/zookeeper-3.4.6
- PATH=$PATH:$ZOOKEEPER/bin
3、修改Zookeeper的配置文件
首先将/usr/local/zookeeper/zookeeper-3.4.6/conf/zoo_sample.cfg文件复制一份,并更名为zoo.cfg,
在/usr/local/zookeeper/zookeeper-3.4.6/conf目录下命令:cp zoo_sample.cfg zoo.cfg
如下所示:
- # The number of milliseconds of each tick
- tickTime=2000
- # The number of ticks that the initial
- # synchronization phase can take
- initLimit=10
- # The number of ticks that can pass between
- # sending a request and getting an acknowledgement
- syncLimit=5
- # the directory where the snapshot is stored.
- # do not use /tmp for storage, /tmp here is just
- # example sakes.
- dataDir=/home/hadoop/zk/data
- dataLogDir=/home/hadoop/zk/log
- # the port at which the clients will connect
- clientPort=2181
- # the maximum number of client connections.
- # increase this if you need to handle more clients
- #maxClientCnxns=60
- #
- # Be sure to read the maintenance section of the
- # administrator guide before turning on autopurge.
- #
- # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
- #
- # The number of snapshots to retain in dataDir
- #autopurge.snapRetainCount=3
- # Purge task interval in hours
- # Set to "0" to disable auto purge feature
- #autopurge.purgeInterval=1
- server.1=172.16.10.161:2888:3888
- server.2=172.16.10.162:2888:3888
- server.3=172.16.10.163:2888:3888
说明:
server.n=a:b:c:其中 n 是一个数字,表示这个是第几号服务器;a 是这个服务器的 ip 地址;b 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口(也可以叫做检测端口号);c 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口(也可以叫做选举端口号)。
4.在/usr/local/zookeeper/zookeeper-3.4.6 目录下创建两个文件夹data和logs
命令:mkdir data logs
然后修改zoo.cfg文件中的dataDir和dataLogDir为:
dataDir=/usr/local/zookeeper/zookeeper-3.4.6/data
dataLogDir=/usr/local/zookeeper/zookeeper-3.4.6/logs
5、创建myid文件
在dataDir目录下创建一个myid文件,然后在myid文件中输入zoo.cfg文件的server.n中n的数值
命令:echo 1 > myid
6、在其他另外两个虚拟机上重复以上3---5步骤
注意:第5步的myid中对应的值分别为2和3
即命令:echo 2 > myid 和 命令:echo 3 > myid
6、启动Zookeeper
如果三个虚拟机的以上配置都OK并且没问题的话就可以启动了。
在/usr/local/zookeeper/zookeeper-3.4.6目录下
执行命令“sh bin/zkServer.sh start”将会启动zookeeper。三个虚拟机中的zookeeper都需要单独启动。
启动成功后zookeeper会自动根据选举算法选一台作为leader,其他两台则为follower
可以执行命令“ sh bin/zkServer.sh status”查看zookeeper集群状态,如下图所示:
- #172.16.10.161
- JMX enabled by default
- Using config: /usr/local/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
- Mode: follower
- #172.16.10.162
- JMX enabled by default
- Using config: /usr/local/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
- Mode: leader
- #172.16.10.163
- JMX enabled by default
- Using config: /usr/local/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
- Mode: follower
执行命令“sh bin/zkServer.sh stop”将会停止zookeeper。
执行命令“sh bin/zkServer.sh restart”将会重启zookeeper。