Kafka集群部署
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Kafka集群部署,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5620字,纯文字阅读大概需要9分钟。
内容图文
部署ZooKeeper集群
Kafka依赖ZooKeeper,所以需要先部署ZooKeeper集群。
- 环境准备:
主机名 | IP |
---|---|
test1 | 192.168.30.128 |
test2 | 192.168.30.129 |
test3 | 192.168.30.130 |
- 全部设置hosts:
vim /etc/hosts 192.168.30.128 test1 192.168.30.129 test2 192.168.30.130 test3
- 全部关闭selinux和firewalld:
setenforce 0 && sed -i 's/=enforcing/=disabled/g' /etc/selinux/config systemctl stop firewalld && systemctl disable firewalld
- 全部安装java环境:
tar zxf jdk-8u191-linux-x64.tar.gz && mv jdk1.8.0_191/ /usr/local/jdk vim /etc/profile JAVA_HOME=/usr/local/jdk PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/libexport JAVA_HOME PATH CLASSPATHsource !$ java -versionln -s /usr/local/jdk/bin/java /usr/bin/java
- 全部下载ZooKeeper:
mkdir /software && cd /softwarewget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gztar zxf zookeeper-3.4.14.tar.gzmv zookeeper-3.4.14 /usr/local/zookeeper
- 全部创建数据、日志目录及当前节点ID:
mkdir /usr/local/zookeeper/datamkdir /usr/local/zookeeper/dataLogecho 1 > /usr/local/zookeeper/data/myid #集群每台机器此ID不同即可
建议test2修改/usr/local/zookeeper/data/myid
为2,test3上修改为3
- 全部修改配置:
cp /usr/local/zookeeper/conf/zoo_sample.cfg /usr/local/zookeeper/conf/zoo.cfg vim /usr/local/zookeeper/conf/zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/zookeeper/data dataLogDir=/usr/local/zookeeper/dataLog clientPort=2181 maxClientCnxns=1024#集群节点信息,可以是ip或主机名server.1=test1:2888:3888 server.2=test2:2888:3888 server.3=test3:2888:3888
tickTime:Zookeeper中最小时间单元的长度
initLimit:默认值为10,表示是tickTime的10倍。Leader服务器等待Follower启动,并完成数据同步的时间
syncLimit:默认值为5,表示是tickTime的5倍。Leader服务器和Follower之间进行心跳检测的最大延时时间
dataDir:Zookeeper服务器存储快照文件的目录
dataLogDir:ZooKeeper日志目录
clientPort:Zookeeper对外的服务端口,集群中无须保持一致
maxClientCnxns:默认是60,从Socket层面限制单个客户端与单台服务器之间的并发连接数
- 全部时间同步:
yum install -y ntpdateecho "*/5 * * * * /usr/sbin/ntpdate time.windows.com &>/dev/null" >> /var/spool/cron/root
- 全部启动ZooKeeper:
/usr/local/zookeeper/bin/zkServer.sh startnetstat -lntp |grep java #检查端口,拥有2888端口为leader
为了后续启动方便,可以做个软链接
ln -s /usr/local/zookeeper/bin/zkServer.sh /usr/local/bin/zookeeper
- 测试连接ZooKeeper:
/usr/local/zookeeper/bin/zkCli.sh -server test1:2181[zk: test1:2181(CONNECTED) 0] ls /[zookeeper] #当前只有zookeeper一个节点[zk: test1:2181(CONNECTED) 1] getAcl /zookeeper'world,'anyone: cdrwa
连接没有问题
ZooKeeper常见用法
首先进入到ZooKeeper命令行模式下,可以进行如下操作:
- 查询节点
ls /
- 创建节点
create /test_node 'test node' #说明:节点名称必须以/开头,test_node为节点名称,'test node'为具体数据#创建临时节点create -e /test_node2 'ephemeral node'#创建顺序节点,它会自动加上一堆数字create -s /s_node 'sequential node'#创建临时顺序节点create -e -s /e_s_node 'ephemeral and sequential node'
- 查看节点状态
stat /test_node
- 查看节点数据内容
get /test_node
- 设置节点数据
set /test_node 'update node data' 10#说明:最后面的数字是版本号
- 删除节点
delete /test_node#注意:如果 /test_node 下有子节点,则删除会报错。可使用递归删除命令rmr /test_node
- 设置节点ACL
setAcl /test_node ip:192.168.30.129:cdrwa#cd权限用于控制子节点,rwa权限用于控制节点本身#c为创建,d为删除;r为读,w为写,a为admin
- 获取节点ACL
getAcl /test_node
更多命令参考这里:https://blog.csdn.net/xyang81/article/details/53053642
部署Kafka集群
- 全部下载Kafka:
cd /softwarewget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.1.1/kafka_2.11-2.1.1.tgztar zxf kafka_2.11-2.1.1.tgzmv kafka_2.11-2.1.1 /usr/local/kafka
- 全部修改配置:
mkdir /usr/local/kafka/logs vim /usr/local/kafka/config/server.properties broker.id=1 #ID唯一,建议与zookeeper的myid对应port=9092 host.name=192.168.30.128 #本机ipnum.network.threads=3 #borker进行网络处理的线程数num.io.threads=8 #borker进行I/O处理的线程数log.dirs=/usr/local/kafka/logs #消息存放目录,不是日志目录num.partitions=1 #每个topic的默认分区数log.retention.hours=168 #消息过期时间,默认为1周default.replication.factor=2 #kafka保存消息的副本数log.cleaner.enable=false #是否启用log压缩,一般不用启用,启用的话可以提高性能zookeeper.connect=test1:2181,test2:2181,test3:2181 #zookeeper主机名(ip)及端口
- 全部启动Kafka:
/usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.propertiesnetstat -lntp |grep 9092
- 测试:
将test1作为生产者,test3作为消费者
#test1上执行#创建一个topic lzx:一个分区,两个副本/usr/local/kafka/bin/kafka-topics.sh --create --zookeeper test1:2181 --replication-factor 2 --partitions 1 --topic lzx #注意:factor大小不能超过broker的个数Created topic "lzx".#创建一个生产者(消息发布者)/usr/local/kafka/bin/kafka-console-producer.sh --broker-list test1:9092 --topic lzx
#test3上执行#创建一个消费者(消息订阅者)/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server test1:9092 --topic lzx --from-beginning # --from-beginning表示从开始接收,否则只接收新产生的消息
可以看到,消息生产和消费没有问题,Kafka集群部署完成。
Kafka常用命令
- 查看topic
/usr/local/kafka/bin/kafka-topics.sh --list --zookeeper localhost:2181
- 查看topic test详情
/usr/local/kafka/bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
- 删除topic test(需设置参数delete.topic.enable=true)
/usr/local/kafka/bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test
- 生产者参数查看
/usr/local/kafka/bin/kafka-console-producer.sh
- 消费者参数查看
/usr/local/kafka/bin/kafka-console-consumer.sh
内容总结
以上是互联网集市为您收集整理的Kafka集群部署全部内容,希望文章能够帮你解决Kafka集群部署所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。