kafka_2.11-1.1.1版本集群搭建手册

kafka_2.11-1.1.1版本集群搭建手册

1 文档说明

  • 本文档仅适用于kafka_2.11-1.1.1版本和zookeeper-3.4.9版本的服务集群,不适用其他版本的安装。

  • 本文档搭建的Kafka集群结构为3个zookeeper + 2个controller + n个broker。

  • 百度云下载地址

  • 所涉及zookeeper软件包均在链接: https://pan.baidu.com/s/1930nqCqKNadHRECT6VYvFg?pwd=2zv5 提取码: 2zv5 下,部署前请确认具体版本及环境。

  • 所涉及jdk软件包均在链接: https://pan.baidu.com/s/1OEcP9Tq8ekYBJsZjVSIiUQ?pwd=dbwx 提取码: dbwx 下,部署前请确认具体版本及环境。

  • 所涉及kafka软件包均在链接: 链接: https://pan.baidu.com/s/1X9CsCqLoA-w2tjo2z-jZ-Q?pwd=eebi 提取码: eebi 下,部署前请确认具体版本及环境。

  • 搭建手册中所需安装包md5值如下:

    | 软件 | 软件版本 | MD5值 |
    | :-------: | :------------------: | :------------------------------: |
    | zookeeper | zookeeper-3.4.9.tgz | 85e8a2b285a5aa10865e81272b5e276b |
    | kafka | kafka_2.11-1.1.1.tgz | 2733dea0d32ac8b256bc5bc75b3c8baa |
    | java | jdk1.8.0_161.tgz | 99051574a0d90871ed24a91a5d321ed2 |

2 通用OS参数配置

2.1 os参数适用范围

以下os参数经基础平台测试,确认适用于RedHat 6.3与CentOS 7.3。

2.2 放宽最大进程数及最大文件句柄数限制

修改/etc/security/limits.d/90-nproc.conf

echo '*       -    nproc     500000' > /etc/security/limits.d/90-nproc.conf
echo '*       -    nofile    500000' >> /etc/security/limits.d/90-nproc.conf

2.3 增加map条目数

修改/etc/sysctl.conf

grep 'vm.max_map_count' /etc/sysctl.conf | grep -v '#'
if [ $? -ne 0 ];then
    echo 'vm.max_map_count = 262144' >> /etc/sysctl.conf 
fi

sysctl -p

2.4 修改内存参数

修改系统保留内存与swappiness阈值,修改/etc/sysctl.conf

grep 'vm.swappiness' /etc/sysctl.conf | grep -v '#'
if [ $? -ne 0 ];then
	echo 'vm.swappiness = 0' >> /etc/sysctl.conf
fi
 
grep 'vm.min_free_kbytes' /etc/sysctl.conf | grep -v '#'
if [ $? -ne 0 ];then
	echo 'vm.min_free_kbytes = 5120000' >> /etc/sysctl.conf 
fi

sysctl -p

2.5 网卡配置

物理机独占参数(虚拟机则忽略)

cat /proc/net/bonding/bond0|grep "Bonding Mode"

确认网卡配置是否为:

Bonding Mode: load balancing (round-robin)

2.6 安装基础软件

yum -y -q install gcc python perl php make smartmontools iotop net-snmp ifstat expect nc nmon psmisc dstat ftp unzip rsync

3 安装zookeeper

3.1 OS环境检查

kafka集群的ZK默认3台机器。如果架构搭建5台,则此文档中后续涉及到的部分扩展至5台即可。如果是物理机,则要求磁盘全做raid1。

3.2 文件系统规划

/home需大于50G(各环境);单独挂载/zkdata和/zkdatalog,空间大小根据业务需求调整,生产要求不小于100G。

df -h|grep -E 'home|zkdata|zkdatalog'

/dev/mapper/datavg-zkdatalv 99G 206M 94G 1% /zkdata
/dev/mapper/datavg-zkdataloglv 99G 282M 94G 1% /zkdatalog
/dev/mapper/datavg-homelv 99G 206M 94G 1% /home

3.3 创建zookeeper用户

groupadd zookeeper -g 800 && useradd -g zookeeper -u 800 zookeeper

3.4 规划zookeeper所需目录

mkdir -p /zkdata/data
mkdir -p /zkdatalog/datalog
chown -R zookeeper:zookeeper /zkdata/data
chown -R zookeeper:zookeeper /zkdatalog/datalog

su - zookeeper -c 'cd && mkdir software'

