1.在搭建zookeeper环境前,一定要配置jdk环境,此处不赘述。
2.首先我从zookeeper官网上下载zookeper.通过FileZilla上传到我的阿里服务器上,如下图:
3.然后解压zookeeper,命令:tar -zxvf zookeeper.tar.gz ,如下图:
4.更改zookeeper-3.4.10为zookeeper,命令:mv zookeeper-3.4.10/ zookeeper,如下图:
5.将zookeeper移动到/usr/local目录下,命令:mv zookeeper /usr/local,如下图:
6.在zookeeper的conf目录下,将zoo_sample.cfg改名为zoo.cfg, 可以用这个命令:cp zoo_sample.cfg zoo.cfg,复制一份,以防在修改配置过程中失误。
7.查看zoo.cfg,命令: vim zoo.cfg,如下图:
1).tickTime: zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,tickTime以毫秒为单位 2).initLimit: 集群中的follower服务器与leader服务器之间初始化连接时能容忍的最多心跳数 3).syncLimit: 集群中的follower服务器与leader服务器之间请求和应答之间容忍的最多心跳数 4).dataDir: 存储zookeeper的快照文件,pid文件,默认为/tmp/zookeeper,建议在zookeeper安装目录下创建data目录,将dataDir配置为/usr/local/zookeeper/data,如下图:
5).clientPort: 客户端连接zookeeper的端口,即zookeeper对外的服务端口,默认为2181
8.进入zookeeper的bin目录下启动zookeeper,命令:./zkServer.sh start
9.查看zookeeper进程,命令: ps -ef | grep zookeeper
10.进入zookeeper的bin目录下关闭zookeeper,命令:./zkServer.sh stop
下载链接:https://github.com/apache/zookeeper/tree/b79af153d0f98a4f3f3516910ed47234d7b3d74e/src/contrib/zooinspector
进入build目录下,双击zookeeper-dev-ZooInspector.jar,如下图:
此处119.23.108.42为我的服务器地址,2181为zookeeper/conf目录下的zoo.cfg文件里clientPort的值
连接上以后界面展示结果,如下图:
1.在pom.xml中引入如下依赖:
<dependency>
<groupId>org.apache.zookeepergroupId>
<artifactId>zookeeperartifactId>
<version>3.4.13version>
<type>pomtype>
dependency>
<dependency>
<groupId>org.apache.curatorgroupId>
<artifactId>curator-frameworkartifactId>
<version>4.0.1version>
dependency>
2.这里将dubbo依赖贴出来
<dependency>
<groupId>com.alibabagroupId>
<artifactId>dubboartifactId>
<version>2.6.2version>
dependency>
3.bug解决,其实我在做项目的时候引入了如下依赖:
<dependency>
<groupId>com.101tecgroupId>
<artifactId>zkclientartifactId>
<version>0.10version>
dependency>
<dependency>
<groupId>org.apache.zookeepergroupId>
<artifactId>zookeeperartifactId>
<version>3.4.6version>
dependency>
然后再启动项目的时候报如下错:
错误就一目了然,所以在dubbo项目中配置zookeeper时一定要谨慎!!!
1.集群中只要超过半数的机器是正常工作的,那么整个集群对外就是可用的;
2.也就是说如有有两个zookeeper,那么只要有一台故障了,zookeeper就不能用了,因为1没有过半,所以2个zookeeper不是高可用的,因为不能容忍任何1台发生故障;
3.同理有3个zookeeper,1个故障了,还剩下2个,过半了,所以3个zookeeper才是高可用的,因为能容忍1台发生故障;
4.如果是4台?5台?6台呢?那么分布式能容忍1,2,2(一般用奇数台zookeeper)投票机制
1.复制3个zookeeper
2.修改配置文件
vim /zookeeper_1/conf/zoo.cfg
dataDir=/usr/local/zookeeper_1/data
clientPort=2181
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
其中2888端口号是zookeeper服务之间通信的端口,3888是zookeeper与其他应用程序通信的端口
3.在对应的dataDir指向的目录下创建myid,里面保存1,对应上面server.1的1,其他依次
4.启动3个zookeeper
cd zookeeper_1/bin,然后执行./zkServer.sh start
5.查看进程
6.配置项目provider.xml配置
address="119.23.108.42:2181;119.23.108.42:2182;119.23.108.42:2183" />
7.我停掉一台zookeeper
项目还是可以启动起来
8.我再停掉一台zookeeper
项目报错,如下图,提示zookeeper连不上
本文分享自 MoziInnovations 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!