ZooKeeper Cluster Setup [搭建ZooKeeper集群]
Published: Jul. 20, 2018
本文介绍如何通过虚拟机搭建一个ZooKeeper集群,并且通过Java程序访问。关于VirtualBox创建虚拟机部分可以参考之前的Hadoop集群搭建。在网络连接部分,先创建一个虚拟host网络[这样会设置有一个可以使用的网段],然后每台机器的第二网卡选择host-only network,最后修改机器的/etc/hosts
把集群机器名和ip写上,检查网络是否ping通。
官网下载ZooKeeper的binary包,本文版本号3.4.12。tar -xvf
命令解压到/usr/local
文件夹下,启动之前需要修改几个配置文件。
将/usr/local/zookeeper/bin
添加到环境变量
在conf
目录下,通过cp zoo_sample.cfg zoo.cfg
复制一份配置文件,修改dataDir
到一个非/tmp
的文件夹,比如/usr/local/zookeeper/zookeeper-data
。
然后在该文件夹下创建myid
文件,每个机器的myid
文件里面写上本台机器的序号,比如server.1
机器,myid
里面就写1
然后在尾步追加ZooKeeper集群中机器的ip还有对应端口,比如
server.1=192.168.56.100:2888:3888
server.2=192.168.56.101:2888:3888
server.3=192.168.56.102:2888:3888
所有集群机器使用/bin/zkSever.sh start
命令启动服务器。客户端机器可以通过zkCli.sh -server IP:port
命令启动,比如zkCli.sh -server hadoop-master:2181[2181是默认端口号]
。之后就可以通过client进行分布式数据节点操作
关于通过Java程序操作,首先创建Java Project[通过maven或者手动添加下载需要的jar包]。
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
public class ZkClient {
public static void main(String[] args) throws Exception {
String zkConn = "192.168.56.100:2181,192.168.56.101:2181,192.168.56.102:2181";
ZooKeeper zk = new ZooKeeper(zkConn,5000, null);
while(true) {
if(zk.getState().equals(ZooKeeper.States.CONNECTED)) {
System.out.println("ZooKeeper is connected");
break;
}
else {
Thread.sleep(1000);
}
}
zk.create("/test","test".getBytes(),Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
Thread.sleep(20000);
zk.close();
}