步骤一:修改服务器系统限制
vi /etc/security/limits.conf #增加如下内容
* soft nofile 655360
* hard nofile 655360
* soft nproc 65535
* hard nproc 65535
* soft stack unlimited
* hard stack unlimited
* soft core unlimited
修改20-nproc.conf、90-nproc.conf,centos6、centos7有差异,存在该文件则修改,不存在不用新增
vi /etc/security/limits.d/90-nproc.conf
* soft nproc 65535
root soft nproc unlimited
vi /etc/security/limits.d/20-nproc.conf
* soft nproc 65535
root soft nproc unlimited
vim /etc/pam.d/login #增加如下内容
session required /lib64/security/pam_limits.so
session required pam_limits.so
vi /etc/sysctl.conf #增加如下内容
vm.max_map_count=262144
使配置生效
sysctl -p
步骤二:关闭防火墙
systemctl stop firewalld ---关闭防火墙
systemctl disable firewalld ---取消开机自启
步骤三:更改selinux
vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
步骤四:重启服务器使之前配置生效
Reboot
步骤五:安装jdk集群三台都需要安装
将下载好的jdk安装包上传到服务器
rpm -ivh jdk-8u202-linux-x64.rpm
设置环境变量
Vim /etc/profile --在该文件底下添加下列内容
export JAVA_HOME=/usr/java/jdk1.8.0_202-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile --使设置的变量生效
步骤六:服务器之间做免密登录
ssh-keygen -t rsa ---在三台服务器上都执行
cat id_rsa.pub >> authorized_keys
先在第一台执行,然后拷贝到第二台,第二台重复上一步的操作然后拷贝到第三台,第三台重复上一步操作,然后拷贝到第一和第二台
步骤七:关闭 swap
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
步骤八:创建kafka目录
mkdir /usr/local/kafaka
将下载好的包解压到目录
tar -zxvf kafka_2.12-3.1.0.tgz -C /usr/local/kafaka/
步骤九:部署zookeeper
创建目录
mkdir -p /usr/local/zk
修改配置文件
cd /usr/local/kafaka/kafka_2.12-3.1.0/config
vim zookeeper.properties
#ZooKeeper 使用的基本时间单位(毫秒),心跳超时时间是 tickTime 的两倍
tickTime=2000
#Leader 和 Follower 初始连接时最多能容忍的最多心跳数(2000 * 10 = 20s)
initLimit=10
#Leader 和 Follower 节点之间请求和应答之间能容忍的最多心跳数(2000 * 5 = 10s)
syncLimit=5
#数据目录dd
dataDir=/usr/local/zk
#监听客户端连接的端口
clientPort=2181
#最大客户端连接数
maxClientCnxns=60
#集群信息(服务器编号,服务器地址,Leader-Follower 通信端口,选举端口)
server.1=192.168.200.224:2888:3888
server.2=192.168.200.225:2888:3888
server.3=192.168.200.226:2888:3888
#不启动 jetty 管理页面服务
admin.enableServer=false
#运行所有四字指令
4lw.commands.whitelist=*
分别为 3 台 Zookeeper 节点设置不同的节点 id。
#节点 1
echo "1" > /usr/local/zk/myid
#节点 2
echo "2" > /usr/local/zk/myid
#节点 3
echo "3" > /usr/local/zk/myid
进入安装目录(三个节点都执行)
cd /usr/local/kafaka/kafka_2.12-3.1.0
./bin/zookeeper-server-start.sh -daemon config/zookeeper.properties &
步骤十:修改kafaka配置文件
cp server.properties server.properties.bak --将默认的配置文件拷贝一份
vim server.properties
############################# Server Basics #############################
#broker 的 id,必须唯一
broker.id=0
############################# Socket Server Settings #############################
#监听地址
listeners=PLAINTEXT://192.168.1.6:9092
#Broker 用于处理网络请求的线程数
num.network.threads=6
#Broker 用于处理 I/O 的线程数,推荐值 8 * 磁盘数
num.io.threads=120
#在网络线程停止读取新请求之前,可以排队等待 I/O 线程处理的最大请求个数
queued.max.requests=1000
#socket 发送缓冲区大小
socket.send.buffer.bytes=102400
#socket 接收缓冲区大小
socket.receive.buffer.bytes=102400
#socket 接收请求的最大值(防止 OOM)
socket.request.max.bytes=104857600
############################# Log Basics #############################
#数据目录
log.dirs=/data1,/data2,/data3,/data4,/data5,/data6,/data7,/data8,/data9,/data10,/data11,/data12,/data13,/data14,/data15
#清理过期数据线程数
num.recovery.threads.per.data.dir=3
#单条消息最大 10 M
message.max.bytes=10485760
############################# Topic Settings #############################
#不允许自动创建 Topic
auto.create.topics.enable=false
#不允许 Unclean Leader 选举。
unclean.leader.election.enable=false
#不允许定期进行 Leader 选举。
auto.leader.rebalance.enable=false
#默认分区数
num.partitions=3
#默认分区副本数
default.replication.factor=3
#当生产者将 acks 设置为 "all"(或"-1")时,此配置指定必须确认写入的副本的最小数量,才能认为写入成功
min.insync.replicas=2
#允许删除主题
delete.topic.enable=true
############################# Log Flush Policy #############################
#建议由操作系统使用默认设置执行后台刷新
#日志落盘消息条数阈值
#log.flush.interval.messages=10000
#日志落盘时间间隔
#log.flush.interval.ms=1000
#检查是否达到flush条件间隔
#log.flush.scheduler.interval.ms=200
############################# Log Retention Policy #############################
#日志留存时间 7 天
log.retention.hours=168
#最多存储 58TB 数据
log.retention.bytes=63771674411008
#日志文件中每个 segment 的大小为 1G
log.segment.bytes=1073741824
#检查 segment 文件大小的周期 5 分钟
log.retention.check.interval.ms=300000
#开启日志压缩
log.cleaner.enable=true
#日志压缩线程数
log.cleaner.threads=8
############################# Zookeeper #############################
#Zookeeper 连接参数
zookeeper.connect=192.168.1.6:2181,192.168.1.7:2181,192.168.1.8:2181
#连接 Zookeeper 的超时时间
zookeeper.connection.timeout.ms=6000
############################# Group Coordinator Settings #############################
#为了缩短多消费者首次平衡的时间,这段延时期间 10s 内允许更多的消费者加入组
group.initial.rebalance.delay.ms=10000
#心跳超时时间默认 10s,设置成 6s 主要是为了让 Coordinator 能够更快地定位已经挂掉的 Consumer
session.timeout.ms = 6s。
#心跳间隔时间,session.timeout.ms >= 3 * heartbeat.interval.ms。
heartbeat.interval.ms=2s
#最长消费时间 5 分钟
max.poll.interval.ms=300000
注意事项:
broker.id=0 ---三台的值是不一样的
启动kafka(三个节点都执行)
./bin/kafka-server-start.sh -daemon config/server.properties