為了搭建zookeeper 服務,需要找一台服務器,本着不為公司添麻煩的心理,所以呀 我就選擇了搭建虛擬機,通過虛擬機搭建zookeeper。相信很多人在看別人的博客或者視頻的時候,感覺別人一步一步的好順當啊。基本上是看了之后就覺得別人行我也行。可實際自己弄的時候簡直一步一個坑,我也是不能說一步一個坑那也是兩三步一個坑吧。下面我就一步一步的來,給大家講解我從搭建虛擬機到搭建zookeeper服務,期間遇到的各種各樣的問題,以及解決辦法。
第一步:先在VMware 創建一個虛擬機,具體步驟不再贅述,只說一下我遇到的問題。
問題1.創建的centos虛擬機無法打開(打開就是黑屏狀態,沒有任何反應)
因為我第一遍創建虛擬機的時候選擇的自定義,后面 我的解決方式是在創建新的虛擬機的時候 模式選擇要選擇 “典型” ,然后就好了,具體原因未知。
第二步:然后我們輸入ip查詢命名 ip addr 也可以輸入 ifconfig查看ip,但此命令會出現3個條目,centos的ip地址是ens33條目中的inet值。
發現 ens33 沒有 inet 這個屬性,那么就沒法通過IP地址連接虛擬機。
接着來查看ens33網卡的配置: vi /etc/sysconfig/network-scripts/ifcfg-ens33 注意vi后面加空格
從配置清單中可以發現 CentOS 7 默認是不啟動網卡的(ONBOOT=no)。
把這一項改為YES(ONBOOT=yes),
然后按 Esc 退出 再出入命令 :wq 再按Enter即可 (備注 :wq 是保存然后退出的意思 后面會專門講下vi)
然后重啟網絡服務: sudo service network restart ,正常應該出現類似下面這個圖
第三步:本機IP和虛擬主機IP 互ping,看看是否互通。如果不通請檢查虛擬機的防火牆是否關閉,下面是對應的命令
systemctl status firewalld //查看防火牆狀態 systemctl stop firewalld //關閉防火牆
如果防火牆關閉了,卻發生 本機能ping通虛擬機,虛擬機卻不能ping通本機。
那么去 控制面板 --》網絡和 Internet --》網絡連接 把 VMnet8 網絡啟用起來,然后再嘗試互ping . 互通之后繼續第四步
第四步:安裝JDK 設置環境變量 下面是對應的各個命令
//查看java jdk 是否安裝 java -version // 安裝jdk yum install java-1.8.0-openjdk //設置環境變量 ,注意目錄要設置成你安裝的目錄 export JAVA_HOME=/usr/java
第五步:下載zookeeper ,並安裝
官網:https://zookeeper.apache.org 下載ZooKeeper,地址:http://mirrors.hust.edu.cn/apache/zookeeper/
第六步:通過xshell 上傳zookeeper 包 到上傳到/usr/local下 , rz -y zookeeper-3.4.14.tar.gz
再次報錯: rz:未找到命令
解決方式:
yum -y install lrzsz
解壓zookeeper
tar -zxvf zookeeper-3.4.14.tar.gz
第七步 :配置Zookeeper
- 在/usr/local下創建一個文件夾叫zookeeper,並在zookeeper文件夾下再創建兩個文件夾data和dataLog。
2.cd /usr/local/zookeeper-3.4.14/conf/ 下,可以自己創建一個zoo.cfg或者將zoo_sample.cfg修改為zoo.cfg:我這邊新建了一個並設置以下參數:
這部分參考了 https://blog.csdn.net/u010246789/article/details/52101026
他配了三個server
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
我這主要是講完整的從創建虛擬機到搭建zookeeper 這個過程,如果想搭建主從的zookeeper參考 這位博主的。
tickTime=2000 dataDir=/usr/local/zookeeper/data clientPort=2181 initLimit=5 syncLimit=2 server.1=zookeeper1:2888:3888
3.在上面的dataDir目錄下(即/usr/local/zookeeper/data)創建一個myid文件。將server.1對應的1寫入myid中(server.2就是2): echo 1 > /usr/local/zookeeper/data/myid
4.修改/etc/hosts文件所以,否則計算機無法識別zookeeper1:比如 我這台機子的地址是192.168.44.135,所以需要在/etc/hosts中加入:
192.168.44.135 zookeeper1
第八步:啟動zookeeper
//啟動命令 /usr/local/zookeeper-3.4.14/bin/zkServer.sh start //查看狀態命令 /usr/local/zookeeper-3.4.14/bin/zkServer.sh status //停止服務命令 /usr/local/zookeeper-3.4.14/bin/zkServer.sh stop
-----------------------------------------------------------------------------------------------------------------------------
后記:如果是單機版,hosts文件只用配三個屬性就可以了
tickTime=2000 dataDir=/usr/local/zookeeper/data clientPort=2181
另外如果zookeeper 如果啟動失敗,或者查看狀態報下面這種錯誤,請檢查防火牆是否關閉,端口是否被占用(netstat -tunlp|grep 2181)
/usr/local/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Client port not found in static config file. Looking in dynamic config file.
grep: : 沒有那個文件或目錄
Client port not found. Terminating.