第二課 zookeeper的安裝與集群

zookeeper簡介
Zookeeper是一個分布式協(xié)調(diào)服務(wù);就是為用戶的分布式應(yīng)用程序提供協(xié)調(diào)服務(wù)
A、zookeeper是為別的分布式程序服務(wù)的
B、Zookeeper本身就是一個分布式程序(只要有半數(shù)以上節(jié)點存活,zk就能正常服務(wù))
C、Zookeeper所提供的服務(wù)涵蓋:主從協(xié)調(diào)、服務(wù)器節(jié)點動態(tài)上下線、統(tǒng)一配置管理、分布式共享鎖、統(tǒng)一名稱服務(wù)……
D、雖然說可以提供各種服務(wù),但是zookeeper在底層其實只提供了兩個功能:
管理(存儲,讀取)用戶程序提交的數(shù)據(jù);
并為用戶程序提供數(shù)據(jù)節(jié)點監(jiān)聽服務(wù);

Zookeeper集群的角色: Leader 和 follower (Observer)
只要集群中有半數(shù)以上節(jié)點存活,集群就能提供服務(wù)
1、zookeeper的安裝
這里我準(zhǔn)備了一個純凈的linux來進行安裝,另外zookeeper是java開發(fā)的所以先裝好jdk(1.7及以上)。
1、將zookeeper-3.4.6.tar.gz上傳到/root目錄下。
2、創(chuàng)建apps文件夾,將zookeeper-3.4.6.tar.gz解壓到apps文件夾下。

[root@localhost ~]# ll
總用量 17312
-rw-------. 1 root root     1131 9月  12 03:59 anaconda-ks.cfg
-rw-r--r--. 1 root root    12526 9月  12 03:59 install.log
-rw-r--r--. 1 root root     3482 9月  12 03:59 install.log.syslog
-rw-r--r--. 1 root root 17699306 6月  20 15:55 zookeeper-3.4.6.tar.gz
[root@localhost ~]# mkdir apps
[root@localhost ~]# tar -zxvf zookeeper-3.4.6.tar.gz -C apps/

3、進入apps/zookeeper-3.4.6.tar.gz/conf文件夾,復(fù)制zoo_example.cfg改名為zoo.cfg

[root@localhost apps]# ll
總用量 4
drwxr-xr-x. 10 1000 1000 4096 2月  20 2014 zookeeper-3.4.6
[root@localhost apps]# cd zookeeper-3.4.6/conf
[root@localhost conf]# ll
總用量 12
-rw-rw-r--. 1 1000 1000  535 2月  20 2014 configuration.xsl
-rw-rw-r--. 1 1000 1000 2161 2月  20 2014 log4j.properties
-rw-rw-r--. 1 1000 1000  922 2月  20 2014 zoo_sample.cfg
[root@localhost conf]# cp zoo_sample.cfg zoo.cfg
[root@localhost conf]# ll
總用量 16
-rw-rw-r--. 1 1000 1000  535 2月  20 2014 configuration.xsl
-rw-rw-r--. 1 1000 1000 2161 2月  20 2014 log4j.properties
-rw-r--r--. 1 root root  922 9月  12 18:05 zoo.cfg
-rw-rw-r--. 1 1000 1000  922 2月  20 2014 zoo_sample.cfg

4、修改配置文件zoo.cfg,這里只修改數(shù)據(jù)存儲文件夾位置

image.png

5、創(chuàng)建文件夾 /root/zkdata

[root@localhost conf]# cd /root
[root@localhost ~]# mkdir zkdata
[root@localhost ~]# ll
總用量 17320
-rw-------. 1 root root     1131 9月  12 03:59 anaconda-ks.cfg
drwxr-xr-x. 3 root root     4096 9月  12 18:04 apps
-rw-r--r--. 1 root root    12526 9月  12 03:59 install.log
-rw-r--r--. 1 root root     3482 9月  12 03:59 install.log.syslog
drwxr-xr-x. 2 root root     4096 9月  12 18:12 zkdata
-rw-r--r--. 1 root root 17699306 6月  20 15:55 zookeeper-3.4.6.tar.gz

6、進入/root/zookeeper-3.4.6/bin,啟動zookeeper并且查看是否啟動成功。

[root@localhost bin]# ll
總用量 36
-rwxr-xr-x. 1 1000 1000  238 2月  20 2014 README.txt
-rwxr-xr-x. 1 1000 1000 1937 2月  20 2014 zkCleanup.sh
-rwxr-xr-x. 1 1000 1000 1049 2月  20 2014 zkCli.cmd
-rwxr-xr-x. 1 1000 1000 1534 2月  20 2014 zkCli.sh
-rwxr-xr-x. 1 1000 1000 1333 2月  20 2014 zkEnv.cmd
-rwxr-xr-x. 1 1000 1000 2696 2月  20 2014 zkEnv.sh
-rwxr-xr-x. 1 1000 1000 1084 2月  20 2014 zkServer.cmd
-rwxr-xr-x. 1 1000 1000 5742 2月  20 2014 zkServer.sh
[root@localhost bin]# ./zkServer.sh start
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@localhost bin]# ./zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: standalone

到這就說明啟動成功了。但是實際有可能會出現(xiàn)一些問題。比如查看狀態(tài)就經(jīng)??吹轿磫映晒?/p>

