Zookeeper实战之单机集群模式

zz/2024/6/13 23:01:43

Zookeeper的单机模式的安装及应用,但是Zookeeper是为了解决分布式应用场景的,所以通常都会运行在集群模式下。由于手头机器不足,所以打算在一台机器上部署三个Zookeeper服务来组成一个Zookeeper集群。这里解压Zookeeper的安装包到/opt目录下,这里用三个目录来代表三个Zookeeper实例,分别是/opt/zookeeper1,/opt/zookeeper2和/opt/zookeeper3.

1. 首先编辑每个Zookeeper目录下的conf/zoo.cfg文件。三个配置配置文件的内容分别如下


  1. $ cat /opt/zookeeper1/conf/zoo.cfg  
  2. tickTime=2000  
  3. dataDir=/opt/zookeeper1/data  
  4. clientPort=2181  
  5. initLimit=10  
  6. syncLimit=5  
  7. server.1=127.0.0.1:2881:3881  
  8. server.2=127.0.0.1:2882:3882  
  9. server.3=127.0.0.1:2883:3883  

---------------------------------------------
  1. $ cat /opt/zookeeper2/conf/zoo.cfg  
  2. tickTime=2000  
  3. dataDir=/opt/zookeeper2/data  
  4. clientPort=2182  
  5. initLimit=10  
  6. syncLimit=5  
  7. server.1=127.0.0.1:2881:3881  
  8. server.2=127.0.0.1:2882:3882  
  9. server.3=127.0.0.1:2883:3883  

---------------------------------------------
  1. $ cat /opt/zookeeper3/conf/zoo.cfg  
  2. tickTime=2000  
  3. dataDir=/opt/zookeeper3/data  
  4. clientPort=2183  
  5. initLimit=10  
  6. syncLimit=5  
  7. server.1=127.0.0.1:2881:3881  
  8. server.2=127.0.0.1:2882:3882  
  9. server.3=127.0.0.1:2883:3883  

其中有几点需要注意
* dataDir: 三个Zookeeper实例的dataDir目录要区别开,这里分别指定到各个Zookeeper实例目录下的data目录。
* clientPort: 定义Zookeeper客户端连接Zookeeper服务端时使用的端口,这里因为是在一台机器上做的集群,所以三个实例的端口要区分开。
* server.: 定义Zookeeper集群的各个实例的的ip和端口,这里因为是在一台机器上做的集群,所以IP都定义的是127.0.0.1,但是后面的端口要区分开。

2. 创建data目录和实例id文件


  1. mkdir /opt/zookeeper1/data  
  2. mkdir /opt/zookeeper2/data  
  3. mkdir /opt/zookeeper3/data  
  4. echo 1 > /opt/zookeeper1/data/myid  
  5. echo 2 > /opt/zookeeper2/data/myid  
  6. echo 3 > /opt/zookeeper3/data/myid  

这里要注意需要在每个Zookeeper的dataDir目录下创建myid文件,内容是记录各个Zookeeper的实例ID。

3. 启动Zookeeper服务
分别进入各个Zookeeper的bin目录,然后运行“./zkServer.sh start”来启动一个Zookeeper服务。

4. 客户端连接
随便进入一个Zookeeper的bin目录,然后运行下面的命令来分别连接Zookeeper服务。


  1. ./zkCli.sh -server 127.0.0.1:2181  
  2. ./zkCli.sh -server 127.0.0.1:2182  
  3. ./zkCli.sh -server 127.0.0.1:2183  
在其中的一个client上创建一个znode节点

  1. create /mykey myvalue  
然后在别的client上查看新创建zonde节点

  1. get /mykey  

5. 查看Zookeeper状态
启动Zookeeper之后,由于Zookeeper自己会有一套leader的选举算法,所以此时如果想知道那个Zookeeper是leader可以在各个Zookeeper的bin目录运行“./zkServer.sh status”命令来查看。

