安装步骤:
第一步:安装 jdk(此步省略)
第二步:把 zookeeper 的压缩包(zookeeper-3.4.6.tar.gz)上传到 linux 系统。
第三步:解压缩压缩包
tar -zxvf zookeeper-3.4.6.tar.gz |
第四步:进入 zookeeper-3.4.6 目录,创建 data 文件夹。
mkdir data |
第五步:进入conf目录 ,把 zoo_sample.cfg 改名为 zoo.cfg
cd conf mv zoo_sample.cfg zoo.cfg |
第六步:打开zoo.cfg , 修改 data 属性:dataDir=/root/zookeeper-3.4.6/data
Zookeeper 服务启动
进入bin目录,启动服务输入命令
./zkServer.sh start |
关闭服务输入命令
./zkServer.sh stop |
查看状态:
./zkServer.sh status |
Dubbox本地 JAR包部署与安装
Dubbox的jar包并没有部署到Maven的中央仓库中,大家在Maven的中央仓库中可以查找到Dubbo的最终版本是2.5.3 , 阿里巴巴解散了Dubbo团队后由当当网继续维护此项目,并改名为 Dubbox ,坐标不变,版本变更了,但是并没有提交到中央仓库。
我们现在需要手动将Dubbox的jar包安装到我的本地仓库中。
先将dubbo-2.8.4.jar包放到d:\setup, 然后输入命令
mvn install:install-file -Dfile=d:\setup\dubbo-2.8.4.jar -DgroupId=com.alibaba -DartifactId=dubbo -Dversion=2.8.4 -Dpackaging=jar |
集群的操作
①修改/usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg,通过这种方式可以指定端口。
clientPort=2181 dataDir=/usr/local/zookeeper-cluster/zookeeper-1/data |
②在每个zookeeper的 data 目录下创建一个 myid 文件,内容可以是1、2、3 。这个文件就是记录每个服务器的ID
如果你要创建的文本文件内容比较简单,我们可以通过echo 命令快速创建文件
格式为:
echo 内容 >文件名 echo 1 >myid
③在每一个zookeeper 的 zoo.cfg配置客户端访问端口(clientPort)和集群服务器IP列表。
集群服务器IP列表如下
server.1=192.168.25.135:2881:3881 server.2=192.168.25.135:2882:3882 server.3=192.168.25.135:2883:3883 |
解释:server.服务器ID=服务器IP地址:服务器之间通信端口:服务器之间投票选举端口
启动集群
使用启动命令查看状态,follower表示跟随者,leader表示领导者
这里我们假设启动了三个服务 1 follower 2 leader 3 follower
集群异常情况
①把3号服务器停掉,观察1号和2号,发现状态并没有变化
②我们再把1号服务器(从服务器)也停掉,查看2号(主服务器)的状态,发现已经停止运行了。
结论:由此得出结论,3个节点的集群,2个从服务器都挂掉,主服务器也无法运行。因为可运行的机器没有超过集群总数量的半数。
③我们再次把1号服务器启动起来,发现2号服务器又开始正常工作了。而且依然是领导者。
④我们把3号服务器也启动起来,把2号服务器停掉,停掉后观察1号和3号的状态。发现新的leader产生了~
结论:当集群中的主服务器挂了,集群中的其他服务器会自动进行选举状态,然后产生新得leader
⑤我们再次测试,当我们把2号服务器重新启动起来,2号服务器启动后依然是跟随者(从服务器),3号服务器依然是领导者(主服务器)。
结论:当领导者产生后,再次有新服务器加入集群,不会影响到现任领导者。
spring项目中的配置
<!-- 指定注册中心地址 -->
<dubbo:registry
protocol="zookeeper"address="192.168.25.135:2181,192.168.25.135:2182,192.168.25.135:2183">
</dubbo:registry>
问题:搭建集群后服务启动的时候有时候会超时,可以在linux下配置一下,超时的时间(zoo.cfg)
cnxTimeout=60000