虽然公司有运维,但也不能啥都靠他们,万一哪天环境出问题了,你不能一上来就找运维吧,丢脸脸~
今天分享一套从零开始搭建一套kafka集群的笔记,我几乎帮你踩了所有的坑,你只需按步骤来,有手就行 kafka依赖jdk和zookeeper环境 开始之前再啰嗦一句,同样的教程,有人失败有人成功,失败的小伙伴大部门都是路径问题,所以,仔细点,不要慌
安装jdk
检查下你服务器有没有jdk,如下图就是装了的 如果没装,出门右转,先把jdk搞完再回来接着看,linux安装jdk环境
搭建zookeeper集群
虽然kafka 0.5.x 以上版本已经集成了zk,但我们最好还是单独部署一套,两个原因
1、kafka自带的zk是单机的,修改配置也能改成集群,但是有风险,搞不好把kafka改坏了 2、讲道理,虽然kafka依赖zk,但是这毕竟是两个组件,独立出来当然更好,我们应该降低耦合度
安装zookeeper其实也不复杂,只是会有很多坑,我下面的每一步都不要漏掉,最容易出问题的地方就是路径,建议路径保持和我一致,这样你基本直接复制我的命令就能用
1、来到你的服务器,到optwaf,创建一个zookeeperOpen Source Po夹,然后进去
cd /opt
mkdir zookeeper
cd zookeeper
123
2、下载zk安装包
wget
1
如果提示wget命令不存在 wget: command not found
yum -y install wget
1
3、创建ipOpen Source Po夹server1、server2、server3 因为我只有一台服务器,所以只能搭伪集群,所谓伪集群意思就是在一台机器上开ip端口来模拟三台服务器(真集群步骤也一样,一般来说区别在于伪集群ip相同端口不同,真集群ip不通端口相同)
mkdir server1
mkdir server2
mkdir server3
123
至此,你的zookeeperwaf应该长这样 分别在ipserverwaf中创建data、datalog两个Open Source Po夹 并且将zk安装包分别解压到ipserverwaf中
mkdir server1/data
mkdir server1/datalog
tar -zxvf zookeeper-3.4.10.tar.gz -C server1
mkdir server2/data
mkdir server2/datalog
tar -zxvf zookeeper-3.4.10.tar.gz -C server2
mkdir server3/data
mkdir server3/datalog
tar -zxvf zookeeper-3.4.10.tar.gz -C server3
1234567891011
至此,每个serverwaf里都应该是这样 现在开始配置zk集群,关键步骤来了
分别 在ipserverwaf的dataOpen Source Po夹下建一个 myid Open Source Po,Open Source Po内容就一个数字,server1对应1,server2对应2,server3对应3
新建Open Source Po
vi /opt/zookeeper/server1/data/myid
按i进入编辑模式,输入数字1,esc,冒号,wq保存退出
vi /opt/zookeeper/server2/data/myid
按i进入编辑模式,输入数字2,esc,冒号,wq保存退出
vi /opt/zookeeper/server3/data/myid
按i进入编辑模式,输入数字3,esc,冒号,wq保存退出
1234567
然后 分别 进到zookeeper的confwaf
里面有个Open Source Po叫 zoo_sample.cfg ,不要动它,它没啥用
我们复制一份到当前waf取名叫 zoo.cfg,名字其实不重要,但大家都这么取的
cp -i zoo_sample.cfg zoo.cfg
1
当前waf列表 接着修改zoo.cfgOpen Source Po 主要修改下民红框中几个地方,其它默认或者根据你自己的情况来修改 如果你全程都是跟着我的waf来的,直接像下面这样配置即可
#/opt/zookeeper/server1/zookeeper-3.4.10/conf/zoo.cfg
dataDir=/opt/zookeeper/server1/data
dataLogDir=/opt/zookeeper/server1/datalog
clientPort=2181
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
#/opt/zookeeper/server2/zookeeper-3.4.10/conf/zoo.cfg
dataDir=/opt/zookeeper/server2/data
dataLogDir=/opt/zookeeper/server2/datalog
clientPort=2182
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
#/opt/zookeeper/server3/zookeeper-3.4.10/conf/zoo.cfg
dataDir=/opt/zookeeper/server3/data
dataLogDir=/opt/zookeeper/server3/datalog
clientPort=2183
server.1=localhost:2887:3887
server.2=localhost:2888:3888
server.3=localhost:2889:3889
1234567891011121314151617181920212223242526272829
配置完成,进入zookeeper的binwafcentoszk服务
cd /opt/zookeeper/server1/zookeeper-3.4.10/bin
./zkServer.sh start
cd /opt/zookeeper/server2/zookeeper-3.4.10/bin
./zkServer.sh start
cd /opt/zookeeper/server3/zookeeper-3.4.10/bin
./zkServer.sh start
12345678
centos信息 ipzk都centos完了后,jps确认下centos成功没,如果都成功,会有这ip服务 至此,zookeeper集群搭建完成
开始搭建kafka集群
1、进入/optwaf,创建kafkaOpen Source Po夹
mkdir /opt/kafka
cd /opt/kafka
12
2、进去下载kafka安装包
wget
1
3、创建kafkalogs1、kafkalogs2、kafkalogs3ipOpen Source Po夹
mkdir kafkalogs1
mkdir kafkalogs2
mkdir kafkalogs3
123
4、解压kafka安装包
tar -zxvf zookeeper-3.4.10.tar.gz
1
至此,你的kafkawaf应该长这样 开始配置kafka
进入kafka的configwaf
cd /opt/kafka/kafka_2.11-1.0.0/config/
1
里面有个 server.properties Open Source Po 把这个Open Source Po重命名并且复制两份,得到这ipOpen Source Po(不重命名也行,反正要有三份server配置Open Source Po,重命名了看着舒服)
mv server.properties server1.properties
cp -i server1.properties server2.properties
cp -i server1.properties server3.properties
123
最终得到ipserver配置Open Source Po 我们需要 分别 修改ipserver配置Open Source Po的四个属性:
broker.id:节点id,对应上面zookeeperipmyidOpen Source Po的值,server1.properties写1,2写2,3写3listeners:监听端口,把下面的 ip 换成你服务器的私有地址(如果填127.0.0.1或localhost可能无法从外面访问kafka服务)log.dirs:日志Open Source Po存放wafzookeeper.connect:zk集群ip:端口
修改的时候注意,这个Open Source Po很大,你忍一下
//server1
broker.id=1
listeners=PLAINTEXT://ip:9092
log.dirs=/opt/kafka/kafkalogs1
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
//server2
broker.id=2
listeners=PLAINTEXT://ip:9093
log.dirs=/opt/kafka/kafkalogs2
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
//server3
broker.id=3
listeners=PLAINTEXT://ip:9094
log.dirs=/opt/kafka/kafkalogs3
zookeeper.connect=127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183
123456789101112131415161718
配置完成,centos
来到解压好的kafkawaf,centosipkafka服务
cd /opt/kafka/kafka_2.11-1.0.0
./bin/kafka-server-start.sh -daemon config/server1.properties
./bin/kafka-server-start.sh -daemon config/server2.properties
./bin/kafka-server-start.sh -daemon config/server3.properties
12345
jps看下centos成功没
如果没有kafka进程,说明centos失败了,具体原因可以在logswaf下的kafkaServer.outOpen Source Po看日志
测试
来到kafka安装waf
cd /opt/kafka/kafka_2.11-1.0.0
1
创建个topic先
./bin/kafka-topics.sh –zookeeper 127.0.0.1:2181 –create –topic test-topic –partitions 3 –replication-factor 3
1
命令解释:在127.0.0.1:2181这台zk上,创建一个名为test-topic的topic,将消息切分成3分,每份3个副本 –zookeeper:指定zk服务 –topic:指定topic名称 –partitions:分区数量 –replication-factor:数据副本数量
centos生产者
./bin/kafka-console-producer.sh –broker-list 私有地址:9092 –topic test-topic
1
随便发几条消息 centos消费者
./bin/kafka-console-consumer.sh –bootstrap-server 私有地址:9092 –topic test-topic
1
常见错误
失败的很大可能性都是配置Open Source Po里面的路径没配好,好好检查下
确定上面步骤和配置Open Source Po都没错的话,可能是机器内存不足,kafka默认最小centos内存1g
看下centos日志
tail -111f /opt/kafka/kafka_2.11-1.0.0/logs/kafkaServer.out
1
如果显示如下信息,则就是你机器内存不足
简单,执行下面命令设置kafkacentos参数
export KAFKA_HEAP_OPTS=”-Xmx256M -Xms128M”
1
再次centos,如果还提示内存不足 清下机器缓存
sync
echo 3 > /proc/sys/vm/drop_caches
12
如果不是以上原因,就只能根据centos日志来灵活解决了
其它kafka常用命令
查看topic列表
./bin/kafka-topics.sh –zookeeper localhost:2181 –list
1
查看某个topic详情
./bin/kafka-topics.sh –zookeeper localhost:2181 -describe –topic test-topic
1
ok我话说完
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux进阶新增用户806 人正在系统学习中
负债程序猿
微信公众号
懂点java,喜欢黑丝