上篇已經介紹了Dubbo的基本概念,我們知道了Dubbo提供方會將自己的服務註冊到註冊中心,使服務暴露出來,實現透明化。這節就介紹一下注冊中心的搭建
目前常用的註冊中心主要有四種,如下:
通過上述四種方法的對比,我選擇了第一種zookeeper註冊中心。
搭建環境:
Linux:CentOS-7.0-1406-x86_64
jdk:jdk-7u76-linux-x64.tar.gz
zookeeper:zookeeper-3.4.6.tar.gz
搭建步驟:(jdk環境不再敘述)
1、修改操作系統的/etc/hosts 文件中添加:
# zookeeper servers
192.168.91.130 dubbo-zookeeper
注:此處是爲了映射自己當前的ip地址,也可不進行設置。(建議設置,這樣以後如果ip地址更換之後,只需要修改此文件即可,其他的依賴項不需要修改)
2、上傳並解壓zookeeper安裝包,我的上傳路徑爲/usr/local/dubbo-files
命令:# tar -zxvf zookeeper-3.4.6.tar.gz –C /指定目錄
$ tar –zxvf zookeeper-3.4.6.tar.gz –C /usr/local/zookeeper
3、在/usr/local/zookeeper目錄下創建以下目錄:
$ mkdir data
$ mkdir logs
4、將/usr/local/zookeeper/conf目錄下的zoo_sample.cfg 文件拷貝一份,命名爲爲zoo.cfg
$ cp zoo_sample.cfg zoo.cfg
5、修改zoo.cfg文件:
$ vi zoo.cfg
其中:
2888 端口號是 zookeeper 服務之間通信的端口。
3888 是 zookeeper 與其他應用程序通信的端口。
192.168.91.130 是本機ip,這裏最好設置成第一步中設置的映射主機名,即dubbo-zookeeper。
initLimit:這個配置項是用來配置 Zookeeper 接受客戶端(這裏所說的客戶端不是用戶連接 Zookeeper 服務器的客戶端,而是 Zookeeper 服務器集羣中連接到Leader 的 Follower 服務器)初始化連接時最長能忍受多少個心跳時間間隔數。當已經超過 10 個心跳的時間(也就是 tickTime)長度後 Zookeeper 服務器還沒有收到客戶端的返回信息,那麼表明這個客戶端連接失敗。總的時間長度就是5*2000=10 秒。
syncLimit:這個配置項標識 Leader 與 Follower 之間發送消息,請求和應答時間長度,最長不能超過多少個tickTime 的時間長度,總的時間長度就是 2*2000=4秒。
server.A=B:C:D:其中 A 是一個數字,表示這個是第幾號服務器; B 是這個服務器的 IP 地址或/etc/hosts 文件中映射了 IP 的主機名; C 表示的是這個服務器與集羣中的 Leader 服務器交換信息的端口; D 表示的是萬一集羣中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的 Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。如果是僞集羣的配置方式,由於 B 都是一樣,所以不同的 Zookeeper 實例通信端口號不能一樣,所以要給它們分配不同的端口號。
6、在/usr/local/zookeeper/data 下創建文件myid文件,並編輯文件,文件內容對應自己在第五步中設置的server後的值,即:1
$ vi myid
7、爲zookeeper設置環境變量
$ vi /etc/profile
8、設置防火牆,打開第五步中所使用的端口2181、 2888、 3888
編輯/etc/sysconfig/iptables
# vi /etc/sysconfig/iptables
增加以下 3 行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
重啓防火牆:
# service iptables restart
在我的虛擬機中暫時沒法設置iptables,因爲是測試,所以直接關閉防火牆
$ systemctl disable firewalld.service
9、啓動並測試zookeeper,進入目錄/usr/local/zookeeper/bin
啓動:$ zkServer.sh start
查看進程:jps
其中, QuorumPeerMain 是 zookeeper 進程,啓動正常
查看狀態:$ zkServer.sh status
查看日誌:$ tail -500f zookeeper.out
10、停止zookeeper進程
$ zkServer.sh stop
至此,zookeeper註冊中心已經搭建好了。