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分布式环境搭建完成=================
Kafka分布式环境搭建
猜你喜欢
转载自blog.csdn.net/ghostliming/article/details/79278001
今日推荐
周排行