Kafka分布式环境搭建

Kafka是用Scala语言开发的,运行在JVM上,因此在安装Kafka之前需要先安装JDK。

	1. JDK安装配置

          1)Windows安装JDK
               目录名中不要有空格。
               设置JAVA_HOME以及CLASSPATH
                    示例:JAVA_HOME    c:\Java\jkd1.8
                              CLASSPATH     .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
               验证:java -version
          2)Linux安装JDK
               一般自带。
               Linux安装:
               (1)下载并安装   tar -xzvf jdk-8u161-linux-x64.tar.gz
               (2)配置环境变量:vi /etc/profile   添加以下内容:                         
                    export JAVA_HOME=/usr/jdk1.8.0_161
                    export JRE_HOME=/usr/jdk1.8.0_161/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
执行以下命令使更改生效:source /etc/profile
     (3)若系统安装了openjdk,用户可以选择删除,或者修改配置用最安装的版本,以下为用新安装的JDK替换系统自带的openjdk:
               将Java添加到bin:update-alternatives --install /usr/bin/java java /usr/jdk1.8.0_161/bin/java 300
               将javac添加到bin:update-alternatives --install /usr/bin/javac javac /usr/jdk1.8.0_161/bin/javac 300
               选择JDK版本:update-alternatives --config java
     (4)验证:java -version

	1. SSH安装配置

          对Kafka集群本身来讲,配置SSH免秘钥登陆并不是必须的步骤。

          1)配置/etc/hosts
               186.168.100.5 kafka0
               186.168.100.6 kafka1
               186.168.100.7 kafka2
          2)配置ssh
mkdir ~/.ssh
ssh-keygen -t rsa
cat id_rsa.pub >> authorized_keys
登陆kafka0:ssh-copy-id -i kafka0
登陆kafka0:ssh-copy-id -i kafka1
登陆kafka0:ssh-copy-id -i kafka2
登陆kafka1:ssh-copy-id -i kafka0
登陆kafka1:ssh-copy-id -i kafka1
登陆kafka1:ssh-copy-id -i kafka2
登陆kafka2:ssh-copy-id -i kafka0
登陆kafka2:ssh-copy-id -i kafka1
登陆kafka2:ssh-copy-id -i kafka2

ZooKeeper是一个分布式应用程序协调服务框架,分布式应用程序可以基于ZooKeeper来实现同步服务、配置维护、命名服务等。
ZooKeeper集群主要角色:

	1. leader,集群的领导者,负责投票的发起和决议及更新系统状态
	2. learner:follower  跟随者,接受客户端的请求并返回结果给客户端,参与投票

                         observer:接受客户端的请求,将写的请求转发给leader,不参与投票。observer的目的是扩展系统,提高读的速度。

Kafka依赖ZooKeeper,通过ZooKeeper来对代理、消费者上下线管理、集群、分区元数据管理等。


	1. ZooKeeper集群环境搭建:


将ZooKeeper安装到/opt/zookeeper下:

	1. ) 解压安装   mkdir /opt/zookeeper

          tar -xzvf /usr/zookeeper-3.4.11.tar.gz -C /opt/zokeeper/
          cd /opt/zookeeper/zookeeper-3.4.11/conf/
          cp zoo_sample.cfg zoo_sample.cfg.bak
          mv zoo_sample.cfg zoo.cfg
          mkdir /opt/zookeeper/data
          mkdir /opt/zookeeper/log
          修改ZooKeeper配置:
               dataDir=/opt/zookeeper/data
               dataLogDir=/opt/zookeeper/log

	1. )集群配置

          在/etc/hosts文件中加入IP与机器域名映射,域名自定义(三台机器)
          其中那一台,修改/opt/zookeeper/zookeeper-3.4.11/conf/zoo.cfg文件,添加一下配置:
          server.1=kafka0:2888:3888
          server.2=kafka1:2888:3888
          server.3=kafka2:2888:3888
          其中,2888为默认端口,表示该服务器与集群中的leader交换信息的端口。3888表示选举时服务器相互通信的端口
         
          在$dataDir路径下创建myid文件,存放服务器的编号。
          cd /opt/zookeeper/data/
          vi myid
          1
          其他分别为2,3
          将zoo.cfg发送到其他主机相应位置:
          scp /opt/zookeeper/zookeeper-3.4.11/conf/zoo.cfg kafka1:/opt/zookeeper/zookeeper-3.4.11/conf
          scp /opt/zookeeper/zookeeper-3.4.11/conf/zoo.cfg kafka2:/opt/zookeeper/zookeeper-3.4.11/conf
          
          配置/etc/profile
          vi /etc/profile
          export ZOOKEEPER_HOME=/opt/zookeeper/zookeeper-3.4.11
          export PATH=$PATH:$ZOOKEEPER_HOME/bin

          source /etc/profile


	1. )启动及验证服务

          zkServer.sh start    三台机器分别启动
          jps
2819 QuorumPeerMain
2844 Jps
          zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/zookeeper-3.4.11/bin/../conf/zoo.cfg
Mode: follower
     

	1. Kafka安装

          1) 解压安装
               mkdir /opt/kafka
               tar -xzvf /usr/kafka_2.11-1.0.0.tgz -C /opt/kafka/
               
               vi /etc/profile
                    export KAFKA_HOME=/opt/kafka/kafka_2.11-1.0.0
                    export PATH=$PATH:$ZOOKEEPER_HOME/bin:$KAFKA_HOME/bin
          2)修改配置
               vi $KAFKA_HOME/config/server.properties
                         broker.id=1       --保持与ZooKeeper的myid一致
                         log.dirs=/opt/kafka/kafka-logs     
                         zookeeper.connect=kafka0:2181,kafka1:2181,kafka2:2181
                         host.name=186.168.100.5         --每个机器分别修改
          3)验证
               启动kafka(三台机器):
               kafka-server-start.sh -daemon /opt/kafka/kafka_2.11-1.0.0/config/server.properties
                [root@kafka0 opt]# jps
3824 Kafka
3890 Jps
2931 QuorumPeerMain
               $KAFKA_HOME/logs中的server.log为Kafka启动日志。
               通过ZooKeeper客户端查看Kafka在ZooKeeper中的相应元数据:
               zkCli.sh -server kafka0:2181
WatchedEvent state:SyncConnected type:None path:null
ls /
[cluster, controller, controller_epoch, brokers, zookeeper, admin, isr_change_notification, consumers, log_dir_event_notification, latest_producer_id_block, config]
[zk: kafka0:2181(CONNECTED) 1]
[zk: kafka0:2181(CONNECTED) 1] ls /brokers/ids
[1, 2, 3]

===============Kafka分布式环境搭建完成=================

     


猜你喜欢

转载自blog.csdn.net/ghostliming/article/details/79278001