1. 将zookeeper安装包移动至/home, 解压后改名为zookeeper

相关命令

# 解压
tar –zxvf zookeeper-3.4..tar.gz
# 重命名
mv zookeeper-3.4. zookeeper

2. 进入zookeeper/conf/目录下,将改目录下的zoo_sample.cfg配置文件拷贝4份,依次为zoo.cfg  zoo1.cfg  zoo2.cfg  zoo3.cfg

zoo.cfg为备份文件, 我们将使用zoo1.cfg  zoo2.cfg  zoo3.cfg来搭建ZooKeeper伪集群

3. 使用vim编辑zoo1.cfg  zoo2.cfg  zoo3.cfg

zoo1.cfg修改内容如下:

zoo2.cfg修改内容如下:

zoo3.cfg修改内容如下:

4.dataDir目录开始不存在,需要手动创建,并在各data文件下创建名为myid的文件,文件内容对应服务器编号

分别创建下面三个文件

/home/tmp/zookeeper/server1/data/myid
/home/tmp/zookeeper/server2/data/myid
/home/tmp/zookeeper/server3/data/myid

三个文件内容分别为

echo  > /home/tmp/zookeeper/server1/data/myid
echo > /home/tmp/zookeeper/server2/data/myid
echo > /home/tmp/zookeeper/server3/data/myid

5. 分别启动三个zookeeper

bin/zkServer.sh start zoo1.cfg
bin/zkServer.sh start zoo2.cfg
bin/zkServer.sh start zoo3.cfg

6. 查看三个zookeeper状态

bin/zkServer.sh status zoo1.cfg
bin/zkServer.sh status zoo2.cfg
bin/zkServer.sh status zoo3.cfg

三个zookeeper的关系如图所示

7. 测试连通性

测试server2(leader,其他服务同理)是否连通

./zkCli.sh -server 127.0.0.1:

效果如图所示:

8. 使用Java客户端连接Zookeeper

 /**
* Created by IntelliJ IDEA.
*
* @Auther: ShaoHsiung
* @Date: 2018/9/8 21:34
* @Title:
* @Description: Java客户端无法连接Zookeeper是因为Linux上的防火墙没有关闭
*/
public class ZookeeperDemo { private static final String CONNECTION_STRING = "192.168.131.25:2181";
private static final int SESSION_TIMEOUT = 5000; private static CountDownLatch latch = new CountDownLatch(1); public static void main(String[] args) throws IOException, InterruptedException {
ZooKeeper zk = new ZooKeeper(CONNECTION_STRING, SESSION_TIMEOUT, new Watcher() {
public void process(WatchedEvent watchedEvent) {
if (watchedEvent.getState() == Event.KeeperState.SyncConnected) {
latch.countDown();
}
}
});
latch.await(); // 获取Zookeeper客户端
System.out.println(zk);
}
}

9. 执行效果

备注: 需要先关闭Linux上的防火墙, 否则Java客户端无法连接到Linux上的ZooKeeper

附上Linux临时操作防火墙命令

即时生效,重启后失效

开启:service iptables start

关闭:service iptables stop

最新文章

  1. texlive2015+texstudio
  2. 如何使用 OneAPM 监控微软 Azure Cloud Service ?
  3. 使用ReflectionTestUtils解决依赖注入
  4. [反汇编练习] 160个CrackMe之020
  5. Stimulsoft Reports报表工具
  6. 假设但是学习java入门,请离开SSH稍远
  7. NodeJS初学者实战之旅(I) —— 介绍、目录
  8. 提交时提示错误This Bundle is invalid.New apps and app updates submitted to the App Store must be built wit
  9. 64位win7旗舰版搭建apache+php+mysql开发环境[转]
  10. .net EF 事物 订单流水号的生成 (一)
  11. JS中Node节点总结
  12. word表分页表头
  13. CSS 图像
  14. 【Java初探03】——流程控制语句
  15. 【Windows】DOS的常用命令
  16. Windows安装Tomcat失败:Failed installing tomcat7 service
  17. Android开发学习笔记-自定义组合控件的过程
  18. 『PyTorch』第三弹重置_Variable对象
  19. Android shell command execute Demo
  20. Android Studio生成get,set,tostring,构造方法

热门文章

  1. 牛客多校第九场 A The power of Fibonacci 杜教bm解线性递推
  2. faster-rcnn算法总结
  3. Mybatis笔记 - SqlMapConfig
  4. postgres优化项及linux上pg操作记录
  5. 春节跳槽最新Java面试题及答案整理
  6. Java High Level REST Client 中文API(仅供参考)
  7. HashMap底层实现原理及面试问题
  8. HDU 5052 /// 树链剖分+线段树区间合并
  9. C#利用资源文件设置软件自适应多语言
  10. vue组件参数校验