环境
4台主机,操作系统centos7.9,kafka 版本 kafka_2.11-2.4.1,jdk 11版本
IP | servername |
192.168.10.143 | server1 |
192.168.10.144 | server2 |
192.168.10.145 | server3 |
192.168.10.146 | server4 |
安装
设置主机名称
设置主机名为了后续访问方便,需要在4台机器上都需要操作
[root@localhost ~]# cat <<EOF >>/etc/hosts
192.168.10.143 server1
192.168.10.144 server2
192.168.10.145 server3
192.168.10.146 server4
EOF
下载zookeeper,kafka需要使用zookeeper进行管理,如果没有wget使用yum进行安装。
cd /opt
wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
tar zxf apache-zookeeper-3.6.2-bin.tar.gz
#下载的文件不要删除,其他几天机器还需要使用。解压以后就有了的目录了
zookeep的日志文件,要指定,一般我们放在/usr/lib/zookepper下面,三台机器都需要创建这样的目录 mkdir -p /usr/lib/zookeeper
分别在3台机器机器上设置myid文件,第一台机器myid的内容为1,第二台机器的myid内容为2,第三台为3.此文件是作为zookeeper的server id存在。
继续在3台机器上的zookeeper的conf目录下修改文件,2888是内部通讯用,3888是外部通信用。
mkdir -p /usr/lib/zookeeper
echo "1" >/usr/lib/zookeeper/myid
root@localhost conf]# cat <<EOF >zoo.cfg
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=server1:2888:3888
server.2=server2:2888:3888
server.3=server3:2888:3888
EOF
确认文件和目录设置以后启动zookeeper并测试。可以发现启动成功。
[root@localhost bin]#cd /opt/apache-zookeeper-3.6.2/bin
[root@localhost bin]# ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@localhost conf]# ../bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
安装scala
scala是kafka的编写语言,需要安装scala环境kafka才能运行。注意kafka需要安装的版本,kafka专门对scala 2.11,2.12,2.13版本有编译好的kafka对应版本,目前我们使用scala 2.11
wget wget https://downloads.lightbend.com/scala/2.11.8/scala-2.11.8.tgz
tar zxf scala-2.11.8.tgz
在三台机器上设置scala home目录并将它的bin目录放到搜索路径,方便将来启动kafka
[root@localhost conf]# cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
SCALA_HOME=/opt/scala-2.11.8 #增加
PATH=$PATH:$HOME/bin:${SCALA_HOME}/bin #增加
export PATH
[root@localhost conf]#
scala是在jdk上运行的,我们需要安装jdk,我们选取openjdk11 安装的系统。
yum install -y java-11-openjdk.x86_64
安装scala
接下来要配置kafka,默认将kafka conf目录下的sanle
cd /opt/kafka_2.11-2.4.1/config
[root@localhost config]# sed -e '/^#/d' -e '/^$/d' server.properties
broker.id=2 #每台服务器都不一样,我们设置为1,3,2
advertised.listeners=PLAINTEXT://server2:9092 #修改成当前机器的主机名称
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/var/lib/kafka 创建kafka的log目录
num.partitions=40 # 修改成40
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=server1:2181,server2:2181,server3:2181 #根据实际的主机名修改,2181端口不要修改。
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
[root@localhost config]#
每台机器上按照这个设置进行修改,后面有#号的是说明。
确保修改无误,在3台机器上启动kafka,并测试。topic test created,创建成功。
cd /opt/kafka_2.11-2.4.1/bin/
./kafka-server-start.sh ../config/server.properties
./kafka-topics.sh --create --zookeeper server1:2181,server2:2181,server3:2181 --replication-factor 1 --partitions 1 --topic test
至此集群部署结束。