一、安裝
查看linux 32/64
uname -a
//輸出
Linux izuf6dvndr65ahvkhs6davz 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
java環境:http://www.cnblogs.com/tq03/p/4980110.html
//從yum 安裝
yum list | grep jdk
yum install java-1.8.0-openjdk.x86_64
rpm -qa | grep jdk
//輸出yum安裝的jdk
java-1.8.0-openjdk-headless-1.8.0.141-1.b16.el7_3.x86_64
copy-jdk-configs-1.2-1.el7.noarch
java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64
rpm -ql java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64
//查看安裝后的路徑
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/
//設置環境變量
export JAVA_HOME="/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64"
export PATH=$JAVA_HOME/bin:$PATH
java -version
openjdk version "1.8.0_141"
OpenJDK Runtime Environment (build 1.8.0_141-b16)
OpenJDK 64-Bit Server VM (build 25.141-b16, mixed mode)
下載安裝zookeeper
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
tar -zxvf /opt/download/zookeeper-3.4.9.tar.gz
//zookeeper-3.4.9.tar.gz/conf
cp zoo_sample.cfg zoo.cfg
export ZOOKEEPER_INSTALL=/opt/work/zookeeper-3.4.9
export PATH=$PATH:$ZOOKEEPER_INSTALL/bin
[root@izuf6dvndr65ahvkhs6davz bin]# ./zkServer.sh start
[root@izuf6dvndr65ahvkhs6davz bin]# ./zkCli.sh -server 127.0.0.1:2181
//輸出
Connecting to 127.0.0.1:2181
2017-09-03 16:41:47,244 [myid:] - INFO [main:Environment@100] - Client environment:zookeeper.version=3.4.9-1757313, built on 08/23/2016 06:50 GMT
2017-09-03 16:41:47,247 [myid:] - INFO [main:Environment@100] - Client environment:host.name=izuf6dvndr65ahvkhs6davz
2017-09-03 16:41:47,247 [myid:] - INFO [main:Environment@100] - Client environment:java.version=1.8.0_141
2017-09-03 16:41:47,249 [myid:] - INFO [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2017-09-03 16:41:47,249 [myid:] - INFO [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-1.b16.el7_3.x86_64/jre
2017-09-03 16:41:47,249 [myid:] - INFO [main:Environment@100] - Client environment:java.class.path=/opt/work/zookeeper-3.4.9/bin/../build/classes:/opt/work/zookeeper-3.4.9/bin/../build/lib/*.jar:/opt/work/zookeeper-3.4.9/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/work/zookeeper-3.4.9/bin/../lib/slf4j-api-1.6.1.jar:/opt/work/zookeeper-3.4.9/bin/../lib/netty-3.10.5.Final.jar:/opt/work/zookeeper-3.4.9/bin/../lib/log4j-1.2.16.jar:/opt/work/zookeeper-3.4.9/bin/../lib/jline-0.9.94.jar:/opt/work/zookeeper-3.4.9/bin/../zookeeper-3.4.9.jar:/opt/work/zookeeper-3.4.9/bin/../src/java/lib/*.jar:/opt/work/zookeeper-3.4.9/bin/../conf:
2017-09-03 16:41:47,249 [myid:] - INFO [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2017-09-03 16:41:47,249 [myid:] - INFO [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2017-09-03 16:41:47,249 [myid:] - INFO [main:Environment@100] - Client environment:java.compiler=<NA>
2017-09-03 16:41:47,249 [myid:] - INFO [main:Environment@100] - Client environment:os.name=Linux
2017-09-03 16:41:47,249 [myid:] - INFO [main:Environment@100] - Client environment:os.arch=amd64
2017-09-03 16:41:47,250 [myid:] - INFO [main:Environment@100] - Client environment:os.version=3.10.0-514.26.2.el7.x86_64
2017-09-03 16:41:47,250 [myid:] - INFO [main:Environment@100] - Client environment:user.name=root
2017-09-03 16:41:47,250 [myid:] - INFO [main:Environment@100] - Client environment:user.home=/root
2017-09-03 16:41:47,250 [myid:] - INFO [main:Environment@100] - Client environment:user.dir=/opt/work/zookeeper-3.4.9/bin
2017-09-03 16:41:47,251 [myid:] - INFO [main:ZooKeeper@438] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@3eb07fd3
2017-09-03 16:41:47,276 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
Welcome to ZooKeeper!
JLine support is enabled
2017-09-03 16:41:47,364 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@876] - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session
2017-09-03 16:41:47,426 [myid:] - INFO [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x15e46e710900000, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: 127.0.0.1:2181(CONNECTED) 0]
zoo.cfg
vi 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.
dataDir=/usr/zookeeper
dataLogDir=/usr/zookeeper/log
# the port at which the clients will connect
clientPort=2181
#server.1=192.168.32.129:2888:3888
tickTime:心跳時間,為了確保連接存在的,以毫秒為單位,最小超時時間為兩個心跳時間
initLimit:多少個心跳時間內,允許其他server連接并初始化數據,如果ZooKeeper管理的數據較大,則應相應增大這個值
clientPort:服務的監聽端口
dataDir:用于存放內存數據庫快照的文件夾,同時用于集群的myid文件也存在這個文件夾里(注意:一個配置文件只能包含一個dataDir字樣,即使它被注釋掉了。)
dataLogDir:用于單獨設置transaction log的目錄,transaction log分離可以避免和普通log還有快照的競爭
syncLimit:多少個tickTime內,允許follower同步,如果follower落后太多,則會被丟棄。
server.id=host:port1:port2
host是一個數字,表示這個是第幾號服務器,host是這個服務器的ip地址
port1第一個端口用來集群成員的信息交換,表示的是這個服務器與集群中的Leader服務器交換信息的端口
port2是在leader掛掉時專門用來進行選舉leader所用
集群部署:
需要在zoo.cfg 添加集群的節點配置,如
server.1=192.168.32.131:2888:3888
server.2=192.168.32.132:2888:3888
server.3=192.168.32.133:2888:3888
在dataDir所指定的目錄下創建一個文件名為zookeeper_server.pid的文件,文件中的內容只有一行,為本主機對應的id值,如192.168.32.131機器里配置1。