[root@itheima32 bin]# ./zkServer.sh status
JMX enabled by default
Using config: /usr/zookeeper-3.4.6/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

先關(guān)閉防火墻試試

[root@itheima32 bin]# service iptables stop
iptables:清除防火墻規(guī)則:                                 [確定]
iptables:將鏈設(shè)置為政策 ACCEPT:filter                    [確定]
iptables:正在卸載模塊:                                   [確定]
或者
chkconfig iptables off(永久關(guān)閉(開機不啟動防火墻))

如果不行,那么查看日志吧。

[root@localhost bin]# cat zookeeper.out 

如果出現(xiàn)了java.net.BindException: Address already in use
地址被占用,那么先查看是否被占用,占用了則殺死進程再啟動,建議去/root/zkdata下刪除zookeeper_server.pid。

![image.png](https://upload-images.jianshu.io/upload_images/11745132-339c4fd18e6d62f9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

2、zookeeper的集群
zookeeper的安裝很簡單,zookeeper的集群也不難,主要還是改配置,準(zhǔn)備三個純凈版的linux,還是得裝好jdk配置好環(huán)境

可以使用前面用的linux,把apps文件夾和zkdata文件夾都刪了即可。然后克隆兩個,克隆了一定需要修改ip地址。但是可能會出現(xiàn)下面的問題。
(1)、查看ip的話看不到eth0只顯示127.0.0.1,出現(xiàn)這種情況使用以下命令

ifup eth0 ifconfig up eth0

(2)、如果使用上面的命令出現(xiàn)了device eth0 does not seem to be present, delaying initialization問題??梢允褂孟旅鎯蓚€步驟解決。
第一步:刪除mac地址

image.png
image.png

第二步:刪除70-persistentce-net.rules

image.png

這個文件綁定了網(wǎng)卡和mac地址,所以換了網(wǎng)卡以后MAC地址變了,然后直接刪除重啟,它會自動生成個。
重啟后再用ifup eth0 ifconfig up eth0命令就能看到了。

zookeeper的集群
1、首先使用的是192.168.25.126這臺服務(wù)器,前面6步與zookeeper安裝一致,唯一區(qū)別就是配置文件修改不一樣

image.png

注:2888是leader與follower之間通信的端口,3888是投票使用的端口(數(shù)字不做要求,但應(yīng)避免沖突)。
2、將配置好的apps下的zookeeper傳到另外兩臺linux

[root@localhost ~]# scp -r apps 192.168.25.127:/root
root@192.168.25.127's password: 
...
[root@localhost ~]# scp -r apps 192.168.25.125:/root
root@192.168.25.127's password: 
...

3、zkdata文件夾下創(chuàng)建myid文件設(shè)置值為2

[root@localhost zkdata]# echo 2 > myid
[root@localhost zkdata]# cat myid
2

4、分別切換至192.168.25.127和192.168.25.125兩臺服務(wù)器,同樣創(chuàng)建zkdata,zkdata下創(chuàng)建myid文件設(shè)置值分別為1,3。

注意:myid里面設(shè)置的值一定要與配置文件里設(shè)定的一致。

5、再分別啟動三條服務(wù)器,查看是否啟動成功

[root@localhost bin]# ./zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower

[root@localhost bin]# ./zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader

[root@localhost bin]# ./zkServer.sh status
JMX enabled by default
Using config: /root/apps/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower

一個leader兩個follower

如果啟動的了查看狀態(tài)發(fā)現(xiàn)沒有啟動成功。除了zookeeper安裝時候出現(xiàn)的問題,這里主要的問題就是zkdata文件夾下的myid的值寫的跟配置文件里面不一致,這個時候會出現(xiàn)ConnectionException:拒絕連接的異常,檢查修改一下。如果是地址被占用那么就用上面介紹的方法。

停止leader,看看是否能選舉出新的leader

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • zookeeper簡介Zookeeper是一個分布式協(xié)調(diào)服務(wù);就是為用戶的分布式應(yīng)用程序提供協(xié)調(diào)服務(wù)A、zooke...
    piziyang12138閱讀 213評論 0 0
  • 1 Zookeeper概述# ZooKeeper是一個為分布式應(yīng)用所設(shè)計的分布的、開源的協(xié)調(diào)服務(wù),它主要是用來解決...
    七寸知架構(gòu)閱讀 7,484評論 0 101
  • zookeeper簡介Zookeeper是一個分布式協(xié)調(diào)服務(wù);就是為用戶的分布式應(yīng)用程序提供協(xié)調(diào)服務(wù)A、zooke...
    __豆約翰__閱讀 465評論 0 1
  • 終極算法 關(guān)注微信號每天收聽我們的消息終極算法為您推送精品閱讀 前言 Hadoop 在大數(shù)據(jù)技術(shù)體系中的地位至關(guān)...
    Yespon閱讀 131,125評論 12 168
  • 話說我還不知道琳瑯天上被解散的事,現(xiàn)在知道了感覺他已經(jīng)陪伴多年,感情還是有得,我是自qq飛車開始知道琳瑯天上這個工...
    文勝發(fā)閱讀 3,015評論 0 4

友情鏈接更多精彩內(nèi)容