1. 程式人生 > >(個人)Zookeeper集群環境部署

(個人)Zookeeper集群環境部署

默認 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

二. Zookeeper部署

說明:該教程是在一個機器上部署的,請求1-5步完成後,重復在其他機器上進行操作.1. 將下載好的 zookeeper-3.4.10.tar.gz(我當前版本)
通過XFTP上傳到Linux的指定目錄,假設為 ZK_HOME
2. 在ZK_HOME中解壓zookeeper
tar -zxvf zookeeper-3.4.10.tar.gz
3. 在ZK_HOME的conf目錄中,復制zookeeper的配置為zoo.cfg(zk啟動時候默認的配置文件)
cd /ZK_HOME
cp zoo_sample.cfg zoo.cfg
---如果是單機環境部署,可以直接通過此命令啟動.
---ZK的啟動參數有: {start|start-foreground|stop|restart|status|upgrade|print-cmd}
./zkServer.sh start 
4. 在ZK_HOME的conf目錄的zoo.cfg的最後添加如下配置:
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的結果如下所示
# 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
5. 在ZK_HOME的zoo.cfg中有一個
dataDir=/tmp/zookeeper
此時需要在該指定目錄下創建myid文件,其中的文件內容為zoo.cfg最後部分的配置獲取.獲取規則:假設本機ip為192.168.100.10 那麽此時的myid文件中只有一行內容各位1
cd /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集群環境部署