zookeeper的安裝與集群

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

Zookeeper集群的角色: Leader 和 follower (Observer)
只要集群中有半數(shù)以上節(jié)點(diǎn)存活,集群就能提供服務(wù)
1、zookeeper的安裝
這里我準(zhǔn)備了一個(gè)純凈的linux來進(jìn)行安裝,另外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、進(jìn)入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ù)存儲(chǔ)文件夾位置

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、進(jìn)入/root/zookeeper-3.4.6/bin,啟動(dòng)zookeeper并且查看是否啟動(dòng)成功。

[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

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

[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)閉(開機(jī)不啟動(dòng)防火墻))

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

[root@localhost bin]# cat zookeeper.out 

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

image.png

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

可以使用前面用的linux,把a(bǔ)pps文件夾和zkdata文件夾都刪了即可。然后克隆兩個(gè),克隆了一定需要修改ip地址。但是可能會(huì)出現(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問題。可以使用下面兩個(gè)步驟解決。
第一步:刪除mac地址

image.png
image.png

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

image.png

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

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

image.png

注:2888是leader與follower之間通信的端口,3888是投票使用的端口(數(shù)字不做要求,但應(yīng)避免沖突)。
2、將配置好的apps下的zookeeper傳到另外兩臺(tái)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兩臺(tái)服務(wù)器,同樣創(chuàng)建zkdata,zkdata下創(chuàng)建myid文件設(shè)置值分別為1,3。

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

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

[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

一個(gè)leader兩個(gè)follower

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

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

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

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

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