搭建 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.cfg
為zoo.cfg
,對其進行修改:
cd ./conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
配置下dataDir
和dataLogDir
的路徑,為之前建立的兩個資料夾的路徑,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、如果你的zookeeper
和dubbo-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、如果你的zookeeper
和dubbo-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、保持生產者處於執行狀態,然後執行消費者如下。
暫時還沒成功