1. 程式人生 > >基於springBoot的zookeeper叢集搭建(dubbo2.*版本)

基於springBoot的zookeeper叢集搭建(dubbo2.*版本)

主機系統環境準備

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"})

最後:遇到的那些坑

1.  /conf/zoo.cfg dataDir與dataDirLog檔案路徑是否存在,如果不存在請手動建立

2.  檢查dataDir路徑下是否建立了myid檔案,檔案中是否儲存了server.x 中 x的號碼

3.  檢查各zookeeper節點所在的宿主機的防火牆埠是否開啟

以上如果都不行,請清空zookeeper 的pid,以及data與log資料夾下的檔案