zookeeper安装_【Zookeeper】zookeeper的安装与调试
一、問題
1.1、環(huán)境
電腦環(huán)境:Windows 7;
JDK環(huán)境: Jdk1.8;
zookeeper版本:3.5.6
1.2、問題 使用zookeeper已經(jīng)有一段時(shí)間了,那么如何安裝和調(diào)試呢?
二、解答
2.1、操作步驟; 1.zookeeper官網(wǎng)地址:官網(wǎng)
2.zookeeper鏡像壓縮包下載地址:鏡像下載地址
這里有一個(gè)坑,就是一定要下載帶bin字樣的安裝包:
不然項(xiàng)目下載下來會(huì)有如下報(bào)錯(cuò),因?yàn)檫@里有兩個(gè)下載包,從目前的最新版本3.5.5開始,帶有bin名稱的包才是我們想要的下載可以直接使用的里面有編譯后的二進(jìn)制的包,而之前的普通的tar.gz的包里面是只是源碼的包無法直接使用。原因詳見:
3、在安裝的zookeeper目錄下的bin目錄同級(jí)目錄下新增data和log目錄(文件夾);從來存放數(shù)據(jù)和日志;
4、復(fù)制zoo_sample.cfg文件,然后改名為zoo.cfg,然后修改zoo.cfg配置文件;加入你剛才新增的data目錄和log目錄地址;注意【正斜杠】和【反斜杠】;
5、為避免不必要的麻煩,我們使用管理員運(yùn)行cmd;
然后再cd到你安裝路徑下面的bin目錄下,運(yùn)行zkServer.cmd;
運(yùn)行沒有報(bào)錯(cuò),很好,然后我又開了一個(gè)cmd(管理員身份運(yùn)行)運(yùn)行監(jiān)聽腳本zkCli.cmd:
二、集群偽分布模式 例如我們要部署3臺(tái)服務(wù)器:我們?cè)赿ata目錄下分別新增d_1,d_2,d_3三個(gè)子目錄,用來存放數(shù)據(jù);
1、復(fù)制zoo.cfg3份,分別命名為zoo1.cfg,zoo2.cfg,zoo3.cfg;
①、zoo1.cfg配置文件:
②、zoo2.cfg配置文件:
③、zoo3.cfg配置文件:
2、修改zkServer.cmd三份,分別命名為zkServer1.cmd,zkServer2.cmd,zkServer31.cmd; 然后修改內(nèi)容如下:
①、zkServer1.cmd內(nèi)容
②、zkServer2.cmd內(nèi)容
③、zkServer3.cmd內(nèi)容
3、啟動(dòng),用【管理員身份】運(yùn)行cmd,然后cd到zookeeper目錄下,分別運(yùn)行zkServer1.cmd,zkServer2.cmd,zkServer3.cmd;但是這里報(bào)錯(cuò)了:
仔細(xì)看這里的報(bào)錯(cuò)日志:
2019-12-19 13:43:30,837 [myid:] - WARN [main:VerifyingFileFactory@59] - ..confzoo1.cfg is relative. Prepend . to indicate that you're sure! 2019-12-19 13:43:30,842 [myid:] - INFO [main:QuorumPeerConfig@385] - clientPortAddress is 0.0.0.0/0.0.0.0:2181 2019-12-19 13:43:30,843 [myid:] - INFO [main:QuorumPeerConfig@389] - secureClientPort is not set 2019-12-19 13:43:30,864 [myid:] - ERROR [main:QuorumPeerMain@89] - Invalid config, exiting abnormally org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Error processing ../conf/zoo1.cfg他的意思是:
1)、安全客戶端端口號(hào)沒有設(shè)置;
2)、不存在的配置,退出異常,使用../conf/zoo1.cfg配置異常;
這里的思路有兩個(gè),一是如何配置安全端口號(hào)(secureClientPort);二是,排查zoo1.cfg配置文件; 我們通過查閱別的資料,發(fā)現(xiàn)secureClientPort is not set沒有問題,其他人正常啟動(dòng)也會(huì)有這句日志,那我們先忽略第1點(diǎn);然后看第2點(diǎn);排查zoo1.cfg配置文件;我們使用的是zkServer1.cmd,看日志,zkServer1.cmd也找到了zoo1.cfg這個(gè)配置文件,然后很大可能就是zoo1.cfg的配置問題了;
①、我們先將clientPort的端口號(hào)改成2199,但是也報(bào)錯(cuò)了:
然后我們就排除端口號(hào)占用的問題;而且,如果是端口號(hào)沖突,應(yīng)該是Address is alreadly in use;這樣的報(bào)錯(cuò)才對(duì);
②、我注釋掉了server.2和server.3;然后再次啟動(dòng),發(fā)現(xiàn)可以啟動(dòng):
所以,這里是因?yàn)椤緜畏植际健颗渲肐P地址導(dǎo)致的錯(cuò)誤;然后這個(gè)報(bào)文下面又報(bào)了另外一個(gè)錯(cuò)誤:
這個(gè)先不管,回到剛才的問題,【偽分布式】端口號(hào)一樣,為什么就啟動(dòng)不了呢?
③、我們把localhost改成了127.0.0.1,還是一樣的錯(cuò)誤:
日志報(bào)文:
這說明localhost和127.0.0.1是無差別讀取的;排除這個(gè)原因;
④、后來去網(wǎng)上查了一下原因,說在zookeeper下,新增的data文件夾里,要自己手動(dòng)新增一個(gè)myid文件(沒有任何后綴),myid里的值唯一標(biāo)識(shí)了一天zookeeper;因?yàn)槲覀兣渲昧?臺(tái)【偽分布式】zookeeper地址,并且在zookeeper目錄下的data文件夾里新增了d_1,d_2,d_3三個(gè)文件夾,所以我們需要在這3個(gè)文件夾里都放myid文件,里面的值分別填寫為1,2,3,用來區(qū)分不同的zookeeper; 但是執(zhí)行的時(shí)候還是報(bào)錯(cuò):
java.io.IOException: No snapshot found, but there are log entries. Something is broken!然后查找原因發(fā)現(xiàn),我們做【偽分布式】集群的時(shí)候,data文件里建立了三個(gè)目錄d_1,d_2,d_3;但是log用的還是老的,這個(gè)就是導(dǎo)致上面IOException的原因,專款專用,不同的zookeeper,需要用不同的data目錄,用不同的log目錄,不然3臺(tái)zookeeper的日志會(huì)串掉的;所以將zoo1.cfg,zoo2.cfg,zoo3.cfg里的日志輸出地址改成新的目錄即可:
然后啟動(dòng)第1臺(tái)服務(wù)器的時(shí)候包連接拒絕,這個(gè)也不要怕,因?yàn)槭羌?#xff0c;必須3臺(tái)服務(wù)器都起來才能通信,所以,我們用【管理員身份】啟動(dòng)3個(gè)cmd窗口,然后就不報(bào)錯(cuò)了; 全篇結(jié)束;
三、總結(jié)
歡迎關(guān)注我的
CSDN博客: https://blog.csdn.net/River_Continent
微信公眾號(hào):幕橋社區(qū)
知乎:張牧野, https://www.zhihu.com/people/zhang-mu-ye-37-76/activities
簡(jiǎn)書: https://www.jianshu.com/u/02c0096cbfd3
總結(jié)
以上是生活随笔為你收集整理的zookeeper安装_【Zookeeper】zookeeper的安装与调试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在CentOS 7 / RHEL 7
- 下一篇: yum yuan