-
建三个虚拟机
slave1,slave2,slave3- zoo.cfg 的内容
vi zoo.cfg
# The number of milliseconds of each tick
tickTime=2000 //Client 和Server 通迅的心跳时间
# The number of ticks that the initial
# synchronization phase can take
initLimit=10 //初始通迅的时候,能容忍的心跳数 10 表示10次
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5 //LF通迅时限,L 是leader ,F 是 follower 5 是5次心跳时间
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper //文件存放的位置, 我们要进行修改
# the port at which the clients will connect
clientPort=2181 //通迅用的端口
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to “0” to disable auto purge feature
#autopurge.purgeInterval=1对上面的文件,我们要改 (1) 配置文件存放位置 dataDir=/cluster/zookeeper-3.4.5-cdh5.11.1/zk-data (2) 在配置文件最后面加 server.1=slave1:2888:3888 server.2=slave2:2888:3888 server.3=slave3:2888:3888 server是个固定写法,必须这么写, 1,2,3 是用来标识某个server的id,可以自定义 2888 是leader 和 follower 的通迅端口 3888 是选举端口 附: ZooKeeper 配置文件(zoo.cfg)详解 clientPort:客户端连接server的端口,即对外服务端口,一般设置为2181 dataDir:存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能。 dataLogDir:事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能。 (No Java system property) tickTime:ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime。 syncLimit:在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。 如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题 server.x=[hostname]:nnnnn[:nnnnn]:这里的x是一个数字,与myid文件中的id是一致的。右边可以配置两个端口, 第一个端口用于F和L之间的数据同步和其它通信,第二个端口用于Leader选举过程中投票通信 (3) 建立 /cluster/zookeeper-3.4.5-cdh5.11.1/zk-data 目录 >mkdri zk-data (4) 在zk-data中建一个文件名为 myid //必须叫这个名字 里面的内容 为 1 (其实就是server.1:2888:3888 配置中的那个server后面的 id ) (5) 用scp命令,把zookeeper 分发到别的机器上 (在其他机器上要建 cluster 目录) >scp -r /cluster/zookeeper-3.4.5-cdh5.11.1/ slave2:/cluster (6) 要把它们的myid改成自已的 zk-data>vi myid (7) 启动zk集群 在slave1 上 > ./zkServer.sh start > ./zkServer.sh status JMX enabled by default Using config: /cluster/zookeeper-3.4.5-cdh5.11.1/bin/../conf/zoo.cfg Error contacting service. It is probably not running. >jps 2560 Jps 2514 QuorumPeerMain 在slave2 上 > ./zkServer.sh start 应该能启动集群 >./zkServer.sh status JMX enabled by default Using config: /cluster/zookeeper-3.4.5-cdh5.11.1/bin/../conf/zoo.cfg Mode: leader //说明它是一个leader 结点 这时回到 slave1上, >./zkServer.sh status Using config: /cluster/zookeeper-3.4.5-cdh5.11.1/bin/../conf/zoo.cfg Mode: follower //说明它是一个 follower 再到slave3 上将 slave3启动, 发现它也是一个 follower 选举: 我们可以将有leader 的那台机器上的 QuorumPeerMain 进程结束 > kill -9 QuorumPeerMain的进程id 这时候,我们发现,其他的机器上又选举出了leader 测试: 在slave1上 bin>zkCli.sh [zk: localhost:2181(CONNECTED) 0] >create myconfg abcdefghijklmn [zk: localhost:2181(CONNECTED) 1] >ls / [myconfig, zookeeper] [zk: localhost:2181(CONNECTED) 1] >get /myconfig ... 在其他机器上,直接 [zk: localhost:2181(CONNECTED) 1] >ls / [myconfig, zookeeper] [zk: localhost:2181(CONNECTED) 1] >get /myconfig 都可以得到数据
搭建 zookeeper集群
最新推荐文章于 2024-10-12 21:54:00 发布