安装配置java开发环境
在下载的zookeeper目录里创建3个文件,zk1,zk2,zk3,用于存放每个集群的数据文件。
并在三个目录下创建data和logs目录
将conf目录下的zoo-sample.cfg 更改为zoo1.cfg , zoo2.cfg ,zoo3.cfg
配置如下
# the number of milliseconds of each tick # 心跳检测时间 ticktime=2000 # the number of ticks that the initial # synchronization phase can take # 心跳检测失败最大次数 initlimit=10 # the number of ticks that can pass between # sending a request and getting an acknowledgement synclimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. # 内存数据库保存的模糊快照的目录,如果某个服务器为集群中的一台,则id文件也保存在该目录下 # 快照异步写入,不会阻塞 datadir= ../zk1/data datalogdir= ../zk1/logs # the port at which the clients will connect # tcp监听端口 clientport=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxclientcnxns=60 # # 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 # server.myid=ip:port1;port2 #port1:服务器与集群中的leader服务器交换信息的端口 #port2:万一集群中的leader挂了,需要一个端口来重新进行宣讲 选出新的leader server.1=127.0.0.1:2881:3881 server.2=127.0.0.1:2882:3882 server.3=127.0.0.1:2883:3883
三个文件的区别是这三个配置
zoo1.cfg
datadir= ../zk1/data datalogdir= ../zk1/logs clientport=2181
zoo2.cfg
datadir= ../zk2/data datalogdir= ../zk2/logs clientport=2182
zoo3.cfg
datadir= ../zk3/data datalogdir= ../zk3/logs clientport=2183
在每个目录下的data目录里创建 myid文件,文件内容分别为1,2,3.
lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkserver.sh start ../conf/zoo1.cfg zookeeper jmx enabled by default using config: ../conf/zoo1.cfg starting zookeeper ... started lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkserver.sh start ../conf/zoo2.cfg zookeeper jmx enabled by default using config: ../conf/zoo2.cfg starting zookeeper ... started lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkserver.sh start ../conf/zoo3.cfg zookeeper jmx enabled by default using config: ../conf/zoo3.cfg starting zookeeper ... started
lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkserver.sh status ../conf/zoo1.cfg zookeeper jmx enabled by default using config: ../conf/zoo1.cfg mode: follower
lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkserver.sh status ../conf/zoo2.cfg zookeeper jmx enabled by default using config: ../conf/zoo2.cfg mode: leader
lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkserver.sh status ../conf/zoo3.cfg zookeeper jmx enabled by default using config: ../conf/zoo3.cfg mode: follower
可以看到,zk2选举成为了leader,另外两个为follower。
lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkcli.sh -server 127.0.0.1:2181
lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkcli.sh -server 127.0.0.1:2182
lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkcli.sh -server 127.0.0.1:2183
分别连接三个集群节点
在任何一个集群节点进行操作,其他集群也会同步更新。
在zk2创建节点
[zk: 127.0.0.1:2182(connected) 1] create /test1 "" created /test1
在zk1查看节点
[zk: 127.0.0.1:2181(connected) 1] ls / [zookeeper, test1]
停止zk2节点工作
lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkserver.sh stop ../conf/zoo2.cfg zookeeper jmx enabled by default using config: ../conf/zoo2.cfg stopping zookeeper ... stopped
等待超时时间到,重新查看各个节点的状态,可以看到,zk2停止运行之后,在看zk3被集群选举为leader.
lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkserver.sh status ../conf/zoo1.cfg zookeeper jmx enabled by default using config: ../conf/zoo1.cfg mode: follower lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkserver.sh status ../conf/zoo2.cfg zookeeper jmx enabled by default using config: ../conf/zoo2.cfg error contacting service. it is probably not running. lgj@lgj-lenovo-g470:~/java/zookeeper-3.4.13/bin$ ./zkserver.sh status ../conf/zoo3.cfg zookeeper jmx enabled by default using config: ../conf/zoo3.cfg mode: leader
如对本文有疑问, 点击进行留言回复!!
HashMap、Hashtable、ConcurrentHashMap三者间的异同
解决RecycleView 中Item包含Edittext时,滑动view复用导致数据错乱的问题
多线程、同步工作原理、死锁案例、Lock接口、线程的生命周期的讲解及实现
网友评论