3.5 准备安装包

提前准备安装包zookeeper-3.4.9.tgz和jdk1.8.0_161.tgz,统一存放在每台机器的zookeeper用户/home/zookeeper/software目录下。

3.6 开始安装软件

cd /home/zookeeper/software
tar -zxf jdk1.8.0_161.tgz
tar -zxf zookeeper-3.4.9.tgz
ln -s jdk1.8.0_161 java
ln -s zookeeper-3.4.9 zookeeper
rm jdk1.8.0_161.tgz zookeeper-3.4.9.tgz
chown -R zookeeper:zookeeper /home/zookeeper

3.7 设置环境变量

在zookeeper用户下的/home/zookeeper/.bashrc文件中,添加ZK环境变量,最终文件内容如下。

cd /home/zookeeper
echo 'export JAVA_HOME=/home/zookeeper/software/java' >> .bashrc
echo 'export ZOOKEEPER_HOME=/home/zookeeper/software/zookeeper' >> .bashrc
echo 'export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/tools:$PATH' >> .bashrc

3.8 zookeeper修改配置

检查zoo.cfg配置文件(如果内容一致就继续操作)

cd /home/zookeeper/software/zookeeper/conf;cat zoo.cfg|grep -v "#"|sed '/^$/d'

tickTime=2000
initLimit=20
syncLimit=10
maxSessionTimeout=60000
dataDir=/zkdata/data
dataLogDir=/zkdatalog/datalog
clientPort=2181
autopurge.snapRetainCount=6
autopurge.purgeInterval=1
server.1=:2888:3888
server.2=:2888:3888
server.3=:2888:3888

修改zoo.cfg配置文件,此处只改 “” 的内容,修改方式如下:

**<host>**为zookeeper各个节点的域名,默认是3台zookeeper。如与zookeeper节点有增加,按照文件格式新增即可。

修改后(修改内容)样例展示:

server.1=zk01.cola.com:2888:3888
server.2=zk02.cola.com:2888:3888
server.3=zk03.cola.com:2888:3888

3.9 给每个zk节点打入标示ID

最后根据zoo.cfg配置文件中的server.1/server.2/server.3在dataDir目录下,在zookeeper用户下给myid文件打入标示ID。

sever.1

ssh zk01.cola.com

su - zookeeper 'echo 1 > /zkdata/data/myid'
cat /zkdata/data/myid
1

sever.2

ssh zk02.cola.com

su - zookeeper 'echo 2 > /zkdata/data/myid'
cat /zkdata/data/myid
2

sever.3

ssh zk03.cola.com

su - zookeeper 'echo 3 > /zkdata/data/myid'
cat /zkdata/data/myid
3

4 安装kafka

4.1 OS环境检查

Kafka默认使用物理机搭建,要求机器系统盘使用raid1,数据盘使用raid10。

4.2 文件系统规划

/home需大于50G(各环境),单独挂载/kafkalog,空间大小根据业务需求,生产默认16T。

df -h|grep -E 'home|kafkalog'

/dev/mapper/datavg-homelv 99G 206M 94G 1% /home

/dev/mapper/datavg-kafkaloglv 16T 557G 15T 4% /kafkalog

4.3 创建kafka用户

groupadd kafka -g 850 && useradd -g kafka -850 kafka

4.4 规划kafka所需目录

mkdir -p /kafkalog/logs
chown -R kafka:kafka /kafkalog/logs

su - kafka -c 'cd && mkdir {logs,software}'

4.5 准备安装包

提前准备安装包kafka_2.11-1.1.1.tgz和jdk1.8.0_161.tgz,统一存放在每台机器的kafka用户/home/kafka/software目录下。

4.6 开始安装软件

cd /home/kafka/software
tar -zxf jdk1.8.0_161.tgz
tar -xf kafka_2.11-1.1.1.tgz
ln -s jdk1.8.0_161 java
ln -s kafka_2.11-1.1.1 kafka
rm jdk1.8.0_161.tgz kafka_2.11-1.1.1.tgz
chown -R kafka:kafka /home/kafka

4.7 设置环境变量

修改/home/kafka/.bashrc文件,添加环境变量。

cd /home/kafka
echo 'export JAVA_HOME=/home/kafka/software/java' >> .bashrc
echo 'export KAFKA_HOME=/home/kafka/software/kafka' >> .bashrc
echo 'export PATH=$JAVA_HOME/bin:$KAFKA_HOME/bin:$PATH' >> .bashrc

