服务器准备
我这边准备了3台服务器,分别是172.26.130.15、172.26.130.16、172.26.130.17,都是装的centos7的系统,防火墙都关闭了。
配置zookeeper
下载zookeeper
https://zookeeper.apache.org/releases.html
下载你需要的版本,我下载的是 apache-zookeeper-3.5.8-bin.tar.gz (注意,他有个Source Release ,不要下这个版本。你需要下载带bin结尾的版本)
将apache-zookeeper-3.5.8-bin.tar.gz放到三台机器的opt目录下面,解压出来, 然后重命名 apache-zookeeper-3.5.8-bin 为 zookeeper。
cd /opt
tar zxvf apache-zookeeper-3.5.8-bin.tar.gz
mv apache-zookeeper-3.5.8-bin zookeeper
编辑zookeeper配置
zookeeper 会附带一个模板的配置文件,复制出来。
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
这里主要配置一下 dataDir(zk数据目录)、服务器节点。
dataDir=/opt/zookeeper-data
server.1=172.26.130.15:2888:3888
server.2=172.26.130.16:2888:3888
server.3=172.26.130.17:2888:3888
编辑这个zoo.cfg ,三台机器都要编辑,主要这三行配置,更新或者新增下。这里你可能发现,我们有配置一个zk的数据目录,目前应该是没有的,我们新增下(三台机器都要新增)。
mkdir /opt/zookeeper-data
zk需要在数据目录里面建一个叫myid的文件,来标识自己的ID。三台服务器不一样,所以分别创建。
vi /opt/zookeeper-data/myid
#第一台机器里面放1
1
#第一台机器里面放2
2
#第一台机器里面放3
3
这个id就是我们zk配置文件最下面那个集群服务器列表的server.1 这个后面的数字。
启动zookeeper
以上步骤,zk基本上算是配置完成了。我们只需要在zookeeper目录下面运行 bin/zkServer.sh start
命令就可以启动zk了。
bin/zkServer.sh stop
命令可以停止zk。你可以在 zk根目录下面log目录里面看到日志信息。
配置Systemd Unit File来控制zk的启动停止及开机启动
编辑文件 /etc/systemd/system/zk.service
,输入配置文件。
vi /etc/systemd/system/zk.service
输入下面配置文件
[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target
[Service]
Type=forking
WorkingDirectory=/opt/zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure
[Install]
WantedBy=default.target
大功告成,你现在可以使用systemctl
命令来控制zk的启动停止了。
systemctl start zk
systemctl enable zk
systemctl status zk
systemctl stop zk
配置kafka
下载kafka
下载地址: https://kafka.apache.org/downloads ,你需要下载 Binary downloads。我下载的版本是 kafka_2.12-2.5.0
将 kafka_2.12-2.5.0.tgz 依次放到3台服务器上,然后解压出来,重命名文件夹。
tar zxvf kafka_2.12-2.5.0.tgz
mv kafka_2.12-2.5.0 kafka
修改kafka配置
kafka的配置文件是 config目录下面的server.properties。
我们这里主要配置kafka的几个配置:
- broker.id
- advertised.listeners
- log.dirs
- offsets.topic.replication.factor
- transaction.state.log.replication.factor
- zookeeper.connect
分别是broker的id,我们规划三台机器,三个broker,所以他们的id分别为0 、1、2。
advertised.listeners 这个是kafka丢给别的节点访问自己的地址,如果你不配置,kafka可能会用你的主机名来让别的几点访问,如果主机名没做dns的话,可能会有点麻烦了,我们为每个节点配置固定的访问地址吧。
log.dirs 这个是存储kafka的数据的目录,我们修改为/opt/kafka-logs
,这个目录不存在,我们等下要去创建。
再有个是kafka现在是topic来管理消费的offset信息,官方建议这个topic的副本数量应该至少为3个,我们这里把他改为3。
zookeeper.connect
这个比较重要,是配置我们zk服务器的列表,我们前面已经搭建了三台zk的集群,我们这里把他们配置进去。别的参数,如果你有需要的,可以自己去查询官方配置文档,来对应调优。
汇总下修改的配置大概为:
broker.id=0 #第二台机器为1 ,第三台机器为2
advertised.listeners=PLAINTEXT://172.26.130.15:9092 #其他节点,按照自己的ip配置
log.dirs=/opt/kafka-logs
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
zookeeper.connect=172.26.130.15:2181,172.26.130.16:2181,172.26.130.17:2181
不要忘记我们为每个节点配置好kafka的数据目录。
mkdir /opt/kafka-logs
到这里,我们的简单kafka配置已经完成了,可以尝试启动kafka。
启动kafka
在每个节点执行kafka启动指令。
bin/kafka-server-start.sh config/server.properties
配置Systemd Unit File来控制kafka的启动停止及开机启动
编辑配置文件 /etc/systemd/system/kafka.service
vi /etc/systemd/system/kafka.service
[Unit]
Description=Apache Kafka server (broker)
Documentation=http://kafka.apache.org/documentation.html
Requires=network.target remote-fs.target
After=network.target remote-fs.target kafka-zookeeper.service
[Service]
Type=simple
WorkingDirectory=/opt/kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
TimeoutSec=30
Restart=on-failure
[Install]
WantedBy=multi-user.target
ok了,你现在可以使用systemctl
命令来控制kafka的启动停止了。
systemctl daemon-reload
systemctl start kafka
systemctl enable kafka
systemctl status kafka
结束。
资源:
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.6.0/kafka_2.12-2.6.0.tgz