下载地址
zookeeper : http://zookeeper.apache.org/releases.html
Kafka :http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/0.11.0.2/kafka_2.11-0.11.0.2.tgz
Java :http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
环境:
主机A: 10.100.0.100
主机B:10.100.0.101
主机C:10.100.0.102
一、zookeeper 集群搭建
三台主机均执行以下操作:
tar zxvf zookeeper-3.4.10.tar.gz -C /data/server
cd /data/server/zookeeper-3.4.10/conf
cp zoo_sample.cfg zoo.cfg
mkdir /data/server/zookeeper-3.4.10/data # 创建data目录
vim zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/server/zookeeper-3.4.10/data # data存放目录
clientPort=2181 # 监听端口
maxClientCnxns=0 # 不限制
server.1=10.100.0.100:2888:3888 # 枚举端口
server.2=10.100.0.101:2888:3888
server.3=10.100.0.102:2888:3888
# 2888 leader端口,只一个监听。3888 选举端口,每个主机都监听
每个主机 数据目录生成server id,和上面的 server.* 的对应
# 以主机C:10.100.0.102 ,server.3为例
echo 3 > /data/server/zookeeper-3.4.10/data/myid
启动zookpeeper,这里使用web用户启动,root用户也一样
chown -R web.web /data/server/
su - web -c "/data/server/zookeeper-3.4.10/bin/zkServer.sh start"
二、kafka集群部署
系统配置
1、安装java环境
tar zxvf jdk-8u102-linux-x64.tar.gz -C /data/server
ln -s /data/server/jdk1.8.0_102/bin/java* /usr/bin/
或在/etc/profile、kafka启动命令文件中添加
export JAVA_HOME=/data/server/jdk1.8.0_102
2、操作系统fd进行调整为100K,禁用swapping (根据系统资源设置)
sudo swapoff -a
vim /etc/sysctl.conf # 系统最大打开文件描述符数
fs.file-max = 1000000
vim /etc/security/limits.conf # 增加下面的行
* hard nofile 1000000
* soft nofile 1000000
root hard nofile 1000000
root soft nofile 1000000
echo 2000000 > /proc/sys/fs/nr_open # 要注意的就是hard limit不能大于/proc/sys/fs/nr_open,因此有时你也需要修改nr_open的值。
kafka 集群安装
tar zxvf kafka_2.11-0.11.0.2.tgz -C /data/server
mkdir -p /data/server/kafka_2.11-0.11.0.2/storage
cd /data/server/kafka_2.11-0.11.0.2/config
vim server.properties 修改以下几个选项(以主机C:10.100.0.102为例)
broker.id=102 # 1000内非负整数,用于唯一标识broker
num.io.threads=20 # 调整kafka默认线程池大小
num.partitions=2 # kafka副本数
log.retention.hours=72 # 日志保留时间
# 默认配置文件#listeners=PLAINTEXT://:9092,这样无法连接,需改为IP:port
listeners=PLAINTEXT://10.100.0.102:6678
log.dirs=/data/server/kafka_2.11-0.11.0.2/storage # 日志存放位置
# zk集群地址
zookeeper.connect=10.100.0.100:2181,10.100.0.101:2181,10.100.0.102:2181
port=6677
host.name=10.100.20.102
default.replication.factor = 3 # 每个分区使用3个副本 最大限度保证不丢
min.insync.replicas = 2 # 最少保证写两个节点都收到才能算写入成功,最大限度保证不丢
num.replica.fetcher = 10 # 适当放大 提高节点间同步速度
java 服务监听ipv4端口,JVM需要分配10GB的堆内存
监听ipv6地址端口,线上有时候会有连接问题
vim .bin/kafka-server-start.sh
export _JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"
export KAFKA_HEAP_OPTS="-Xmx10G -Xms10G"
启动kafka:
./bin/kafka-server-start.sh -daemon ./config/server.properties