ZooKeeper集群部署


Zookeeper的监听机制+文件系统(K,V结构)

Zookeeper 通过心跳检测NameNode的健康状况,一旦NameNode挂掉,会在slaves中选择另一个DataNode作为NameNode
NameNode的状态:active,standby
状态转换:NN挂掉自动转换状态,手动转换

Zookeeper特点:
Zookeeper:一个leader,多个follower
leader:负责进行投票的发起和决议,更新系统状态
follower:用于接收客户请求并向客户端返回结果,在选举leader过程中参与投票
集群只能是**奇数服务器,**只要有半数以上节点存活,Zookeeper就能正常提供服务
更新请求顺序进行,原子性更新数据
客户端连接的端口号2181


ZooKeeper集群部署

下载:https://archive.apache.org/dist/zookeeper/
1.解压zookeeper

cd /opt/module/
tar -xzvf zookeeper-3.4.10.tar.gz

2.在ZK家目录下创建datadir目录,myid文件

mkdir /opt/module/zookeeper-3.4.10/zkData
#bigdata执行
echo 1 > myid

#bigdata02执行
echo 2 > myid

#bigdata03执行
echo 3 > myid

3.修改zoo.cfg

cd /opt/module/zookeeper-3.4.10/conf
cp zoo_sample.cfg zoo.cfg

vi zoo.cfg

##########修改#################
dataDir=/opt/module/zookeeper-3.4.10/zkData

###########添加cluster##################
server.1=bigdata:2888:3888
server.2=bigdata02:2888:3888
server.3=bigdata03:2888:3888

4.添加环境变量(不是必须的)
vi /etc/profile

ZK_HOME=/opt/module/zookeeper-3.4.10
PATH=$PATH:$ZK_HOME/bin
export PATH

使环境变量立即生效

source /etc/profile

5.启动

cd /opt/module/zookeeper-3.4.10/bin
 ./zkServer.sh start

6.关联集群

./zkCli.sh -server bigdata:2181,bigdata02:2181,bigdata03:2181

7.zk使用

