蚂蚁课堂-2-kafka集群环境搭建

  1. 每天服务器都要安装jdk1.8环境
  2. 安装Zookeeper集群环境
  3. 安装kafka集群环境
  4. 运行测试
image.png
image.png

服务器环境准备

  • 使用vmare虚拟三台服务器 centos6.5
       A: 192.168.9.200
       B: 192.168.9.201
       C: 192.168.9.202
    

安装jdk1.8环境

  • jdk-8u60-linux-x64.tar.gz,网盘下载地址:https://pan.baidu.com/s/1TW_Q0RyXPnLyAYLozf-5yg
    提取码:p1sb
  • 安装参考文章

zookeeper集群搭建

  • 参考文章

  • Zookeeper集群最好是奇数个节点,根据选举机制,半数以上的票数才能当选为leader(假如有两个节点,你选我,我选你,根据半数以上票数规则,是无法确定集群中到底是你来当leader还是我来当.

  • 下载地址:zookeeper-3.4.10.tar.gz

      tar zxvf zookeeper-3.4.10.tar.gz
      mv zookeeper-3.4.10.tar.gz zookeeper
      cd zookeeper/conf
      mv zoo_sample.cfg zoo.cfg
    
  • 修改zoo.cfg两处 vim zoo.cfg

      //数据目录,注意:在/usr/local/zookeeper/data 
      dataDir=/usr/local/zookeeper/data
      //日志目录,没有则自行创建
      dataLogDir=/usr/local/zookeeper/logs
      # zookeeper服务默认端口
      clientPort=2181                                                                                                                                       
      # zookeeper最近的版本中有个内嵌的管理控制台是通过jetty启动,该服务默认端口是8080,这里可以自行配置
     admin.serverPort=2182
    
      //在文件末尾追加如下内容:(集群节点列表)
      server.0=192.168.9.200:2888:3888
      server.1=192.168.9.201:2888:3888
      server.2=192.168.9.202:2888:3888
    
    

    端口2888:Zookeeper服务之间的通信端口,比如leader和follower之间的通信
    端口3888:Zookeeper选举leader用的端口

  • 创建data和日志目录并创建myid

      cd /usr/local/zookeeper/
      mkdir data
      mkdir logs
      cd data
      vim myid 
      //将节点0标识写入myid文件中
      echo  0 > myid
    
  • 由于Zookeeper集群中的每一个Zk服务都会有一个唯一标识自己的ID(zk进程ID),这个ID应用在myid和zoo.cfg两个文件中,其中myid文件中存放的是当前Zk服务的标识ID,而zoo.cfg中以server.ID来指定当前的Zk服务进程对应的是哪一台主机,当Zk服务启动的时候,会首先读取myid中的id标识,拿着这个id再去zoo.cfg文件中进行匹配查找,查找的目的是为了弄清楚当前Zk服务在整个ZooKeeper集群中的位置.

  • 修改环境变量
    vim /etc/profile

      ### zookeeper
      export ZOOKEEPER_HOME=/usr/local/zookeeper
      export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH
    

    source /etc/profile

  • 修改防火墙启动端口, vim /etc/sysconfig/iptables

      -A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
      # 客户端连接zookeeper服务端的默认端口为218
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
      # kafka的默认端口
      -A INPUT -m state --state NEW -m tcp -p tcp --dport 9092 -j ACCEPT
    

    重启防火墙 /etc/init.d/iptables restart

  • 分别在B、C两台主机上的ZK安装目录下的data目录下创建myid文件,并依次写入值:1,2.

  • 分别启动三台zookeeper服务。

      //启动
      zkServer.sh start
      //查看状态
      zkServer.sh  status
    

kafka 集群搭建

  • 参考文章

  • kafka_2.11-1.0.0.tgz,下载地址:http://kafka.apache.org/downloads

  • 解压缩后,移动目录并修改名称

     mv kafka_2.11-1.0.0 /usr/local/kafka
    
  • 修改配置文件 cd kafka/config, vim server.properties

    // kafka节点位移标识
    broker.id=0
    //日志文件目录(需自行创建)
    log.dirs=/usr/local/kafka/logs
    //kafka监听主机端口
    listeners=PLAINTEXT://192.168.9.200:9092
    //zookeeper集群配置
    zookeeper.connect=192.168.9.200:2181,192.168.9.201:2181,192.168.9.202:2181
    
  • 配置环境变量

      ### kafka
      export KAFKA_HOME=/usr/local/kafka
      export     PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin:$PATH
    

    source /etc/profile

克隆B和C节点

  • 通过在vmware中克隆A, 得到B和C节点,注意:克隆完毕后网卡的MAC和IP都是一样的,所以需要登陆到B和C, 分别修改MAC和IP, 通过ifconfig -a eth1获取到MAC,然后修改将其修改,IP修改分别修改为:B:192.168.9.201, C: 192.168.9.202;
  • 修改B机的zookeeperkafka集群信息;
      //zookeeper
      vim /usr/local/zookeeper/data/myid 内容修改为:  `1` 
      //kafka
      vim /usr/local/kafka/config/server.properties
         broker.id=1
         listeners=PLAINTEXT://192.168.9.201:9092
    
  • 修改C机的zookeeperkafka集群信息;
    //zookeeper
    vim /usr/local/zookeeper/data/myid 内容修改为:  `2` 
    //kafka
    vim /usr/local/kafka/config/server.properties
       broker.id=2
       listeners=PLAINTEXT://192.168.9.202:9092
    
  • 三台节点分别启动zookeeper
      //启动
      zkServer.sh start
      //查看状态,可知其中一个是leader, 两外两个是follwer
       zkServer.sh status
    
  • 三台节点分别启动kafka
     kafka-server-start.sh  -daemon /usr/local/kafka/config/server.properties
     //查看kafka是否启动成功
      ps aux | grep kafka 或 netstat -tunlp | grep 9092
    
kafka启动成功标识
  • 创建kafka的topic主题
      bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 -partitions 3 --topic  myTest
    
  • myTest主题分区3,会在kafka集群中三个节点的日志 kafka/logs/ 中看到
      //以下三个日志目录 myTest代表主题名,数字0/1/2分别代表三个节点标识
      //注意这三个节点标识于brokerId不一样,
      // 是kafka创建主题时特定的算法平均将三个分区物理文件放入到三个节点
      //日志目录中的 00000000000000000000.log 就是真实的消息内容
      `myTest-0` 
      `myTest-1` 
      `myTest-2` 
    

使用ZooInspector可视化工具查看kafka注册到Zookeeper信息

  • 参考文章
  • 启动方式步骤,(我的windows jar包路径:D:\lxf\Program Files\ZooInspertor\build)
        java -jar zookeeper-dev-ZooInspector.jar
    
  • 连接zookeeper, 注意将超时时间session Timeout 设置长一些;


    image.png
  • 查看kafka集群及分区信息


    image.png

你可能感兴趣的:(蚂蚁课堂-2-kafka集群环境搭建)