主机系统环境准备

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版本命令有所差异)

本次测试中由于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文件夹下的文件