江湖浪人 发表于 2019-1-8 09:30:56

zookeeper 和 kafka 的安装使用

  前提都安装JDK 6版本以上
  java -version
  java version "1.7.0_79"
  

  

  测试环境集群结构(三台集群的hosts一定要互相解析 不然会很坑)
  

  server1: 192.168.100.10
  server1: 192.168.100.13
  server1: 192.168.100.20
  

  安装包:
  zookeeper-3.4.9.tar.gz
  kafka_2.11-0.10.1.0.tgz
  

  背景:
  为了获得可靠的 ZooKeeper 服务,用户应该在一个集群上部署 ZooKeeper 。只要集群上大多数的 ZooKeeper 服务启动了,那么总的 ZooKeeper 服务将是可用的。另外,最好使用奇数台机器。 如果 zookeeper 拥有 5 台机器,那么它就能处理 2 台机器的故障了。
  

  

  

  ### zookeeper的集群安装##################
  

  1、安装包下载到/usr/local/src
  2、解压至安装路径/usr/localcd
  cd /usr/local/src/
  tar -xvf zookeeper-3.4.9.tar.gz   -C /usr/local/
  cd /usr/local
  ln -s zookeeper-3.4.9/ zookeeper
  

  

  3、修改配置文件
  cdcd /usr/local/zookeeper/conf/
  cp zoo_sample.cfg zoo.cfg
  

  配置文件(每台zookeeper的配置文件都一样)
  # cat zoo.cfg
  # The number of milliseconds of each tick
  tickTime=2000
  # The number of ticks that the initial
  # synchronization phase can take
  initLimit=10
  # The number of ticks that can pass between
  # sending a request and getting an acknowledgement
  syncLimit=5
  # the directory where the snapshot is stored.
  # do not use /tmp for storage, /tmp here is just
  # example sakes.
  dataDir=/usr/local/zookeeper/data
  # the port at which the clients will connect
  clientPort=2181
  # the maximum number of client connections.
  # increase this if you need to handle more clients
  #maxClientCnxns=60
  #
  # 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
  

  #第一个端口( port )是从( follower )机器连接到主( leader )机器的端口
  #第二个端口是用来进行 leader 选举的端口
  server.1=192.168.100.10:2888:3888
  server.2=192.168.100.13:2888:3888
  server.3=192.168.100.20:2888:3888
  

  

  

  

  ### 注释:
  在这个文件中,我们需要指定 dataDir 的值,它指向了一个目录,这个目录在开始的时候需要为空。下面是每个参数的含义:
  tickTime :基本事件单元,以毫秒为单位。它用来指示心跳,最小的 session 过期时间为两倍的 tickTime. 。
  dataDir :存储内存中数据库快照的位置,如果不设置参数,更新事务日志将被存储到默认位置。
  clientPort :监听客户端连接的端口
  #server.A=B:C:D其中A是一个数字,代表这是第几号服务器;B是服务器的IP地址;C表示服务器与群集中的“领导者”交换信息的端口;当领导者失效后,D表示用来执行选举时服务器相互通信的端口。
  

  

  

  

  4、创建数据目录和创建myid文件
  mkdir /usr/local/zookeeper/data
  echo "1" > /usr/local/zookeeper/data/myid
  

  

  

  

  

  ### 配置其他节点
  myid要不一样
  

  

  5、启动集群
  按照上述进行配置即可。
  第五步:启动ZooKeeper集群
  在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本,如下所示:
  cd /usr/local/zookeeper/
  bin/zkServer.sh start
  bin/zkServer.sh start
  bin/zkServer.sh start
  

  

  查看日志:(日志生成在执行启动的目录下)
  tail -f zookeeper.out
  

  

  查看监听的端口:(Leader端 才监听2888 端口,follower是不监听的,只监听3888端口)
  # netstat -tulnp |grep 88
  tcp      0      0 ::ffff:192.168.100.13:3888:::*                        LISTEN      18526/java
  tcp      0      0 ::ffff:192.168.100.13:2888:::*                        LISTEN      18526/java
  # netstat -tulnp |grep 2181
  tcp      0      0 :::2181                     :::*                        LISTEN      18526/java
  #
  

  

  

  6 验证
  

  ./bin/zkServer.shstatus
  

  

  注释: 因为启动顺序是从第一台开始的 所以看日志第一台会有日志因为第二台第三台还未启动,一会就正常了忽略
  

  

  看到各个角色(leader选举出来表示集群正常) 通过上面状态查询结果可见,第二台是集群的Leader,其余的两个结点是Follower。
  # ./bin/zkServer.shstatus
  ZooKeeper JMX enabled by default
  Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
  Mode: leader
  

  

  7、测试客户端命令连接
  ./bin/zkCli.sh -server 192.168.100.10:2181
  

  连接上去之后:
  执行命令
   ls /
  
  

  

  

  注: 当前根路径为/zookeeper。
  

  

  

  

  

  

  

  ################# 安装kafka
  下载包
  # ll kafka_2.11-0.10.1.0.tgz
  -rw-r--r-- 1 root root 34373824 Oct 202016 kafka_2.11-0.10.1.0.tgz
  

  1、解压至安装目录
  tar -xvf kafka_2.11-0.10.1.0.tgz -C /usr/local/
  cd /usr/local/
  ln -s kafka_2.11-0.10.1.0/ kafka
  

  

  

  

  2、修改配置文件
  cd /usr/local/kafka/config
  vim server.properties
  

  需要修改的项目:
  # The id of the broker. This must be set to a unique integer for each broker
  broker.id=1
  

  

  

  

  # A comma seperated list of directories under which to store log files
  log.dirs=/usr/local/kafka/logs
  

  # Zookeeper connection string (see zookeeper docs for details).
  # This is a comma separated host:port pairs, each corresponding to a zk
  zookeeper.connect=192.168.100.10:2181,192.168.100.13:2181,192.168.100.20:2181
  

  

  注意:每台kafka的broer.id 是不一样的
  3、创建日志目录
