zk集群搭建
----------------------
1.myid文件
a.[${zk_home_data}/myid]
1 //1~255
b.[zoo.cfg]
tickTime=2000
dataDir=/disk1/zookeeper
dataLogDir=/disk2/zookeeper
clientPort=2181
initLimit=5 //初始化同步时间数
syncLimit=2 //发送消息到接收确认的时间差。
server.1=zookeeper1:2888:3888
server.2=zookeeper2:2888:3888
server.3=zookeeper3:2888:3888
2.流程
zk server启动时,读取${zk_data}/myid文件,以便确定是哪一个服务器,
之后在读取zoo.cfg配置文件,以便决定自己使用哪些端口和其他的zk服务器端口。
客户端连接时,需要使用地址的组合 ip1:2181,ip2:2181,ip3:2181,...
伪分布式zk集群
------------------------
1.创建三个配置文件(cp zoo.cg----> zoo1.cg---->zoo2.cg----->zoo3.cg三个文件然后配置一下内容)
a.[onf/zoo1.cfg]
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ubuntu/zk/data1
clientPort=2181
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
a.conf/zoo2.cfg
dataDir=/home/ubuntu/zk/data2
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ubuntu/zk/data1
clientPort=2182
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
a.conf/zoo3.cfg
dataDir=/home/ubuntu/zk/data3
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/ubuntu/zk/data1
clientPort=2183
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
(也就是在zk目录下创建data1、data2、data3目录,再往data目录里面追加:echo 1>>myid 三个文件都追加一遍),形式如下:
2.创建每个服务器myid文件
${zk_data}/zoo1/myid //1
${zk_data}/zoo2/myid //2
${zk_data}/zoo3/myid //3
3.分别启动zkServer.sh start zoo1.cfg
4.查看服务器的状态
$>zkServer.sh stauts
leader | follwer
---------------------------------------------------
配置hadoop的namenode的ha的自动failover
1、自动容灾需要引入两个组件
zk的Quorum
zk的ZKFC(zookeeper Failover controller)
2、组件
Failure detection:故障检测,每个nn都和zk连接,如果主机故障,session过期,通知其他的nn触发容灾机制
Active NameNode election:
活动nn推选,由zk推选一个nn,作为active节点
zkfc是zk的新组件,监控并管理nn的状态,每个nn节点都运行了zkfc进程
zkfc进程负责如下工作:
1、监控:周期性ping处理,如果遇到异常情况,健康监视器标志不监控状态
2、zookeeper session management:
session管理
3、Zookeeper-based election
3、Deploying Zookeeper
部署zk,有zk的进程是轻量级的,可以将zk配置到nn节点上