zoo_sample.cfg参数详解
- tickTime=2000
ZooKeeper使用的基本时间单位(以毫秒为单位)。它用于做心跳,最小session超时将是tickTime的两倍。也就是每到tickTime时间就会发送一个心跳。
- initLimit=10
官方文档说:initLimit是超时值,ZooKeeper用来限制仲裁中的ZooKeeper服务器必须连接到leader的时间长度。
也就是说用来配置Zookeeper接收客户端(这里所说的客户端不是用户链接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到leader的Follower服务器)初始化连接是最长能忍受多少个心跳的时间间隔数。当已经超过10个心跳的时间(也就是tickTime)长度后Zookeeper服务器还没有收到客户端返回的信息,那么表明这个客户端连接失败。总的时间长度就是10*2000=20秒
- syncLimit=5
syncLimit限制了follower可以从leader处过期多久(请求时间长度),最长不能超过多少个tickTime的时间长度。
- dataDir=/tmp/zookeeper
存储内存数据位置,除非另外指定,那么更新数据库的事务日志也会存储在这里。
优化:为了在更新时获得较低的延迟,有一个专用的事务日志目录很重要。默认情况下,事务日志与数据快照和myid文件放在同一个目录中。dataLogDir参数指示用于事务日志的不同目录。
- clientPort=2181
监听客户端连接的端口
- server.1 = zoo1:2888:3888
- server.2 = zoo2:2889:3889
- server.3 = zoo3:2890:3890
表单server.X列出了组成ZooKeeper服务的服务器。当服务器启动时,它通过在数据目录中查找文件myid来知道它是哪个服务器 。该文件包含ASCII码的服务器号码。
server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同.
最后,记下每个服务器名称后的两个端口号:“2888”和“3888”。节点之间使用以前的端口连接。这样以便节点可以必要的连接,例如,就更新规则达成一致。更具体地说,一个ZooKeeper服务器使用这个端口将followers 连接到leader。当一个新的leader出现时,一个followers使用这个端口打开一个到leader的TCP连接。因为默认leader当选也使用TCP,所以我们目前需要另一个leader当选。这是服务器条目中的第二个端口。
Note:
如果要在单台计算机上测试多台服务器,请将服务器名称指定为唯一localhost和leader当选端口的本地主机(即上述示例中的2888:3888,2889:3889,2890:3890)配置文件。当然,独立DATADIR S和独特CLIENTPORT s为也是必要的(在上面的复制例如,在一个运行的本地主机,你仍然有三个配置文件)。
请注意,在一台机器上设置多个服务器不会产生任何冗余。如果发生了导致机器死机的事情,所有的zookeeper服务器都将处于脱机状态。完全冗余要求每台服务器都有自己的机器。它必须是一个完全独立的物理服务器。同一物理主机上的多个虚拟机仍然容易出现该主机的完全故障。