单机配置与集群配置检测状态的区别.集群配置的检测一定要所有的节点都启动了zookeeper程序,再运行zkServer.sh status才是会正确,否则会出现连接异常的提醒,无法检测状态
单机与集群配置zookeeper
注:单机配置zookeeper,zoo.cfg中不需要配置server.id=host:port1:port2
首先下载好zookeeper软件包(官网),并解压
打开zookeeper.x.x文件夹
1、在根目录下创建logs,data文件夹
2、进入conf目录下,可以看到有一个zoo_simple.cfg文件,拷贝复制为一个zoo.cfg
3、配置zoo.cfg文件
1 | ticketTime=2000 |
2 | clientPort=2181 |
3 | initLimit=10 |
4 | syncLimit=5 |
5 | dataDir=/xxx/xxx/app/zookeeper-3.4.5/data |
6 | dataLogDir=/xxx/xxx/app/zookeeper-3.4.5/logs |
7 | |
8 | server.1=master:2888:3888 |
9 | server.2=master:2888:3888 |
10 | server.3=master:2888:3888 |
上文为添加,修改的配置.说明如下:
1 | initLimit |
2 | ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程follower。 |
3 | 当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader |
4 | 很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间。 |
5 | |
6 | syncLimit |
7 | 配置follower和leader之间发送消息,请求和应答的最大时间长度。 |
8 | |
9 | tickTime |
10 | tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 |
11 | 2000ms * 5 = 10秒。 |
12 | |
13 | server.id=host:port1:port2 |
14 | 其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。 |
15 | host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举 |
16 | leader所使用的端口。 |
17 | |
18 | dataDir |
19 | 其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。myid文件的内容只有一行, |
20 | 且内容只能为1 - 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。 |
21 | |
22 | dataLogDir |
23 | 配置log日志存放的目录 |
进入dataDir配置目录
创建一个myid的文件,文件中写入数字server.id=host:port1:port2 中的id,注意,该id与zoo.cfg中配置中的相对应。如:
1 | zoo.cfg中配置 |
2 | |
3 | server.1=master:2888:3888 |
4 | server.2=master:2888:3888 |
5 | server.3=master:2888:3888 |
6 | |
7 | master 主机中的myid应写入的1 |
8 | slave1 主机中的myid应写入的2 |
9 | …… |
注:不需要其他的字符,ID的范围1~255
zookeeper的配置就已经完成,也可以添加环境变量。
zookeeper的操作
启动
进入到bin目录,所有的操作命令都在该目录下
./zkServer.sh start
注:一定要空格,配置了环境变量的可以直接 zkServer.sh start
查看zookeeper运行状态
./zkServer.sh status
注:如果是配置的集群,该集群所有的节点主机都需要启动之后再检查;单主机无需如此。
运行后会出现Mode,有两个角色一个是leader,一个是follower代表不同的身份。通常是一个leader对应多个follower,角色是随机分配的,当一个leader的主机停止之后,会有另个follower的主机变为leader身份
停止
./zkServer.sh stop
测试集群的联通性
./zkCli.sh -server master:2181,slave1:2181,slave2:2181
连接成功后,terminal会变成:
1 | WatchedEvent state:SyncConnected type:None path:null |
2 | [zk:master:2181,slave1:2181,slave2:2181(CONNECTED) 0] |
至此,zookeeper配置运行成功