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节点上