由于kafka使用scanla语言开发的,运行在JVM上,因此安装kafka之前需要先安装JDK
(1)JDK安装配置
一些Linux的发行版默认已经安装了JDK,如OPENJDK,这里所用的Linux操作系统默认已经安装了OpenJDK,输入下面的命令查看JDK版本信息:
yum install jdk-8u201-linux-x64.rpm
Java -version
java version “1.8.0_201”
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
选择JAVA版本
[root@inter ~]# update-alternatives –config java
There is 1 program that provides ‘java’.
Selection Command
———————————————–
*+ 1 /usr/java/jdk1.8.0_201-amd64/jre/bin/java
Enter to keep the current selection[+], or type selection number:
(2)SSH安装配置
对kafka集群本身来讲,配置SSH免密钥登录并不是必须的步骤,但做为分布式系统,一般会由多台机器构成,为了便于操作管理,如通过SSH方式启动集群代理等,这里对SSH安装配置进行介绍:
1)在根目录下查看是否存在一个隐藏文件夹 .ssh,如果没有该文件夹,则在确保机器联网条件下执行以下命令安装ssh
yum install openssh
2)进入.ssh目录,生成密钥对,执行命令如下:
[root@inter ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
49:ac:35:c9:02:d7:0f:73:ef:fc:cd:8c:67:47:0c:23
The key’s randomart image is:
+–[ RSA 2048]—-+
| . .. |
| o o+.. |
| . B= . |
| = o. E o |
| . S o . + |
| o o|
| . * |
| o B|
| o.|
+—————–+
3)将id_rsa.pub文件内容追加到授权的key文件中,命令如下
cat /root/.ssh/id_rsa > /root/.ssh/authorized_keys
4)将第一台机器的authorized_keys文件复制到第二台机器上,并将第二台机器的公钥也追到到authorized_keys文件中,依次执行如下命令:
scp authorized_keys root@x.x.x.x:~/.ssh/ 复制第一台机器的授权文件到第二台机器
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 在第二台机器上执行此命令,将第二台机器的公钥追加到授权文件中
若集群还有更多机器,则以此类推完成授权文件合并,至此SSH配置完成,在已配置SSH的任何一台机器上均可免密登录到其他机器
(3)zooKeeper环境
zooKeeper是一个分布式应用程序协调服务框架,分布式应用程序可以基于zookeeper来实现同步服务.配置维护,命名服务等,zookeeper能提供基于类似于文件系统的目录节点树方式的数据存储,通过监控各节点数据状态的变化,达到基于数据的集群管理,zookeeper主要由表2-2所示的几个角色构成
角色
Leader:集群的领导者,负责投票和发起和决议及更新系统状态
follwer:跟随者,接收客户端的请求并返回结果给客户端,参与投票
observer:接收客户端的请求,将写的请求转发给Leader,不参与投票,observer目的是扩展系统,提高读的速度
kafka依赖zookeeper,通过zookeeper来对代理,消费者上下限管理,集群,分区元数据管理等,因此zookeeper也是kafka得以运行的基础环境之一
(1)解压安装
进入解压后的zookeeper目录,将zoo.sample.cfg重命名为zoo.cfg
关于zookeeper配置文件中几个基础配置项说明如下
配置项
|
默认是
|
说明
|
tickTime
|
2000ms
|
zooKeeper中的一个时间单元,zookeeper中所有时间都以这个时间单元为基准,进行整数倍配置,默认是2秒
|
initLimit
|
10
|
Follwer在启动过程中,会从Leader同步所有最新数据,确定自己能够对外服务的起始状态,当follwer在initLimit个tickTime还没有完成数据同步时,则Leader认为Follwer连接失败
|
syncLimit
|
5
|
Leader与Follwer之间通信请求和应答的时间长度,若Leader在syncLimit个tickTime还没有收到Follwer应答,则认为该leader已下线
|
dataDir
|
/tmp/zookeeper
|
存储快照文件的目录,默认情况下,事务日志也会存储在该目录上,由于事务日志的写性能直接影响zookeeper性能,因为建议同时配置参数dataLogDir
|
dataLogDir
|
/tmp/zookeeper
|
事务日志输出目录
|
clientPort
|
2181
|
zooKeeper对外端口
|
(2)集群配置
首先在机器的/etc/hosts文件中加入3台机器IP与机器域名映射:
10.128.20.122 kafka-1
然后进入zookeeper的安装路径目录,编辑conf/zoo.cfg文件,在该文件中添加一下配置
server.1=kafka-1:2888:3888
server.n=n-server-domain:port1:port2
n-server-domain表示第n台zookeeper服务器的IP所映射的域名,当然这里也可以是第n台机器的IP
port1表示该服务器与集群中的Leader交换信息的端口,默认是2888
port2表示选举时服务器相互通信的端口
接着在${dataDir}路径下创建一个myid文件,myid里存放的值就是服务器编号,即对应上述公式中的n,在这里第一台机器muid存放的值为1,zookeeper在启动时会读取myid文件中的值与zoo.cfg文件中的配置进行比较,以确定是哪台服务器
(3)验证
[root@inter bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper … STARTED
查看zookeeper服务器状态:
[root@inter bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /root/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: standalone