昨天写了篇平移到nacos的,今天正好尝试了下zookeeper的所以就一起写了。
下面是dubbo+redis的链接
rpc-dubbo-redis
1 linux下载zookeeper
去官网查看对应下载版本 https://zookeeper.apache.org/releases.html#download,复制对应的镜像地址
修改zoo.cfg配置文件
wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
cd apache-zookeeper-3.6.3-bin
cd conf
cp zoo_sample.cfg zoo.cfg
#修改下面2个参数,当然也可以不修改,dataDir默认是/tmp/zookeeper start
vi zoo.cfg
dataDir=/root/apache-zookeeper-3.6.3-bin/data
dataLogDir=/root/apache-zookeeper-3.6.3-bin/log
#保存修改
cd ..
mkdir data
mkdir log
# end
cd bin
sh zkServer.sh start
zkCli.sh查看启动是否成功,看到下面这句就是启动成功了
sh zkCli.sh
XXXX...........
Welcome to ZooKeeper!
XXXX...........
PS:
zookeeper关闭服务
sh zkServer.sh stop
2 dubbo从redis平移至zookeeper
同改到dubbo+nacos,基于dubbo+redis架构,只需改2处
2.1 pom.xml
从原始的redis和jedis依赖改成zookeeper的依赖
<!-- dubbo 依赖-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<!-- zookeeper依赖 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.6.3</version>
</dependency>
<!-- curator依赖 -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>
2.2 application.yml
修改了dubbo.registry,直接把address改成zookeeper的对应地址。
dubbo:
application:
id: XXX
name: XXX
version: 1.0.0
registry:
address: zookeeper://XX.XX.XX.XX:2181
timeout: 10000
protocol:
id: dubbo
name: dubbo
port: 20880
3 遇见的问题:
3.1 只加dubbo和zookeeper的依赖,会报错
启动springboot项目会报如下错误
java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy
需要加curator的包
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>4.0.1</version>
</dependency>
3.2 zookeeper not connected
Caused by: java.lang.IllegalStateException: zookeeper not connected
3.2.1 链接时间太短
可以在yml增加参数dubbo.registry.timeout: 10000 ,设置为10s
3.2.2 防火墙
因为昨天刚配过nacos的,正好是因为防火墙的问题,所以尝试改了下,就连上了。估计只要dubbo走tcp的,有防火墙的都得处理一下。
[root@root ~]# firewall-cmd --query-port=2181/tcp
no
开放端口并重载:
firewall-cmd --add-port=2181/tcp --permanent
firewall-cmd --reload
再次查询就ok了,之后就可以正常启动服务了
[root@root ~]# firewall-cmd --query-port=2181/tcp
yes
参考文献:
启动报curator错
https://blog.csdn.net/u010938610/article/details/85318907
windows安装zookeeper
https://blog.csdn.net/qq_33316784/article/details/88563482