zookeeper叢集(二),zookeeper叢集

來源:互聯網
上載者:User

zookeeper叢集(二),zookeeper叢集

      經過前一篇文章《zookeeper偽叢集一》的閱讀,相信大家對zookeeper叢集已經有一定的瞭解了,接下來我們再談談zookeeper真叢集。其實真叢集和偽叢集還是有很多相似的部分的,我將類比3台叢集服務並且對其中一台叢集服務的配置進行講解,接下來兩台操作基本一模一樣。

     鋪墊:

    1、 本人建立3台虛擬機器,Linux版本為CentOS7,工具為vmware12

              2、外部連結虛擬機器的工具為小xmanager5,這個工具只是方便一些,你也可以不用

     3、需要提前在虛擬機器上裝好jdk1.7及以上版本,我使用的是1.8版本的,如果不會裝jdk,可以參照我的另一篇文章《Linux下的jdk安裝》

              4、本人將3台虛擬機器建立好,擷取到的外網地址分別為192.168.0.124,192.168.0.129,192.168.0.127,我分別取別名為CentOS1,CentOS3,CentOS4

       5、接下來的說明中,如果有關聯關係的地方,我會加粗並且用相同顏色進行標註

  搭建:

     1、修改zookeeper下的zoo.cfg檔案,具體內容如下: 

tickTime=2000
syncLimit=10
initLimit=5
dataDir=/home/d5000/zk/data
clientPort=3001
dataLogDir=/home/d5000/zk/log
server.1 = 192.168.0.124:2887:3887
server.2 = 192.168.0.129:2887:3887
server.3 = 192.168.0.127:2887:3887

因為是叢集,所以3台機器的連接埠號碼可以完全一致,可以共用一個zoo.cfg檔案

              2、在3台虛擬機器上分別建立/home/d5000/zk目錄,並且在zk下建立data目錄,用於存放dataDir配置的對應檔;接下來將zookeeper也傳到zk目錄下,這一點與偽叢集一致

              3、在CentOS1機器的/home/d5000/zk/data下建立myid檔案,內容是1

                   在CentOS3機器的/home/d5000/zk/data下建立myid檔案,內容是2

                   在CentOS4機器的/home/d5000/zk/data下建立myid檔案,內容是3; 

      4、分別給3台機器zookeeper許可權,否則如何啟動呢?可以先給zookeeper一個啟動許可權,進入/home/d5000/zk/zookeeper/bin,執行chmod 777  zkServer.sh

 

至此,叢集建立完畢,真叫那個簡單呀,開開心心的進行測試,分別進行啟動,   ./ zkServer.sh start ,第一台報錯,第二台報錯,第三台還是報錯,而且錯誤資訊一致,都是zookeeper no route to host,上網一查發現,有2個可能導致這個問題的出現,一個是防火牆,另一個是hostname。

 排查問題:

         1、分別查看3台機器防火牆是否關閉:firewall-cmd --state,發現防火牆確實沒有關閉,果斷執行關閉systemctl stop firewalld.service

         2、修改CentOS1機器,執行hostname  server.1 命令

     修改CentOS3機器,執行hostname  server.2 命令

               修改CentOS4機器,執行hostname  server.3 命令

         3、重啟虛擬機器,init 6     接下來重啟服務

         4,結果還是報一樣的錯誤  zookeeper no route to host,瞬間懵逼

    

                                                    

  -----------------------------------------------------------------------以下都是心碎,省略一萬字-------------------------------------------------------------------------

 

經過多方努力,最終在掌握一定的虛擬機器知識後才發現,systemctl stop firewalld.service關閉的防火牆是暫時的,只要服務一重啟防火牆立馬又生效,還有那個hostname也一樣:

    最終修改     

      1、徹底禁用防火牆:systemctl disable firewalld.service 

              2、修改CentOS1機器/etc/hostname檔案,內容為server.1

         修改CentOS3機器/etc/hostname檔案,內容為server.2

                   修改CentOS4機器/etc/hostname檔案,內容為server.3(永久修改)

               3、啟動第一台、第二台發現還是有錯誤資訊,但是現在的錯誤資訊意見轉變為connect refuesd(拒絕連結),繼續啟動第三台伺服器,發現沒有報錯資訊,而且測試後發現叢集服務正常,第一                     台報錯是因為第二第三台伺服器沒有啟動導致,第二台報錯是因為第三台叢集服務沒啟動導致。這些錯誤完全不妨礙叢集

    

       下面提供一下最簡單的測試,在192.168.0.124執行  telent  192.168.0.127 3001       telent  192.168.0.129 3001   如果都能連結成功,說明各自的服務已經能夠正常運行,並且可以進行通訊,接下來可以通過代碼進行更加完善的測試。

效果

 

                                    完畢

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.