基於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
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.
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資料夾下的檔案