4.8 kafka配置修改

kafka集群搭建,整个集群划分为2个controller节点,和n个broker节点。接下来就按照角色controller和broker修改/home/kafka/software/kafka/config/server.properties文件。

注:只有下文标注有注释的配置项才需要修改。其他配置项原则上使用默认值。

查看本机CPU核数命令:

grep 'physical id' /proc/cpuinfo |wc -l

4.8.1 角色controller配置修改方法

broker.id=999											修改为998,或999。此为controller固定ID。
listeners=PLAINTEXT://your.host.name:9092				使用本机IP,9092端口可指定。
advertised.listeners=PLAINTEXT://your.host.name:9092	使用本机IP,9092端口可指定。
num.network.threads=3									修改为本机cpu核数。
num.io.threads=8										修改为本机cpu核数的2倍。
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/kafkalog/logs/kafka-logs
num.partitions=2
num.recovery.threads.per.data.dir=2						修改为本机cpu核数的一半。
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2
log.retention.hours=12
log.segment.bytes=268435456
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181						修改为Zookeeper域名,2181端口可指定。
zookeeper.connection.timeout.ms=18000
zookeeper.session.timeout.ms=18000
group.initial.rebalance.delay.ms=3000
auto.create.topics.enable=false
message.max.bytes=10485760
replica.fetch.max.bytes=10485760
num.replica.fetchers=2
max.connections.per.ip=3000
offsets.retention.minutes=10080
controller.elect.enable=true							controller角色这里改为true。
unclean.leader.election.enable=true
inter.broker.protocol.version=1.1						1.1.1.x版本这里修改为1.1
log.message.format.version=0.8.2
smart.delay.fetch.enable=true
smart.IO.Busy.Threshold=0.9
smart.lag.Threshold=100000
smart.disk.name=vda
smart.delay.interval=100

4.8.2 角色broker配置修改方法

broker.id=0												修改为业务指定ID,一般从0开始,依次增加。
listeners=PLAINTEXT://your.host.name:9092				使用本机IP,9092端口可指定。
advertised.listeners=PLAINTEXT://your.host.name:9092	使用本机IP,9092端口可指定。
num.network.threads=3									修改为本机cpu核数。
num.io.threads=8										修改为本机cpu核数的2倍。
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/kafkalog/logs/kafka-logs
num.partitions=2
num.recovery.threads.per.data.dir=2						修改为本机cpu核数的一半。
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2
log.retention.hours=12
log.segment.bytes=268435456
log.retention.check.interval.ms=300000
zookeeper.connect=localhost:2181						修改为Zookeeper域名,2181端口可指定。
zookeeper.connection.timeout.ms=18000
zookeeper.session.timeout.ms=18000
group.initial.rebalance.delay.ms=3000
auto.create.topics.enable=false
message.max.bytes=10485760
replica.fetch.max.bytes=10485760
num.replica.fetchers=2
max.connections.per.ip=3000
offsets.retention.minutes=10080
controller.elect.enable=false							broker角色这里为false,默认不需修改。
unclean.leader.election.enable=true
inter.broker.protocol.version=1.1						1.1.1.x版本这里修改为1.1
log.message.format.version=0.8.2
smart.delay.fetch.enable=true
smart.IO.Busy.Threshold=0.9
smart.lag.Threshold=100000
smart.disk.name=vda
smart.delay.interval=100

5. kafka集群启动

5.1 启动zookeeper

(1)登录zookeeper节点,登入zookeeper用户,启动zk服务。

su - zookeeper 
zkServer.sh start

(2)三台zookeeper节点启动完毕以后,确认zk服务状态,确保有且仅有一台结果为leader。

zkServer.sh status

ZooKeeper JMX enabled by default
Using config: /home/zookeeper/software/zookeeper/bin/…/conf/zoo.cfg
Mode: leader

5.2 启动Kafka

(1)登录controller节点,登入kafka用户,启动controller节点kafka服务。

su - kafka
start-kafka.sh

检查server.log文件,查看是否出现以下关键信息。

cd /home/kafka/logs;cat server.log|grep started

INFO [Kafka Server ], started (kafka.server.KafkaServer)

(2)登录broker节点,登入kafka用户,启动broker节点kafka服务。

su - kafka
start-kafka.sh

检查server.log文件,查看是否出现以下关键信息。

cd /home/kafka/logs;cat server.log|grep started

INFO [Kafka Server ], started (kafka.server.KafkaServer)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值