(個人)Zookeeper集群環境部署
阿新 • • 發佈:2017-08-19
默認 desktop www enabled font systemctl des one att 一.準備工作
1. 下載zookeeper,下載地址:https://zookeeper.apache.org/releases.html#download 2. 下載CentOS7的鏡像,下載地址:https://www.centos.org/download/3. 準備XManager,用於遠程連接Linux,我用的是CentOS7.4. 準備VMVare Workstation,安裝好3臺以上(至少3臺才能集群)CentOS75. 設置好CentOS的JDK,本人使用的是最新的JDK8 通過XFTP上傳到Linux的指定目錄,假設為 ZK_HOME 2. 在ZK_HOME中解壓zookeeper
a. 2888表示follower節點與leader節點交換信息的端口號b. 3181是在leader節點掛掉後,進行leader選舉需要的端口.本步驟完成後,zoo.cfg的結果如下所示
1. 下載zookeeper,下載地址:https://zookeeper.apache.org/releases.html#download 2. 下載CentOS7的鏡像,下載地址:https://www.centos.org/download/3. 準備XManager,用於遠程連接Linux,我用的是CentOS7.4. 準備VMVare Workstation,安裝好3臺以上(至少3臺才能集群)CentOS75. 設置好CentOS的JDK,本人使用的是最新的JDK8
二. Zookeeper部署
說明:該教程是在一個機器上部署的,請求1-5步完成後,重復在其他機器上進行操作.1. 將下載好的 zookeeper-3.4.10.tar.gz(我當前版本)tar -zxvf zookeeper-3.4.10.tar.gz
3. 在ZK_HOME的conf目錄中,復制zookeeper的配置為zoo.cfg(zk啟動時候默認的配置文件)4. 在ZK_HOME的conf目錄的zoo.cfg的最後添加如下配置:cd /ZK_HOME cp zoo_sample.cfg zoo.cfg ---如果是單機環境部署,可以直接通過此命令啟動. ---ZK的啟動參數有: {start|start-foreground|stop|restart|status|upgrade|print-cmd} ./zkServer.sh start
server.1=192.168.100.10:2888:3181
server.2=192.168.100.11:2888:3181
server.3=192.168.100.12:2888:3181
說明:a. 2888表示follower節點與leader節點交換信息的端口號b. 3181是在leader節點掛掉後,進行leader選舉需要的端口.本步驟完成後,zoo.cfg的結果如下所示
5. 在ZK_HOME的zoo.cfg中有一個# The number of milliseconds of each tick tickTime=2000 # The number of ticks that the initial # synchronization phase can take initLimit=10 # The number of ticks that can pass between # sending a request and getting an acknowledgement syncLimit=5 # the directory where the snapshot is stored. # do not use /tmp for storage, /tmp here is just # example sakes. dataDir=/tmp/zookeeper # the port at which the clients will connect clientPort=2181 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60 # # Be sure to read the maintenance section of the # administrator guide before turning on autopurge. # # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance # # The number of snapshots to retain in dataDir #autopurge.snapRetainCount=3 # Purge task interval in hours # Set to "0" to disable auto purge feature #autopurge.purgeInterval=1 server.1=192.168.100.10:2888:3181 server.2=192.168.100.11:2888:3181 server.3=192.168.100.12:2888:3181
dataDir=/tmp/zookeeper
此時需要在該指定目錄下創建myid文件,其中的文件內容為zoo.cfg最後部分的配置獲取.獲取規則:假設本機ip為192.168.100.10 那麽此時的myid文件中只有一行內容各位1cd /tmp
mkdir /zookeeper
vim myid
---通過vim設置myid
6. 啟動啟動ZK跳轉到ZK的bin目錄下,然後運行-- 啟動zookeeper
./zkServer.sh start
-- 查看運行狀態
./zkServer.sh status
7. 連接zookeeper,其中連接端口為2181 zkCli.sh -server 192.168.100.10:2181,192.168.100.11:2181,192.168.100.12:2181
如果連接成功可以看到如下信息2017-08-19 01:48:03,042 [myid:] - INFO [main:[email protected]] - Client environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
2017-08-19 01:48:03,057 [myid:] - INFO [main:[email protected]] - Client environment:host.name=localhost
2017-08-19 01:48:03,057 [myid:] - INFO [main:[email protected]] - Client environment:java.version=1.8.0_144
2017-08-19 01:48:03,075 [myid:] - INFO [main:[email protected]] - Client environment:java.vendor=Oracle Corporation
2017-08-19 01:48:03,076 [myid:] - INFO [main:[email protected]] - Client environment:java.home=/usr/java/jdk1.8.0_144/jre
2017-08-19 01:48:03,076 [myid:] - INFO [main:[email protected]] - Client environment:java.class.path=/lcf-tools/zookeeper-3.4.10/bin/../build/classes:/lcf-tools/zookeeper-3.4.10/bin/../build/lib/*.jar:/lcf-tools/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/lcf-tools/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/lcf-tools/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/lcf-tools/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/lcf-tools/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/lcf-tools/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/lcf-tools/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/lcf-tools/zookeeper-3.4.10/bin/../conf:
2017-08-19 01:48:03,079 [myid:] - INFO [main:[email protected]] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2017-08-19 01:48:03,080 [myid:] - INFO [main:[email protected]] - Client environment:java.io.tmpdir=/tmp
2017-08-19 01:48:03,080 [myid:] - INFO [main:[email protected]] - Client environment:java.compiler=<NA>
2017-08-19 01:48:03,081 [myid:] - INFO [main:[email protected]] - Client environment:os.name=Linux
2017-08-19 01:48:03,081 [myid:] - INFO [main:[email protected]] - Client environment:os.arch=amd64
2017-08-19 01:48:03,081 [myid:] - INFO [main:[email protected]] - Client environment:os.version=3.10.0-514.26.2.el7.x86_64
2017-08-19 01:48:03,082 [myid:] - INFO [main:[email protected]] - Client environment:user.name=root
2017-08-19 01:48:03,082 [myid:] - INFO [main:[email protected]] - Client environment:user.home=/root
2017-08-19 01:48:03,082 [myid:] - INFO [main:[email protected]] - Client environment:user.dir=/lcf-tools/zookeeper-3.4.10/conf
2017-08-19 01:48:03,087 [myid:] - INFO [main:[email protected]] - Initiating client connection, connectString=192.168.100.10:2181,192.168.100.11:2181,192.168.100.12:2181 sessionTimeout=30000 [email protected]
2017-08-19 01:48:03,195 [myid:] - INFO [main-SendThread(192.168.100.10:2181):[email protected]] - Opening socket connection to server 192.168.100.10/192.168.100.10:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2017-08-19 01:48:03,746 [myid:] - INFO [main-SendThread(192.168.100.10:2181):[email protected]] - Socket connection established to 192.168.100.10/192.168.100.10:2181, initiating session
[zk: 192.168.100.10:2181,192.168.100.11:2181,192.168.100.12:2181(CONNECTING) 0] 2017-08-19 01:48:04,093 [myid:] - INFO [main-SendThread(192.168.100.10:2181):[email protected]] - Session establishment complete on server 192.168.100.10/192.168.100.10:2181, sessionid = 0x15df975935c0000, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
三. 補充內容
0. zookeeper目錄中各個文件的認識bin目錄
zk的可執行腳本目錄,包括zk服務進程,zk客戶端,等腳本。其中,.sh是Linux環境下的腳本,.cmd是Windows環境下的腳本。
conf目錄
配置文件目錄。zoo_sample.cfg為樣例配置文件,需要修改為自己的名稱,一般為zoo.cfg。log4j.properties為日誌配置文件。
lib
zk依賴的包。
contrib目錄
一些用於操作zk的工具包。
1. 如果不想每次zookeeper都跳轉到zk的bin目錄,則可以將bin目錄加入全局path中.註意第3行和第5行末尾2. zookeeper啟動後會在bin目錄生成一個zookeeper.out的日誌文件,可以通過tail指令進行查看如果覺得麻煩,還可以直接通過添加指令的形式一起啟動進行查看:3. zoo.cfg配置文件解讀4. 啟動後提示 java.net.NoRouteToHostException:No route to host 該問題為找不到路由,防火墻沒有關閉.---------------------------------------------------------------
Ubuntu(ubuntu-12.04-desktop-amd64)
查看防火墻狀態:ufw status
關閉防火墻:ufw disable
---------------------------------------------------------------
centos6.0
查看防火墻狀態:service iptables status
關閉防火墻:chkconfig iptables off #開機不啟動防火墻服務
--------------------------------------------------------------
centos7.0(默認是使用firewall作為防火墻,如若未改為iptables防火墻,使用以下命令查看和關閉防火墻)
查看防火墻狀態:firewall-cmd --state
關閉防火墻:systemctl stop firewalld.service
5. 提示 Address aready in use ,該問題應該是端口被占用,通過如下指令查看端口占用:-----查看端口占用------
方法一 lsof -i:端口號
方法二 netstat -tunlp|grep 端口號
-----殺掉進程---------
推薦方法 kill -s 9 3382 其中9為盡快殺掉進程的意思 3382為pid
(個人)Zookeeper集群環境部署