mkdir /usr/local/kafka/logs  

  

  

  

  4、### 配置其他节点
  

  

  5、启动
  从后台启动Kafka集群(3台都需要启动)
cd /usr/local/kafka/bin/
./kafka-server-start.sh -daemon../config/server.properties  

  # jps
  7449 Jps
  7427 Kafka             #kafka进程
  31341 QuorumPeerMain   #zk进程
  

  

  如果(3个kafka进程都在表示正常,配置文件错误是服务起不了)
  

  查看启动日志:
  tail -f/usr/local/kafka/logs/server.log
  

  

  6、测试kafka集群
  

  1-进入kafka根目录,创建topic   test
./bin/kafka-topics.sh --create --zookeeper 192.168.100.10:2181,192.168.100.13:2181,192.168.100.20:2181 --replication-factor 1 --partitions 1 --topic test  结果:
  Created topic "test".
  

  

  2-列出已创建的topic列表
./bin/kafka-topics.sh --list --zookeeper 192.168.100.10:2181,192.168.100.13:2181,192.168.100.20:2181  结果:
  test
  

  或者使用zookeeper命令去查看
./bin/zkCli.sh -server 192.168.100.10:2181   ls /brokers/topics
  
  

  

  

  3-模拟客户端去发送消息
  

  ./bin/kafka-console-producer.sh --broker-list 192.168.100.10:9092,192.168.100.13:9092,192.168.100.20:9092 --topic test
  

  4-模拟客户端去接受消息(虽然看到的是消费 但是因为消费么有删除每次 执行之前的模拟信息还会看到)
  ./bin/kafka-console-consumer.sh --zookeeper 192.168.100.10:2181,192.168.100.13:2181,192.168.100.20:2181 --from-beginning --topic test
  

  

  

  

  5、停止 在启动(重启)
  

  集群依次kafka都需要停止
./bin/kafka-server-stop.sh  

  集群依次kafka都需要启动
cd /usr/local/kafka/bin/
./kafka-server-start.sh -daemon../config/server.properties  

  

  

  6、 删除测试的test 的那个topic
./bin/kafka-topics.sh --delete --zookeeper 192.168.100.10:2181,192.168.100.13:2181,192.168.100.20:2181 --topic test  

  结果
  Topic test is marked for deletion.
  Note: This will have no impact if delete.topic.enable is not set to true.
  

  因为:
  如果kafaka启动时加载的配置文件中server.properties没有配置(默认没有配置 默认值为false)delete.topic.enable=true,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion
  

  

  彻底删除进入zk
./bin/zkCli.sh -server 192.168.100.10:2181  rmr /brokers/topics/test
  




页: [1]
查看完整版本: zookeeper 和 kafka 的安装使用