如果是Leader


  1. $ ./zkServer.sh status  
  2. JMX enabled by default  
  3. Using config: /opt/zookeeper1/bin/../conf/zoo.cfg  
  4. Mode: leader  

如果不是Leader


  1. $ ./zkServer.sh status  
  2. JMX enabled by default  
  3. Using config: /opt/zookeeper3/bin/../conf/zoo.cfg  
  4. Mode: follower  
此时可以把leader的那个节点停了,然后再看查看其它两个Zookeeper实例,此时剩下的两个Zookeeper实例就会再选举出一个leader。

http://www.ngui.cc/zz/2700288.html

相关文章

ubuntu系统查找命令

ubuntu系统查找命令 一.以文件名查找: 1. find 命令 find / -name "filename" 目的:在根目录“/”开始搜被称为filename的文件,“filename”文件名可以包含通配符(*,?)&#xff0…

kudu 文件描述符 更改

kudu 文件描述符超过阀值 kudu 文件描述符缺省打开文件数为32768 在/etc/security/limits.d/下找到了cloudera的limit配置文件,里面限制为32768 /etc/security/limits.d/cloudera-scm.conf 修改: 32768会覆盖系统配置,cm启动的进程最大打…

同一局域网内的数据库的连接

1、连接他人的数据库 1)保证两台机器存在同一局域网内,即192.168.后的两个字节是相同的。 例如:教师机的IP4地址是192.168.88.100,你应该将自己的IP4地址设置成192.168.88.53. 2)保证教师机的子网掩码与本机相同。 …

杭电acm2020C语言合法标识符

C语言合法标识符想来大家都知道:该字符串只能由下划线、字母和数字组成,其中首字母不能是数字。 此题的难点是输入字符串个数后会多一个回车,我们得用getchar()把它去掉。此外还有getline(cin,s)和gets(s)能输入带空格的字符串。不过用gets(…

杭电acm2014hide handkerchief

虽然看出来是围着丢手娟了,可是这Haha后面的操作我是一点也没看懂啊。。。看讨论区的大神说是判断两个数是否互为质数。。好吧这个我还是会的。 互质数是两个数只有一个公约数,那就是1。这就好办了,辗转相除法求两个数的公约数,如…

ccf201712-1最小差值(100分)

​​​​​​问题描述 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。 输入格式 输入第一行包含一个整数n。   第二行包含n个正整数,相邻整数之间使用一个空格分隔。 输出格式 输出一…

用python打ACM的日子

输入输出 我们都知道打ACM在输入输出都很有特定的要求,比如循环输入样例。 我们用c和c是这样写的。 //C语言 while(~scanf("%d",&n)) { } //或者 while(scanf("%d",&n)!EOF) { }//c while(cin>>n) { }但是呢,本狗…

【面试题】网易互娱(游戏)2020校招在线笔试-游戏研发第一批[水平线]

伞屉国是一个以太阳能为主要发电手段的国家,因此他们国家中有着非常多的太阳能基站,链接着的基站会组合成一个发电集群。但是不幸的是伞屉国不时会遭遇滔天的洪水,当洪水淹没基站时,基站只能停止发电,同时被迫断开与相…

【面试题】网易互娱(游戏)2021校园招聘在线笔试 - 服务端开发工程师[文件系统]

昨晚做网易互娱的笔试,比较尴尬的是只能用C/C/Java,而本人对C/C的了解仅限于大一的课程设计(而且一年多没用过C写代码了),Java差不多看得懂代码但是没有系统的学过。无奈最后只能用python写了两道题,再用C照…

Python中构造方法和初始化方法

原文链接:https://blog.csdn.net/qq_19707521/article/details/79359858 类的实例化 在python中创建一个新式类时,一般都会定义一个 __init__ 方法,用来对类的实例进行初始化。但是 __init__ 方法并不是类的构造方法,类中真正的构…