主机系统环境准备
Jdk1.7+,window系统(使用window10+window7),或者linux系统(本次测试使用centos7)
第一步:主机名称到ip地址映射配置
zookeeper集群中具有两个关键的角色:leader和follower。
集群中所有的结点作为一个整体对分布式应用提供服务,集群中每个结点之间都互相连接,所以,在配置的zookeeper集群的时候,每一个结点的host到ip地址的映射都要配置上集群中其它结点的映射信息。
例如,我的zookeeper集群中每个结点的配置,以master为例,/etc/hosts内容如下所示:
192.168.0.253 master(虚拟机linux系统)
192.168.0.219 follow-1(my 物理机 window系统)
192.168.0.133 follow-2(玉姐 物理机window系统)
第二步:配置防火墙端口(各主机之间)
window 系统关闭防火墙或者开放相应的端口,本系统中使用端口为2181,2888,3888
linux系统则使用systemctl iptables.service stop停止防火墙(不同linux版本命令有所差异)
l 本次测试中由于centos7防火墙关闭后无法访问网络,因此需要启用防火墙,配置开放端口
配置方式:
1. 找到防火墙对应的iptables文件,centos下路径为:/etc/sysconfig/iptables
2. 添加
-A INPUT -p tcp -m state--state NEW -m tcp --dport 80 -j ACCEPT(端口号)
-A INPUT -p tcp -m state--state NEW -m tcp --dport 2000:4000 -j ACCEPT(端口号范围)
第三步:主机之间连通性测试
使用ping命令做连通测试
Follow-1 follow-2 master
可能产生的问题,如果linux与window之间不通,则按照以下步骤检查
第四步:添加dubbo配置
1. Pom文件依赖
< dependency >< groupId > org.springframework.boot</ groupId >
< artifactId > spring-boot-starter-dubbo</ artifactId >
<version>1.3.1.RELEASE</version>
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
</exclusion>
</exclusions>
</dependency>
1. Yaml配置dubbo参数
-------privoder 提供者-------
spring:
dubbo:
registry:
address: 192.168.0.129:2181,192.168.0.165:2181,192.168.0.133:2181
protocol: zookeeper
protocol:
name: dubbo
host: 192.168.0.165
port: 20882
monitor:
protocol: registry
provider:
timeout: 120000
threadpool: fixed
threads: 100
accepts: 1000
-------customer 消费者-------
spring:
dubbo:
application:
name: atme-crm-service
registry:
address: 192.168.0.129:2181,192.168.0.165:2181,192.168.0.253:2181
protocol: zookeeper
protocol:
name: dubbo
prot: 20886
threads: 1000
heartbeat: 100000
host: 192.168.0.165
monitor:
protocol: registry
2. 启动项目引入dubbo配置
@ImportResource({"classpath:config/dubbo.xml"})
最后:遇到的那些坑
如果配置后出现Cannot open channel to 1 at election address /192.168.253.130:3888java.net.Co请按照如下步骤检查
1. /conf/zoo.cfg dataDir与dataDirLog文件路径是否存在,如果不存在请手动创建
2. 检查dataDir路径下是否创建了myid文件,文件中是否存储了server.x 中 x的号码
3. 检查各zookeeper节点所在的宿主机的防火墙端口是否开启
以上如果都不行,请清空zookeeper 的pid,以及data与log文件夹下的文件