1. 程式人生 > >搭建 zookeeper 和搭建dubbo監控中心

搭建 zookeeper 和搭建dubbo監控中心

一、搭建java和tomcat環境

二、搭建zookeeper

我使用的是zookeeper-3.5.3-beta.tar,點選下載點選下載

然後新建一個存放目錄  /usr/mysoftware/tomcat ,將安裝包rz進去。

下載後將其解壓:

tar -xvf zookeeper-3.5.3-beta.tar.gz

解壓後如下:(我這裡已經解壓過了,所以執行指令並沒有重複解壓)

切換到這個解壓後得到的資料夾,然後建立建立logs資料夾和data資料夾用於存放日誌和資料:,如下(同樣我已經建立了)

cd ./zookeeper-3.5.3-beta
mkdir data
mkdir logs

進入上圖所示的conf目錄,複製一份zoo_sample.cfgzoo.cfg,對其進行修改:

cd ./conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg 

配置下dataDirdataLogDir的路徑,為之前建立的兩個資料夾的路徑,clientPort使用預設的2181埠即可: 

此處用的是單機模式,沒有配叢集,這樣就可以了。

在進入到bin目錄,啟動服務即可:

./zkServer.sh start
./zkServer.sh status

如下圖所示: 

如上所示應該就是啟動成功了。

小心踩坑:此處注意很多時候zk可能並沒有真正的被開啟。如下圖所所示:

原因:通常情況下是zk的埠和tomcat的埠衝突了。現象就是tomcat關閉的時候zk能夠能正常的啟動,此時tomcat即時輸入了啟動指令“./startup.sh”在瀏覽中也是無法正常訪問那個tomcat的頁面的(http://172.25.10.111:8080)。如果tomcat先啟動了那麼zk就無法真正的啟動。歸根結底:zk的預設埠是8080,這個是和tomcat的預設埠衝突,這回造成每次兩者只能啟動一個另一個啟動不成功。另外參考

驗證:你直接將tomcat和zk都啟動,然後檢視端口占用情況“netstat -an |grep 8080”。如下圖所示顯然是衝突了。

解決辦法:在上面vim zoo.cfg 中加上一句

admin.serverPort=8088 #8088為你指定的沒有被佔用的埠號

測試zk是否能連上:啟動客戶端測試一下,再開一視窗,同樣cd到bin下執行,執行如下指令

./zkCli.sh -server 127.0.0.1:2181

注意:這條指令指令非常有用,在執行java程式之前你可以用來測試能否連同,如果不通的話他們報的錯是一樣的。

如下圖所示為通的情況:

……………………(中間省略若干行)……………………

小心踩坑:

執行./zkServer.sh start時不要加sudo,如果root使用者配置檔案沒有配JAVA_HOME會出現找不到JAVA_HOME

相關命令:

啟動服務:start 停止服務: stop 重啟服務; restart 檢視狀態:status

三、搭建dubbo監控中心

版本要求:

請使用dubbo-admin-2.5.6.war及以上版本,否則會不支援JDK1.8!

我用的是dubbo-admin-2.5.7.war:  下載

小心踩坑:

1、如果你的zookeeperdubbo-admin在一臺伺服器上,dubbo-admin不用修改任何內容!此時

先tomcat的ROOT下檔案都刪除。

cd /usr/mysoftware/tomcat/apache-tomcat-9.0.10/webapps/ROOT
rm -rf /usr/mysoftware/tomcat/apache-tomcat-9.0.10/webapps/ROOT/*

把dubbo-admin-2.5.7.war檔案cd到ROOT下,再解壓即可。

unzip dubbo-admin-2.5.7.war

檢視檔案有以下內容如下:

2、如果你的zookeeperdubbo-admin不在一臺伺服器上。則還要繼續:

到webapps/ROOT/WEB-INF下,有一個dubbo.properties檔案,裡面指向Zookeeper ,使用的是Zookeeper 的註冊中心,如圖所示。你需要將那個IP地址改成zookeeper主機的IP地址就好了。

然後啟動tomcat服務

啟動完成,172.25.10.111:8080 訪問測試,預設的使用者名稱和密碼:root/root

登陸後如下:

注:

(1)如果 ./zkServer.sh start 的話要記得關閉  ./zkServer.sh stop,否則可能出現連不上。

(2)如果還是連不上的話關閉防火牆試試。 

/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
service iptables save
service iptables restart

至此,大功告成。。

包括程式如下:下載

1、首先將zk和tomcat都啟動起來。

2、登入172.25.10.111:8080進入tomcat介面。

3、按照上面的部落格把生產者程式配置載入進去。(中間會有很多各種各樣的報錯,網上搜都是可以解決的。)例如:

問題1:ApplicationContext-dubbo.xml有很多“xxx”。提示cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element

解決:網上一搜一大堆。就是缺一個dubbo.xsd檔案,下載一個在配置好關聯關係即可。參見此連結

問題2:可能還會有一些log4j的stdout的一些錯誤,有的話在log4.properties中新增如下兩句即可。(生產者/消費者都被糾正了)

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

問題3:程式執行的時候可能還會出現一些紅色的error等,直接百度很容易解決。

小心踩坑:同樣在ApplicationContext-dubbo.xml檔案中指定了zookeeper的IP地址和埠。我們知道在一臺電腦的情況下預設是127.0.0.1:2181,但是在我們這裡不是。因為我們的zk是部署在一個ip地址為172.25.10.111的虛擬機器上的。這個虛擬機器我們是可以在cmd視窗下ping通的(ping 172.25.10.111)。所以此處應該如下才對:

其正常執行的情況應該是這個樣子的。

dubbo的介面是這個樣子的:

4、接下來把消費的工程也開啟。(可能面臨那個stdout的錯誤,處理方法一樣)

5、保持生產者處於執行狀態,然後執行消費者如下。

暫時還沒成功