[root@bigdata bin]# ./zkCli.sh -server bigdata:2181,bigdata02:2181,bigdata03:2181  #关联zk节点
Connecting to bigdata:2181,bigdata02:2181,bigdata03:2181
2019-09-12 00:41:57,872 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.10-39d3a4f269333c922ed3db283be479f9deacaa0f, built on 03/23/2017 10:13 GMT
2019-09-12 00:41:57,876 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=bigdata
2019-09-12 00:41:57,876 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_221
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/opt/module/jdk1.8.0_221/jre
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/opt/module/zookeeper-3.4.10/bin/../build/classes:/opt/module/zookeeper-3.4.10/bin/../build/lib/*.jar:/opt/module/zookeeper-3.4.10/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/module/zookeeper-3.4.10/bin/../lib/slf4j-api-1.6.1.jar:/opt/module/zookeeper-3.4.10/bin/../lib/netty-3.10.5.Final.jar:/opt/module/zookeeper-3.4.10/bin/../lib/log4j-1.2.16.jar:/opt/module/zookeeper-3.4.10/bin/../lib/jline-0.9.94.jar:/opt/module/zookeeper-3.4.10/bin/../zookeeper-3.4.10.jar:/opt/module/zookeeper-3.4.10/bin/../src/java/lib/*.jar:/opt/module/zookeeper-3.4.10/bin/../conf:
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=3.10.0-957.el7.x86_64
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root
2019-09-12 00:41:57,878 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/opt/module/zookeeper-3.4.10/bin
2019-09-12 00:41:57,879 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=bigdata:2181,bigdata02:2181,bigdata03:2181 sessionTimeout=30000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@306a30c7
Welcome to ZooKeeper!
2019-09-12 00:41:58,122 [myid:] - INFO  [main-SendThread(bigdata:2181):ClientCnxn$SendThread@1032] - Opening socket connection to server bigdata/192.168.228.128:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2019-09-12 00:41:58,635 [myid:] - INFO  [main-SendThread(bigdata:2181):ClientCnxn$SendThread@876] - Socket connection established to bigdata/192.168.228.128:2181, initiating session
2019-09-12 00:41:58,971 [myid:] - INFO  [main-SendThread(bigdata:2181):ClientCnxn$SendThread@1299] - Session establishment complete on server bigdata/192.168.228.128:2181, sessionid = 0x16d23c6e7d90000, negotiated timeout = 30000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 0]  

[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 0] #表示已经进入zk命令模式

#查看帮助

[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 0] help 
ZooKeeper -server host:port cmd args
        stat path [watch]
        set path data [version]
        ls path [watch]
        delquota [-n|-b] path
        ls2 path [watch]
        setAcl path acl
        setquota -n|-b val path
        history 
        redo cmdno
        printwatches on|off
        delete path [version]
        sync path
        listquota path
        rmr path
        get path [watch]
        create [-s] [-e] path data acl
        addauth scheme auth
        quit 
        getAcl path
        close 
        connect host:port

#查看ls

[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 2] ls / 
[zookeeper]

#创建zk存储文件,内容为‘mydata’

[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 3] create /zk mydata  
Created /zk
[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 4] ls /     
[zk, zookeeper]

#查看/zk 存储内容

[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 5] get /zk
mydata
cZxid = 0x100000002
ctime = Thu Sep 12 00:46:45 EDT 2019
mZxid = 0x100000002
mtime = Thu Sep 12 00:46:45 EDT 2019
pZxid = 0x100000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0

#修改/zk存储内容为 ’ i love you’

[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 6] set /zk 'i love you ' 
cZxid = 0x100000002
ctime = Thu Sep 12 00:46:45 EDT 2019
mZxid = 0x100000003
mtime = Thu Sep 12 00:48:32 EDT 2019
pZxid = 0x100000002
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 11
numChildren = 0
[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 7] get /zk
i love you 
cZxid = 0x100000002
ctime = Thu Sep 12 00:46:45 EDT 2019
mZxid = 0x100000003
mtime = Thu Sep 12 00:48:32 EDT 2019
pZxid = 0x100000002
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 11
numChildren = 0
```
#删除/zk
```
[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 8] delete /zk   
[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 9] ls /
[zookeeper]
[zk: bigdata:2181,bigdata02:2181,bigdata03:2181(CONNECTED) 10] get /zookeeper 

cZxid = 0x0
ctime = Wed Dec 31 19:00:00 EST 1969
mZxid = 0x0
mtime = Wed Dec 31 19:00:00 EST 1969
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
```
8.四字母命令的使用

常用的由四个字母组成的命令,配合telnet或nc命令使用:
命令	描述
conf	zk服务配置的详细信息
stat	客户端与zk连接的简要信息
srvr	zk服务的详细信息
cons	客户端与zk连接的详细信息
mntr	zk服务目前的性能状况
wchs	watch的简要信息
wchc	watch的详细信息,客户端 -> watch的映射,线上环境要小心使用
wchp	watch的详细信息, znode -> 客户端的映射,线上环境要小心使用


--------------------nc举例-------------------------------------
[root@bigdata02 yum.repos.d]# echo conf|nc bigdata 2181
clientPort=2181
dataDir=/opt/module/zookeeper-3.4.10/zkData/version-2
dataLogDir=/opt/module/zookeeper-3.4.10/zkData/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=1
initLimit=10
syncLimit=5
electionAlg=3
electionPort=3888
quorumPort=2888
peerType=0

-------------------telnet举例-----------------------------------
[root@bigdata03 yum.repos.d]# telnet bigdata02 2181
Trying 192.168.228.129...
Connected to bigdata02.
Escape character is '^]'.
conf
clientPort=2181
dataDir=/opt/module/zookeeper-3.4.10/zkData/version-2
dataLogDir=/opt/module/zookeeper-3.4.10/zkData/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=2
initLimit=10
syncLimit=5
electionAlg=3
electionPort=3888
quorumPort=2888
peerType=0
Connection closed by foreign host.




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值