集群模式有如下两种: 1)使用多台机器,在每台机器上运行一个ZooKeeper Server进程; 2)使用一台机器,在该台机器上运行多个ZooKeeper Server进程。 在生产环境中,一般使用第一种形式。在本地环境中,一般使用第二种形式。
下面我们演示下单台机器上如何实现集群部署。
1、在任意目录下新建文件夹zookeeper,并将解压好的zookeeper-3.4.10复制到zookeeper目录下,重名为server1。 2、进入server1目录下,新建data和dataLog两个文件夹。 3、进入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一样的就可以。
4、修改完zoo.cfg,我们还要在server1/data目录下创建myid文件。 每一个server的myid内容都不能一样,它可以理解为不同server的标识。 这里的内容,和前面zoo.config中的一样,server.1 这里就得配置1
5、server1复制出server2和server3。类似server1的配置过程,修改zoo.cfg和myid文件里的内容。具体不再赘述。
1、使用 ./zkServer.sh start 启动zk服务。
2、用 ./zkServer.sh status 查看启动状态。(注:这里要将集群中所有机器启动成功后再查看,否则会报错,如下所示)