zookeeper 集群搭建以及kafka集群配置(基于zk)

zookper 运行机制(以 Hadoop HA 为例):
1),zookeeper 使用目录树维护集群信息, 首先在目录树上创建成功节点的namenode为active
2),zeekeeper 主节点为每个从节点准备一个 message quene,通过 message quene 来实现事件的触发
3), Hadoop HA 是由 ZKFC 进程与 zookeeper 进行通信的
4), 当 namenode 挂掉, 首先 ZKFC 通知 zookeeper , 并删除节点
5), 以上步骤是以事件为单位的, 每一个事件都有相应函数
6), zookeeper 与 ZKFC 会有心跳机制, 长时间不相应默认为 ZKFC 失效
7), 事件发生时的注册函数 需要代码实现
zeekeeper server leader 选举原则:
1,server leader 重新选举依赖于 serverid 服务器编号,编号最大的选举为 server leader
2,如果 zeekeeper 集群一台台启动, 第三台为 leader(保证尽快可用), 同时启动是 serverid 最大的为 leader
3, zxid(版本号,代表的是事务(更新)id),版本最新(更新数据是最新的数据那么就是最新版本)的为 leader ,有限高于 serverid
server 状态:
1,LOOKING: 当前 Server不知道 leader,正在搜寻
2,LEANDING: 当前服务器为 leader
3,FOLLOWING: leader 已经选举,当前 Server 与之同步
zeekeeper 分工:
1,leader 负责投片的发起与决议,更新系统状态
2,leader:
1),follower(跟随者) 接收客户端连接,将读写请求转发给leader,参与投票
2),observer 接收客户端连接,将读写请求转发给leader,不参与投票,只同步leader状态,observer是为了扩展系统提高读取速度

zookeeper 安装:版本选择 cdh 版本(带有源码)
zookeeper进行配置(我是将zoo-sample.cfg改为zoo.cfg),
  1,我是三台机器(server1,server2,server3):
    # The number of milliseconds of each tick
    # 服务器之间心跳握手时间,每隔2000ms就会一次握手
    tickTime=2000
    # The number of ticks that the initial 
    # synchronization phase can take
    # 在服务端进行配置,最长能够忍受心跳间隔(tickTime)个数
    # 超过配置,那么就认为这个客户端连接失败, 2000(ms)*10=20s
    initLimit=10
    # The number of ticks that can pass between 
    # sending a request and getting an acknowledgement
    #Leader 与Follower之间发送消息时间长度为 2000(ms)*5=10s
    syncLimit=5
    # the directory where the snapshot is stored.
    # do not use /tmp for storage, /tmp here is just 
    # example sakes.
    # zeekep数据存储目录
    dataDir=/opt/modules/zookeeper-3.4.5-cdh5.4.10/tmp/zookeeper
    # the port at which the clients will connect
    clientPort=2181
    #
    # 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
    # 关于选举:如果Leader死掉,其他的Follower会选出一个作为 Leader(自动)
    # 服务器与客户端通信端口号:选举时通信端口
    server.1=server1:2888:3888
    server.2=server2:2888:3888
    server.3=server3:2888:3888
  2,在指定的dataDir目录执行创建myid文件,写上对应的名称,按照配置文件, server1写入 1,server2写入2,server3写入3 

3,启动zookeeper
1),关于 zookeeper 启动,原则是允许一台损坏,如果你的集群是三台机器,那么只启动一台zkCli.sh是启动不了的,它认为你损坏了两台
       ./zkServer.sh start
       # 开启客户端
       ./zkCli.sh
        # 查看 状态
       ./zkServer.sh status
       # 停止 服务
       ./zkServer.sh stop
zeekep 常见操作:
    # 查看主目录
    ls /
    # 创建目录 server(主目录下) 定义值为:HE
    create /server HE
    #根据目录得到值
    get /server
    #删除 目录 /server
    delete /server
    #更改 /server 的值
    set /server HEP

kafka 集群配置:
1,选择版本是 kafka_2.11-0.8.2.1.tar
2,kafka 企业都是进行二次开发的, zookeeper记录 kafka节点的操作(分发与接收信息)logs
conf/server.properties 配置(具体节点需要具体修改)
# 唯一标识(每个节点不一)
broker.id=0
# 配置 hostname
host.name=server1
# 配置 log 目录
log.dirs=/opt/modules/kafka_2.11-0.8.2.1/kafka-logs
# 节点信息,连接 zookeeper 
zookeeper.connect=server1:2181,server2:2181,server3:2181
conf/producer.properties 配置
# 指定节点列表
metadata.broker.list=server1:9092,server2:9092,server3:9092
kafka的启动
# 使用 screen 后台运行, 使用ctrl a + d 退出
screen -S kafka
bin/kafka-server-start.sh config/server.properties

 

posted @ 2019-05-11 15:42  十七楼的羊  阅读(517)  评论(0编辑  收藏  举报