项目地址:
https://github.com/FateSolo/Dubbo-Test
目录:
- 0. 序
- 1. Maven构建项目
- 2. Gradle构建项目
- 3. 搭建Spring + Dubbo框架
- 4. 支持RESTful Remoting
- 5. Dubbo服务集群
- 6. ZooKeeper集群
- 7. Nginx + Tomcat集群
- 8. Redis共享session
在本章将测试注册中心的集群功能,即ZooKeeper的集群。
1. 文件配置
因为资源有限,这里只在虚拟机内配置三个ZooKeeper。
1) 将ZooKeeper复制为三份,分别命名为zookeeper-1、zookeeper-2、zookeeper-3。
2) 在三个文件夹内各创建一个data文件夹,并在data文件夹内创建myid文件,myid只包含一个数字,分别是1、2、3。
3) 分别修改三个ZooKeeper的conf/zoo.cfg:1
2
3
4
5
6
7
8tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/fate/zookeeper-1/data
clientPort=2181
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
其余两个大致相同,不同点如下:1
2
3
4
5dataDir=/home/fate/zookeeper-2/data
clientPort=2182
dataDir=/home/fate/zookeeper-3/data
clientPort=2183
2. 运行测试
1) 键入如下命令启动三个ZooKeeper:1
2
3./zookeeper-1/bin/zkServer.sh start
./zookeeper-2/bin/zkServer.sh start
./zookeeper-3/bin/zkServer.sh start
2) 查看jps:1
2
3
4
5
6
76193 Jps
6115 QuorumPeerMain
6085 QuorumPeerMain
3687 RemoteMavenServer
3579 Main
3789 Launcher
6159 QuorumPeerMain
可以看到已经启动了三个ZooKeeper。
3) 打开dubbo-admin的dubbo.properties,修改如下配置:1
dubbo.registry.address=zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
除此之外,dubbo-server和dubbo-client的dubbo:registry标签也应该修改如下:1
<dubbo:registry address="zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183"/>
4) 启动dubbo-admin,查看系统管理 -> 系统状态,注册中心此时处于正常连接状态。
5) 停止zookeeper-1:1
./zookeeper-1/bin/zkServer.sh stop
此时注册中心仍然处于正常连接状态,集群成功。
6) 停止zookeeper-2:1
./zookeeper-2/bin/zkServer.sh stop
此时注册中心报错,处于未连接状态,因为超过一半机器已宕机。
7) 重新启动zookeeper-1和zookeeper-2:1
2./zookeeper-1/bin/zkServer.sh start
./zookeeper-2/bin/zkServer.sh start
注册中心状态已经恢复正常。
作者 [@FateSolo]
2017 年 06月 04日