集群模式
集群模式有如下两种:
1)使用多台机器,在每台机器上运行一个ZooKeeper Server进程;
2)使用一台机器,在该台机器上运行多个ZooKeeper Server进程。
在生产环境中,一般使用第一种形式。在本地环境中,一般使用第二种形式。
下面我们演示下单台机器上如何实现集群部署。
下载&解压
http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/
tar zxvf zookeeper-3.4.10.tar.gz
配置
在/data目录下新建文件夹zookeeper,并将解压好的zookeeper-3.4.10复制到zookeeper目录下,重名为server1。
进入server1目录下,新建data和dataLog两个文件夹。
进入conf目录,重命名zoo_sample.cfg文件为zoo.cfg,并做如下修改:
我们看一下配置文件里的配置项。
tickTime:zookeeper中使用的基本时间单位, 毫秒值,默认2000ms。initLimit:用来配置Zookeeper服务器集群中Follower服务器初始化连接Leader服务器时最长能忍受多少个tickTime。这里设置为5表示最长容忍时间为10秒。
syncLimit:用来配置Leader与Follower之间发送消息、请求和应答时间最长能忍受多少个tickTime。这里设置为2表示最长容忍时间为4秒。
dataDir:数据文件目录。
dataLogDir:日志文件目录。
clientPort:监听client连接的端口号。
server.{myid}={ip}:{leader服务器交换信息的端口}:{当leader服务器挂了后, 选举leader的端口}
maxClientCnxns:对于一个客户端的连接数限制,默认是60。
注:因为我们是在同一个机器上模拟的集群,所以要注意server端口号和clientPort不要重复了,不然会出现端口冲突。如果我们是3个不同的机器上做的3个server,那么我们的zoo.cfg配置cheng一样的就可以。
修改完zoo.cfg,我们还要在server1/data目录下创建myid文件。
每一个server的myid内容都不能一样,它可以理解为不同server的标识。
用server1复制出server2和server3。类似server1的配置过程,修改zoo.cfg和myid文件里的内容。具体不再赘述。
启动
使用 ./zkServer.sh start 启动zk服务。
使用 tail -f zookeeper.out 查看日志。
使用 ./zkServer.sh status 查看启动状态。
使用场景
后续将写elasticJob利用zookeeper做分片协调的blog。